全部博文(287)
分类: 系统运维
2008-09-12 10:55:17
利用DLYJOB命令进行RPG ILE程序连调
在大型项目开发中,由于项目都是划分为多个模块进行相对独立开发。在项目后期进行模块间的连调阶段中,程序之间的测试参数传递,是连调过程中的一个非常重要环节。比如,比较好的项目设计实现中可以采用
callp(项目参数DS:模块参数DS:程序参数DS)模式
因此,模块程序间的连调,人工在命令行键入传递参数,就成为一项不现实的工作。
这里介绍利用delay命令进行RPG ILE程序连调技巧。
我们先回顾对RPG程序debug的步骤:
1) strdbg;
2) 切换到命令行,对debug的RPG进行调用:
Call RPGPGM(参数串)
在模块程序连调的时候,只有在上级调用程序驻留内存的时候,strdbg和call rpgpgm才会起到调试的作用。否则,就会失效。
在利用400系统命令DLYJOB(秒)进行连调时,把上级调用程序调用关系由指向rpgpgm,改为调用一个CL程序。
CL程序(CLPGM)组成:
DLYJOB(60) //60秒的延长时间
call rpgpgm(参数串)
在60秒的延长时间内,通过wrkactjob命令,查看CLPGM是否被驻留内存,如果被驻留内存,说明这个CL程序已经被调用。正处在dlyjob状态中。这时,把光标移动到这个绿屏记录下(wrkactjob屏中),按F11功能键两次,会出现jobname、username、jobnumber三个信息。记录下这三个数据。立即用STRSRVJOB命令,填入上面说的这三个数据,进行启动。接着,在命令行键入strdbg,进入debug环境,设置debug断点。一旦CL程序结束dlyjob命令后,调用rpgpgm,就可以对RPG程序进行带参数的调试。
设置延长时间,可以根据实际情况,进行设置合适的秒数。
这种400下连调方式的原理:
Hold jobq,
STRSRVJOB,
STRDBG program down the stack
release jobq
DLYJOB的作用是Hold jobq。DLYJOB时间结束就是释放jobq,进入rpgpgm的调用。
这种方式同样适用于submitjob,出现'MSGW'的debug。