免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6180 | 回复: 1
打印 上一主题 下一主题

请教-服务程序Service Program如何创建 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-12-16 20:47 |只看该作者 |倒序浏览
我编写了Service Program如下:
Service Program Name:CBJSRVPGM.RPGLE---------------源码建于CBJSRC库,SRCTEST下,编译在CBJRUNSRC下
     H NOMAIN
     d/copy srcdfn,cbjsrvpgmi
     DVDS_M1           DS
     d/copy srcdfn,cmodule01i
     DVDS_M2           DS
     d/copy srcdfn,cmodule02i
      *
     P CBJSRV01Y       B                   EXPORT
     D CBJSRV01Y       PI
     D VDS_TM1                             LIKE(VDS_M1)
      *
      *
     C                   CALLB     'CMODULE01'
     C                   PARM                    VDS_TM1
     C                   RETURN
     P CBJSRV01Y       E
      *
     P CBJSRV02Y       B                   EXPORT
     D CBJSRV02Y       PI
     D VDS_TM2                             LIKE(VDS_M2)
      *
     C                   CALLB     'CMODULE02'
     C                   PARM                    VDS_TM2
     C                   RETURN
     P CBJSRV02Y       E


CMODULE01和CMODULE02已经变异为MODULE----源码建于CBJSRC库,SRCTEST下,MODULE编译在CBJRUNSRC下


.BND文件(CBJSRVPGM.BND)-------源码在CBJSRC库,SRCTEST2下
             STRPGMEXP  SIGNATURE('CBJSRVPGM')
             EXPORT     SYMBOL(CBJSRV01Y)
             EXPORT     SYMBOL(CBJSRV02Y)
             ENDPGMEXP


请各位指教,以上是否有问题。
我先将CBJSRVPGM.RPGLE变异为MODULE,然后再使用CRTSRVPGM命令创建服务程序,
请问该命令中各项如何填写


论坛徽章:
0
2 [报告]
发表于 2013-12-17 11:16 |只看该作者
本帖最后由 passthru 于 2013-12-19 10:09 编辑

首先,你的代码中有多处错误:
1)        如果把程序CBJSRVPGM.RPGLE作为服务程序,且你的代码是采用.BND定义模式,就应该在服务程序CBJSRVPGM中module定义,EXPORT  SYMBOL(CBJSRVPGM),即自定义module;
2)        服务程序CBJSRVPGM代码中漏写了return操作码(因为你是采用nomain参数);
3)        看你的代码结构,因为module CBJSRV01Y、CBJSRV02Y都是与服务程序代码放在同一个module CBJSRVPGM代码中,无需在.BND文件再定义EXPORT  SYMBOL(CBJSRV01Y)和EXPORT  SYMBOL(CBJSRV02Y);

做好这些调整后,就可以生成服务程序CBJSRVPGM了:
Service program …CBJSRVPGM
  Library …………… CBJSRC
Module ………………CBJSRVPGM
  Library …………… CBJSRC

Export ……………….*SRCFILE
Export source file .. SRCTEST2
  Library …………… CBJSRC

注意:命令执行后要查看joblog,日志。

改进的地方:
把服务程序外部调用程序CMODULE01和CMODULE02也生成module后,也用BND文件定义:
             EXPORT     SYMBOL(CMODULE01)
             EXPORT     SYMBOL(CMODULE02)

这样做的好处:一旦module CMODULE01,或module CMODULE02,变化重新生成,只做updsvrpgm服务程序CBJSRVPGM,相应的module CMODULE01,或module CMODULE02更新,而无需对*pgm CMODULE01或*pgm CMODULE02重新生成。    不过,*pgm CMODULE01 活CMODULE02,初次生成的时候,需要crtpgm方式生成,而不是用14,即crtbndrpg,生成,把用15生成的*module保留在一个lib下。

Good Luck,

Passthru
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP