2013-08-28 1 views

ответ

8

Как только шаг задания, создающий файл группы данных генерации (+1), завершен, самый последний файл 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  

Это, как правило, не очень хорошая практика, так как перезапуск после того, как abend становится трудным. Вы должны изменить все GDG (+1) на (+0) или (0).

Лучшая практика - создать обычный файл для использования на протяжении всей работы. Затем, на последнем этапе работы, вы копируете обычный файл в GDG (+1).

+0

+1 для «Лучшая практика ...» –

+1

Все поколения GDG вычисляются, когда задание начинается с -1, -2 0 все относятся к одному набору данных через задание. –

0

Иногда на больших наборах данных вы не хотите повторять свои операции ввода-вывода, но вы все равно хотите перезапустить работу. Пакетные планировщики (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» и т. Д.

Смежные вопросы