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.
//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
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).
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
- 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).
//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
- 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.