Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1291850
  • 博文数量: 287
  • 博客积分: 11000
  • 博客等级: 上将
  • 技术积分: 3833
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-16 08:43
文章分类
文章存档

2013年(15)

2012年(17)

2011年(17)

2010年(135)

2009年(85)

2008年(18)

分类: 系统运维

2009-07-19 00:15:03

用binddir创建srvpgm与不用binddir创建srvpgm的两种方法和差别
 
用binddir创建的srvpgm:
1)用binddir创建的svrpgm,顾名思义,需要一个binddir;
2)需要一个bind文件,.bnd;
3)通过这个binddir把bind文件定义的服务应用程序记在这个服务程序下。
4)服务应用程序可以是标准程序的编程格式,即无需定义接口原型,只用*entry定义。
5)服务程序与挂在其之下的服务应用程序必须是独立的module形式;
6)通过crtsrvpgm命令的参数项binddir,把各个服务应用程序module/s静态的bind在一起。
7)服务应用程序在bind文件中,即登记在binddir下这个服务程序的服务应用程序是有次序的,重新生成服务程序,若改变服务应用程序的在bind文件中的次序,如改变服务应用程序的命名后调整在bind文件中的位置,会造成调用这个服务应用程序的错误。如果一定要改变bind文件中服务应用程序的位置,方法一、保留原来次序位置,在bind文件的末尾增加新改名的这个服务应用程序;方法二、通过bind文件中的STRPGMEXP PGMLVL(*CURRENT)和STRPGMEXP PGMLVL(*PRV)定义节,调整重新命名的服务程序的位置。
8)在应用程序的生成过程中,通过binddir,找到相应的服务应用程序,然后静态地与这个服务应用程序bind在一起。
9)程序的备份和恢复过程,会丢失bind静态链。
10)用binddir生成的svrpgm可以通过wrkbnddir命令,交互式地往某个binddir下的svrpgm程序添加或删除service module。
 
不用binddir创建的srvpgm:
1)没有binddir;
2)没有bind文件,但是必须在服务程序中,通过PR节定义所有的服务应用程序;
3)服务应用程序在服务程序中的定义,没有次序问题,可以随意改变服务应用程序的位置;
4)服务应用程序的procedure可以与服务程序连体,或分开的;如果是分开,在crtsrvpgm时,把这个程序所包扩的所有modules bind在一起,生成服务程序。
5)服务程序在H表中,必须定义NoMain;
6)服务程序中可以只有D表,即定义节;
7)如果服务应用程序时独立的procedure用于生成moudle,procedure的H表,也必须定义NoMain;
8)因为RPGVI v6r1版本前,不允许NoMain的procedure定义文件,即使用F表,所以在非binddir的服务程序下,不允许服务应用程序使用标准编程格式,即使用*entry节代替原型接口。只能使用定义原型接口的PI的procedure,或由其生成的moudle。
9)在应用程序的生成过程中,编译器查找库列表中所有服务程序,第一个服务应用程序就与应用程序静态地bind在一起;所以多个同名的服务程序,或者服务应用程序要注意版本控制。
10)与上述的用binddir创建的服务程序一样,程序的备份和恢复,可能会丢失bind静态链。
11)没有用binddir生成的srvpgm,不能用wrkbnddir命令交互式地往某个binddir添加或删除service module。
 
(初稿,如有新内容,继续更新。)
阅读(1916) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~