我有JCL,它正在执行一个目录程序。 在目录中,正在执行一个COBOL-DB2 pgm。
以下是我的JCL
//A JOB (@),'CALL DB2',NOTIFY=&SYSUID
//JS010 EXEC TESTPROC
以下是我的TESTPROC
//TESTPROC
//PS010 EXEC PGM=IKJEFT01,,DYNAMNBR=20
//STEPLIB DD DSN=TEST.LOADLIB,DISP=SHR
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD DSN=TEST.PDS(TESTPGM),
// DISP=SHR
//SYSOUT DD SYSOUT=*
是我的SYSTIN数据--TESTPGM
DSN SYSTEM(TEST)
RUN PROGRAM(TESTPGM) PLAN(TESTPLAN)
END
我的查询是否可以在SYSTIN数据成员TESTPGM中使用符号参数代替TESTPGM和TESTPLAN?
此致 Saisha:)
答案 0 :(得分:4)
如下所述,您可以将PDS成员名称变为符号值,然后将PDS中的每个成员定义为指向其他程序。以JCL为例:
//TESTPROC PROC MYPGM=
//PS010 EXEC PGM=IKJEFT01,,DYNAMNBR=20
//STEPLIB DD DSN=TEST.LOADLIB,DISP=SHR
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD DSN=TEST.PDS(&MYPGM),
// DISP=SHR
//SYSOUT DD SYSOUT=*
在上面的示例中,您的EXEC语句会将proc作为:
//JS010 EXEC TESTPROC,MYPGM=TESTPGM
另一种选择,您可以直接覆盖SYSTSIN DD,如下所示:
//A JOB (@),'CALL DB2',NOTIFY=&SYSUID
//JS010 EXEC TESTPROC
//PS010.SYSTSIN DD *
DSN SYSTEM(TEST)
RUN PROGRAM(TESTPGM) PLAN(TESTPLAN)
END
/*
//
另一个建议...... 在最终实现中,您可能需要考虑分离
DSN SYSTEM(TEST)
来自
RUN PROGRAM(TESTPGM) PLAN(TESTPLAN)
END
原因是您可能会发现要在多个DB2环境中运行该程序,而不仅仅是SYSTEM(TEST)。为此,只需添加另一个参数DB2SYS =并修改如下:
//TESTPROC PROC DB2SYS=MYTEST,MYPGM=
...
//SYSTSIN DD DSN=TEST.PDS(&DB2SYS),DISP=SHR
// DD DSN=TEST.PDS(&MYPGM),DISP=SHR
其中PDS成员MYTEST已经编码了DSN SYSTEM(TEST)语句。
答案 1 :(得分:2)
简短的回答是否定的。如果SYSTSIN DD语句引用的PDS中的控制卡中有符号参数,则它们(符号参数)将无法解析。
解决这个问题的一种方法是在PS010步骤之前的程序中单独执行一个单独的程序,该程序接收参数和文本并写入临时文件。符号参数将在该程序的PARM =。
中解析//PS001 EXEC PGM=LOADPARM,PARM='DSN SYSTEM(&DSNSYS)'
//SYSPRINT DD SYSOUT=*
//OUTPUT01 DD DISP=(,PASS),
// DSN=&&DSNSYS,
// AVGREC=U,
// LRECL=80,
// RECFM=FB,
// SPACE=(80,1)
//****
假设程序LOADPARM将简单地取其输入parm并将其写入OUTPUT01,小心用空白填充右侧。在PS010中,您将拥有一个看起来像......的SYSTSIN。
//SYSTSIN DD DISP=(OLD,DELETE),DSN=&&DSNSYS
// DD DISP=SHR,DSN=TEST.PDS(TESTPGM)
...... TESTPGM成员的样子......
RUN PROGRAM(TESTPGM) PLAN(TESTPLAN)
END
通过这种方式,您的编目过程不知道它正在访问哪个DB2子系统。该信息在执行JCL中提供DSNSYS符号参数。
还有其他方法可以解决此问题,例如,您可以使用符号参数解析为共享PDS中的已知成员,每个DB2子系统都有一个成员。
答案 2 :(得分:0)
不,我们不能使用SYSTSIN中的符号参数。而不是将SYSTSIN卡分成两部分并推广DB2子系统,我更喜欢使用该成员名称的符号参数维护单独的测试数据,并在需要时切换它。
但是,DB2子系统的自动化可能不会始终产生所需的值。无论如何都做了很好的努力。