如果在作业的第一步中创建了(+1)生成数据集,那么如何在同一作业的后续步骤中引用它以进行输入?
答案 0 :(得分:8)
创建(+1)生成数据组(GDG)文件的作业步骤完成后,最新的GDG文件为(+1)。
当前GDG在工作结束或异常结束之前不会变为零。
以下是我们其中一个批处理作业的示例。
//STEP05 EXEC PGM=OUTBOUND,REGION=4M,TIME=60
//STEPLIB DD DSN=M5.M593CLLV.LOAD,DISP=SHR
//SYSTCPD DD DSN=M5.M51TCDLV.IBM.TCPPARMS(TCPDATA),DISP=SHR
//INDD1 DD DSN=J3.J3DVLP.W.J1PPB70.RDEXFILE(+1),DISP=OLD
//OBNSTAT DD DSN=J3.J3PZOUTB.DVLP.OBNSTAT,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN DD DUMMY
这通常不是一个好习惯,因为在异常终止之后重新开始变得困难。您必须将所有GDG(+1)更改为(+0)或(0)。
更好的做法是创建一个普通文件,以便在整个作业中使用。然后,在上一个作业步骤中,将普通文件复制到GDG(+1)中。
答案 1 :(得分:0)
有时在大型数据集上,您不想重复I / O,但仍希望能够重新启动作业。批处理调度程序(CA7?)可以为您跟踪。
但是,如果管理自己的作业流,那么(自从我编写JCL以来已经有一段时间了),所以这是一个非常一般的例子:
// PROC RSTART="+1"
//* other job steps
//STEP05 EXEC PGM=OUTBOUND,REGION=4M,TIME=60
//STEPLIB DD DSN=M5.M593CLLV.LOAD,DISP=SHR
//SYSTCPD DD DSN=M5.M51TCDLV.IBM.TCPPARMS(TCPDATA),DISP=SHR
//INDD1 DD DISP=OLD,DSN=J3.J3DVLP.W.J1PPB70.RDEXFILE(&RSTART) <<<RSTART
//OBNSTAT DD DSN=J3.J3PZOUTB.DVLP.OBNSTAT,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN DD DUMMY
重新提交此作业时,请设置RSTART =“0”等