GDG resolution

GDG resolution is the possibility to re-execute a job using exactly the same GDG data set used in the previous run. This is needed in a step restart mainly to avoid JCL errors, but also to use the same GDG data set as if the job had been executed in one run only.

GDG resolution will be performed in different ways depending on whether you are using normal or expanded JCL.

With a normal JCL, GDG resolution is performed by overwriting the GDG names with their expanded form (GDGRoot.GnnnnVnn) in the JES control block, just before the job run.

With expanded JCL, GDG resolution is performed by overwriting the GDG names with their expanded form (GDGRoot.GnnnnVnn) in the expanded JCL as it is produced. For more details, see JCL used for restart.

For example, assume that you run the following JCL:
//GDG00001 JOB (9805,SS),'D-JOB',MSGLEVEL=(1,1)
//STEP0 EXEC PGM=IEFBR14
//STEP1 EXEC PGM=IEFBR14 
//DD01	DD DSN=MYGDG.ROOT(+1),UNIT=3390,  
//	DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),SPACE=(TRK,(1,1)),   
//	VOL=SER=HWA01,DISP=(NEW,CATLG,DELETE)  
//STEP2 EXEC PGM=IEFBR15  
//DD21	DD DSN=MYGDG.ROOT(+1),DISP=SHR 
The resulting JOBLOG will be the following:
               J E S 2  J O B  L O G  --  S Y S T E M  E S 3 3  --  N O D E 
                                                                                
JOB00107 ---- MONDAY,    09 JUN 2009 ----                              
JOB00107  IRR010I  USERID OPCSTC   IS ASSIGNED TO THIS JOB.            
JOB00107  ICH70001I OPCSTC   LAST ACCESS AT 11:25:40 ON MONDAY, JUNE 9,
JOB00107  $HASP373 GDG00001 STARTED - INIT 1    - CLASS A - SYS ES33   
JOB00107  IEF403I GDG00001 - STARTED - TIME=11.52.19                   
JOB00107  -                                         --TIMINGS (MINS.)--
JOB00107  -JOBNAME STEPNAME PROCSTEP   RC   EXCP  CPU  SRB  CLOCK  SERV  PG  PAGE  SWAP  VIO SWAPS STEPNO
JOB00107  -GDG0001          STEP0      00   8      00   00   00    279   1   0     0     0   0     1
JOB00107  -GDG0001          STEP1      00   8      00   00   00    287   1   0     0     0   0     2
JOB00107  CSV003I REQUESTED MODULE IEFBR15  NOT FOUND                  
JOB00107  CSV028I ABEND806-04  JOBNAME=GDG00001  STEPNAME=STEP2        
JOB00107  IEA995I SYMPTOM DUMP OUTPUT                                  
                   SYSTEM COMPLETION CODE=806  REASON CODE=00000004             
                    TIME=11.52.19  SEQ=00394  CPU=0000  ASID=0016               
                    PSW AT TIME OF ERROR  070C1000   811C020A  ILC 2  INTC 0D   
                      NO ACTIVE MODULE FOUND                                    
                      NAME=UNKNOWN                                              
                      DATA AT PSW  011C0204 - 9FB0181C  0A0D18FB  180C181D      
                      GPR  0-3  00001C00  84806000  00FCF568  00000010          
                      GPR  4-7  000000FF  006E7DE8  00000004  0000000C          
                      GPR  8-11 006D5450  811BF750  011C074F  00000000          
                      GPR 12-15 84806000  006D5450  811C018C  00000004          
                    END OF SYMPTOM DUMP                                         
JOB00107  IEF450I GDG00001 STEP2 - ABEND=S806 U0000 REASON=00000004    
                           TIME=11.52.19 
