生成数据组(GDG)

时间:2013-08-28 14:01:54

标签: mainframe jcl

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

2 个答案:

答案 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”等