1

如果在作业的第一步创建(+1)生成数据集,如何在同一作业的后续步骤中引用它进行输入?

4

2 回答 2

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)。

于 2013-08-28T16:29:00.863 回答
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" 等。

于 2013-09-04T02:13:25.770 回答