JOB00107  -GDG0001           STEP2   *S806  13      .00  .00   .00  1126   1    0     0     0   0   3 
JOB00107  -GDG00001          STEP2   *S806  13      .00  .00   .00
JOB00107  IEF404I GDG00001 - ENDED - TIME=11.52.19                     
JOB00107  -GDG00001 ENDED.  NAME-D-JOB                TOTAL CPU TIME=  
JOB00107  $HASP395 GDG00001 ENDED                                      
------ JES2 JOB STATISTICS ------                                               
  09 JUN 2009 JOB EXECUTION DATE                                                
           10 CARDS READ                                                        
           82 SYSOUT PRINT RECORDS                                              
            0 SYSOUT PUNCH RECORDS                                              
            5 SYSOUT SPOOL KBYTES                                               
         0.00 MINUTES EXECUTION TIME                                            

        1 //GDG00001 JOB (9805,SS),'D-JOB',MSGLEVEL=(1,1)          
        2 //TIVDST00 OUTPUT JESDS=ALL,DEST=HWAFDEST           inserted by scheduler
        3 //TIVDSTAL OUTPUT JESDS=ALL                         inserted by scheduler
        4 //STEP0 EXEC PGM=IEFBR14                                              
        5 //STEP1 EXEC PGM=IEFBR14                                              
        6 //DD01  DD   DSN=MYGDG.ROOT(+1),UNIT=3390,                       
          //      DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),SPACE=(TRK,(1,1)),        
          //      VOL=SER=HWA01,DISP=(NEW,CATLG,DELETE)                         
        7 //STEP2 EXEC PGM=IEFBR15                                              
        8 //DD21  DD   DSN=MYGDG.ROOT(+1),DISP=SHR             
            
ICH70001I OPCSTC   LAST ACCESS AT 11:25:40 ON MONDAY, JUNE 9, 2009              
IEF142I GDG00001 STEP0 - STEP WAS EXECUTED - COND CODE 0000      
IEF373I STEP/STEP0   /START 2009160.1152                                        
IEF374I STEP/STEP0   /STOP  2009160.1152 CPU    0MIN 00.00SEC SRB    0MIN 00.00S
IEF236I ALLOC. FOR GDG00001 STEP1                                               
IGD100I 0118 ALLOCATED TO DDNAME DD01     DATACLAS (        )                   
IEF142I GDG00001 STEP1 - STEP WAS EXECUTED - COND CODE 0000                     
IEF285I   MYGDG.ROOT.G0126V00                     CATALOGED                
IEF285I   VOL SER NOS= HWA01 .                                                  
IEF373I STEP/STEP1   /START 2009160.1152                                        
IEF374I STEP/STEP1   /STOP  2009160.1152 CPU    0MIN 00.00SEC SRB    0MIN 00.00S
IEF236I ALLOC. FOR GDG00001 STEP2                                               
IEF237I 0118 ALLOCATED TO DD21                                                  
CSV003I REQUESTED MODULE IEFBR15  NOT FOUND                                     
CSV028I ABEND806-04  JOBNAME=GDG00001  STEPNAME=STEP2                           
IEA995I SYMPTOM DUMP OUTPUT                                                     
SYSTEM COMPLETION CODE=806  REASON CODE=00000004                                
 TIME=11.52.19  SEQ=00394  CPU=0000  ASID=0016                                  
 PSW AT TIME OF ERROR  070C1000   811C020A  ILC 2  INTC 0D                      
   NO ACTIVE MODULE FOUND                                                       
   NAME=UNKNOWN                                                                 
   DATA AT PSW  011C0204 - 9FB0181C  0A0D18FB  180C181D                         
   GPR  0-3  00001C00  84806000  00FCF568  00000010                             
   GPR  4-7  000000FF  006E7DE8  00000004  0000000C                             
   GPR  8-11 006D5450  811BF750  011C074F  00000000                             
   GPR 12-15 84806000  006D5450  811C018C  00000004                             
 END OF SYMPTOM DUMP                                                            
IEF472I GDG00001 STEP2 - COMPLETION CODE - SYSTEM=806 USER=0000 REASON=0004 
IEF285I   MYGDG.ROOT.G0126V00                     KEPT                     
IEF285I   VOL SER NOS= HWA01 .                                                  
IEF373I STEP/STEP2   /START 2009160.1152                                        
IEF374I STEP/STEP2   /STOP  2009160.1152 CPU    0MIN 00.00SEC SRB    0MIN 00.00S
IEF375I  JOB/GDG00001/START 2009160.1152                                        
IEF376I  JOB/GDG00001/STOP  2009160.1152 CPU    0MIN 00.00SEC SRB    0MIN 00.00S

From this JOBLOG you can see that STEP0 has been executed, STEP1 has been executed and allocated GDG data set MYGDG.ROOT.G0126V00, while STEP2 abended and used the just allocated GDG data set MYGDG.ROOT.G0126V00 as input.

Now, you decide to fix the error causing the abend and restart from STEP2, re-using the previously allocated GDG MYGDG.ROOT.G0126V00. To obtain this, you can use normal JCL (set Expanded JCL to NO).

When you execute the step restart, the job completes successfully and the JOBLOG is the following:
         J E S 2  J O B  L O G  --  S Y S T E M  E S 3 3  --  N O D E 
                                                                      
JOB00110 ---- MONDAY,    09 JUN 2009 ----                              
JOB00110  IRR010I  USERID OPCSTC   IS ASSIGNED TO THIS JOB.            
JOB00110  ICH70001I OPCSTC   LAST ACCESS AT 12:14:32 ON MONDAY, JUNE 9,
$HASP373 GDG00001 STARTED - INIT 1    - CLASS A - SYS ES33   
JOB00110  IEF403I GDG00001 - STARTED - TIME=12.15.08                   
JOB00110 EQQCN00I START CLEANUP AND/OR RET-CODE SIMULATION PROCESS(ES).    
JOB00110 EQQCN18I SNUM STEPNAME PROCNAME    RC                              
JOB00110 EQQCN02I 002           STEP0      0000                              
JOB00110 EQQCN02I 003           STEP1      0000                              
JOB00110 EQQCN22I START GDG NAME SIMULATION PROCESS                        
JOB00110 EQQCN26I SNUM DSNAME                                         RELNUM 
JOB00110 EQQCN25I 004      MYGDG.ROOT.G0126V00                          +001   
JOB00110 EQQCN23I GDG NAME SIMULATION PROCESS ENDED                        
JOB00110 EQQCN99I CLEANUP AND/OR RET-CODE SIMULATION PROCESS(ES) ENDED.    
JOB00110 - --TIMINGS (MINS.)--
JOB00110 -JOBNAME  STEPNAME PROCSTEP  RC    EXCP CPU    SRB  CLOCK   SERV  PG PAGE SWAP  VIO SWAPS STEPNO
JOB00110 -GDG0001  EQQCLEAN EQQCLEAN  00    45   .00    .00  .00     2450  1  0    0     0   0     1  
JOB00110 -GDG0001           STEP0     FLUSH 0    .00    .00  .00     0     1  0    0     0   0     2
JOB00110 -GDG0001           STEP1     FLUSH 0    .00    .00  .00     0     1  0    0     0   0     3
JOB00110 -GDG0001           STEP2     00    8    .00    .00  .00     289   1  0    0     0   0     4
JOB00110  IEF404I GDG00001 - ENDED - TIME=12.15.08                     
JOB00110 -GDG00001 ENDED.  NAME-D-JOB                TOTAL CPU TIME=   
JOB00110  $HASP395 GDG00001 ENDED                                      
------ JES2 JOB STATISTICS ------                                               
  09 JUN 2009 JOB EXECUTION DATE                                                
           22 CARDS READ                                                        
          808 SYSOUT PRINT RECORDS                                              
            0 SYSOUT PUNCH RECORDS                                              
           50 SYSOUT SPOOL KBYTES                                               

         0.00 MINUTES EXECUTION TIME                                            
        1 //GDG00001 JOB (9805,SS),'D-JOB',MSGLEVEL=(1,1)          
        2 //TIVDST00 OUTPUT JESDS=ALL,DEST=HWAFDEST                 inserted by scheduler
        3 //TIVDSTAL OUTPUT JESDS=ALL                               inserted by scheduler
        4 //EQQCLEAN EXEC EQQCLEAN,EQQPASS='RMM=N'                              
        5 XXEQQCLEAN PROC                                                       
        6 XXEQQCLEAN EXEC PGM=EQQCLEAN,REGION=0M,TIME=1440,PARM='&EQQPASS'
          IEFC653I SUBSTITUTION JCL - PGM=EQQCLEAN,REGION=0M,TIME=1440,PARM='RMM
        7 //STEPLIB  DD  DISP=SHR,DSN=HWA99.SERVICE.APFLIB1                      
        8 //         DD  DISP=SHR,DSN=HWA99.SERVICE.APFLIB                       
        9 XXEQQCLNDD DD DUMMY                                                   
       10 //EQQSIMDD DD *                                                       
          X/EQQSIMDD DD DUMMY                                                   
       11 //EQQGDGDD DD *                                                       
          X/EQQGDGDD DD DUMMY                                                   
       12 //EQQDUMP  DD SYSOUT=*                                                
          X/EQQDUMP  DD SYSOUT=*                                                
       13 //SYSPRINT DD SYSOUT=*                                                
          X/SYSPRINT DD SYSOUT=*                                                
       14 XXSYSUDUMP DD SYSOUT=*                                                
       15 //SYSOUT   DD SYSOUT=*                                                
          X/SYSOUT   DD SYSOUT=*                                                
       16 //SYSDUMP  DD SYSOUT=*                                                
       17 XX PEND                                                               
       18 //STEP0 EXEC PGM=IEFBR14                                              
       19 //STEP1 EXEC PGM=IEFBR14                                              
       20 //DD01  DD   DSN=MYGDG.ROOT(+1),UNIT=3390,                       
          //      DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),SPACE=(TRK,(1,1)),        
          //      VOL=SER=HWA01,DISP=(NEW,CATLG,DELETE)                         
       21 //STEP2 EXEC PGM=IEFBR14                                              
       22 //DD21  DD   DSN=MYGDG.ROOT(+1),DISP=SHR 
                        
 STMT NO. MESSAGE                                                               
        4 IEFC001I PROCEDURE EQQCLEAN WAS EXPANDED USING SYSTEM LIBRARY USER.PRO
ICH70001I OPCSTC   LAST ACCESS AT 12:14:32 ON MONDAY, JUNE 9, 2009              
IEF236I ALLOC. FOR GDG00001 EQQCLEAN EQQCLEAN                                   
IEF237I 0118 ALLOCATED TO STEPLIB                                               
IEF237I 0121 ALLOCATED TO                                                       
IEF237I DMY  ALLOCATED TO EQQCLNDD                                              
IEF237I JES2 ALLOCATED TO EQQSIMDD                                              
IEF237I JES2 ALLOCATED TO EQQGDGDD                                              
IEF237I JES2 ALLOCATED TO EQQDUMP                                               
IEF237I JES2 ALLOCATED TO SYSPRINT                                              
IEF237I JES2 ALLOCATED TO SYSUDUMP                                              
IEF237I JES2 ALLOCATED TO SYSOUT                                                
IEF237I JES2 ALLOCATED TO SYSDUMP                                               
IEF142I GDG00001 EQQCLEAN EQQCLEAN - STEP WAS EXECUTED - COND CODE 0000         
IEF285I   HWA99.SERVICE.APFLIB1                         KEPT                     
IEF285I   VOL SER NOS= HWA01 .                                                  
IEF285I   HWA99.SERVICE.APFLIB                        KEPT                     
IEF285I   VOL SER NOS= HWA03 .                                                  
IEF285I   OPCSTC.GDG00001.JOB00110.D0000101.?          SYSIN                    
IEF285I   OPCSTC.GDG00001.JOB00110.D0000102.?          SYSIN                    
IEF285I   OPCSTC.GDG00001.JOB00110.D0000103.?          SYSOUT                   
IEF285I   OPCSTC.GDG00001.JOB00110.D0000104.?          SYSOUT                   
IEF285I   OPCSTC.GDG00001.JOB00110.D0000105.?          SYSOUT                   
IEF285I   OPCSTC.GDG00001.JOB00110.D0000106.?          SYSOUT                   
IEF285I   OPCSTC.GDG00001.JOB00110.D0000107.?          SYSOUT                   
IEF373I STEP/EQQCLEAN/START 2009160.1215                                        
IEF374I STEP/EQQCLEAN/STOP  2009160.1215 CPU    0MIN 00.01SEC SRB    0MIN 00.00S
IEF202I GDG00001 STEP0 - STEP WAS NOT RUN BECAUSE OF CONDITION CODES            
IEF272I GDG00001 STEP0 - STEP WAS NOT EXECUTED.                                 
IEF373I STEP/STEP0   /START 2009160.1215                                        
IEF374I STEP/STEP0   /STOP  2009160.1215 CPU    0MIN 00.00SEC SRB    0MIN 00.00S
IEF202I GDG00001 STEP1 - STEP WAS NOT RUN BECAUSE OF CONDITION CODES            
IEF272I GDG00001 STEP1 - STEP WAS NOT EXECUTED.                                 
IEF373I STEP/STEP1   /START 2009160.1215                                        
IEF374I STEP/STEP1   /STOP  2009160.1215 CPU    0MIN 00.00SEC SRB    0MIN 00.00S
IEF236I ALLOC. FOR GDG00001 STEP2                                               
IEF237I 0118 ALLOCATED TO DD21                                                  
IEF142I GDG00001 STEP2 - STEP WAS EXECUTED - COND CODE 0000                     
IEF285I   MYGDG.ROOT.G0126V00                     KEPT                     
IEF285I   VOL SER NOS= HWA01 .                                                  
IEF373I STEP/STEP2   /START 2009160.1215                                        
IEF374I STEP/STEP2   /STOP  2009160.1215 CPU    0MIN 00.00SEC SRB    0MIN 00.00S
IEF375I  JOB/GDG00001/START 2009160.1215                                        
IEF376I  JOB/GDG00001/STOP  2009160.1215 CPU    0MIN 00.01SEC SRB    0MIN 00.00S
From this JOBLOG you can see that:
  • STEP0 and STEP1 were correctly simulated (see EQQCN02I messages).
  • STEP2 was executed correctly using as input MYGDG.ROOT.G0126V00.
  • The submitted JCL was run with the relative numbers unchanged.
  • The GDG MYGDG.ROOT(+1) was correctly overwritten (see message EQQCN25I).
To obtain the same result, you could also have used the following expanded JCL:
//GDG00001 JOB (9805,SS),'D-JOB',MSGLEVEL=(1,1)          
//TIVDST00 OUTPUT JESDS=ALL,DEST=HWAFDEST                             
//TIVDSTAL OUTPUT JESDS=ALL                                           
//STEP0 EXEC PGM=IEFBR14                                              
//STEP1 EXEC PGM=IEFBR14                                              
//DD01  DD DSN=MYGDG.ROOT.ROXGDG.G0126V00,UNIT=3390,                    
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),SPACE=(TRK,(1,1)), 
//             VOL=SER=HWA01,DISP=(NEW,CATLG,DELETE)                  
//STEP2 EXEC PGM=IEFBR14                                              
//DD21  DD DSN=MYGDG.ROOT.ROXGDG.G0126V00,DISP=SHR                      
With the normal JCL, you could also execute a step restart while retaining previously allocated GDG data set, while this is not possible with expanded JCL. For example, If you want to run a step restart from STEP2, while retaining the previously allocated GDG data set MYGDG.ROOT.G0126V00, and allocating a new generation GDG, you can:
  • Select normal JCL.
  • Customize user exit EQQUXGDG to retain GDG root MYGDG.ROOT data sets for GDG00001 JOB.
  • Exclude the scratch of MYGDG.ROOT.G0126V00 from the action list.
  • Set STEP1 as the restart step.

For details about EQQUXGDG, see Customization and Tuning.