Automatic IMS ABEND U0777 retry
The implementation of IMS ABEND U0777 retry requires a simple JCL change to applications using QUICKSTART’s IMS Checkpoint Replacement Mode. The application simply needs to run under QUICKSTART’s task manager, QSATTACH, instead of the IMS routine DFSRRC00. QSATTACH should then be executed with a PARM of “IMSXRST” and the PARM= parameter which had been passed to DFSRRC00 included as part of the QSCTRL1 DD control cards. For example, the JCL for a QUICKSTART-ready IMS application that reads:
//STEP01 EXEC PGM=DFSRRC00,REGION=4M,
// PARM='DLI,QSXRST,PSBNAME'
//STEPLIB DD DSN=IMST.RESLIB,DISP=SHR
// DD DSN=QSTART.IMSLOAD,DISP=SHR
// DD DSN=QSTART.LOADLIB,DISP=SHR
// DD DSN=APPL.LOADLIB,DISP=SHR
//DFSRESLB DD DSN=IMST.RESLIB,DISP=SHR
//IMS DD DSN=IMST.PSBLIB,DISP=SHR
// DD DSN=IMST.DBDLIB,DISP=SHR
//IMSERR DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//IEFRDER DD DSN=HLQ.IMSLOG,DISP=(NEW,CATLG,CATLG),
// UNIT=DISK,SPACE=(CYL,(10,10)),DCB=IMST.OLP01
//DFSVSAMP DD DSN=IMSVS.PROCLIB(DFSVSM01),DISP=SHR
//IMSLOGR DD DUMMY,DSN=HLQ.IMSLOG,DISP=SHR
//OUTDD01 DD DSN=HLQ.OUTDD01,DISP=(MOD,CATLG,CATLG),
// SPACE=(TRK,(1,1)),UNIT=DISK,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//OUTDD02 DD DSN=HLQ.OUTDD02,DISP=(MOD,CATLG,CATLG),
// SPACE=(TRK,(1,1)),UNIT=DISK,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//INDD01 DD DSN=HLQ.INDD01,DISP=SHR
//QSTART DD DSN=HLQ.ANY.DATASET,DISP=SHR
//QSCTRL1 DD *
MAINPROG=PGMNAME
CKPTRTN=CKPTIMS
GSAMOUT=OUTDD01
GSAMIN=INDD01
GSAMOUT=OUTDD02
// PARM='DLI,QSXRST,PSBNAME'
//STEPLIB DD DSN=IMST.RESLIB,DISP=SHR
// DD DSN=QSTART.IMSLOAD,DISP=SHR
// DD DSN=QSTART.LOADLIB,DISP=SHR
// DD DSN=APPL.LOADLIB,DISP=SHR
//DFSRESLB DD DSN=IMST.RESLIB,DISP=SHR
//IMS DD DSN=IMST.PSBLIB,DISP=SHR
// DD DSN=IMST.DBDLIB,DISP=SHR
//IMSERR DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//IEFRDER DD DSN=HLQ.IMSLOG,DISP=(NEW,CATLG,CATLG),
// UNIT=DISK,SPACE=(CYL,(10,10)),DCB=IMST.OLP01
//DFSVSAMP DD DSN=IMSVS.PROCLIB(DFSVSM01),DISP=SHR
//IMSLOGR DD DUMMY,DSN=HLQ.IMSLOG,DISP=SHR
//OUTDD01 DD DSN=HLQ.OUTDD01,DISP=(MOD,CATLG,CATLG),
// SPACE=(TRK,(1,1)),UNIT=DISK,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//OUTDD02 DD DSN=HLQ.OUTDD02,DISP=(MOD,CATLG,CATLG),
// SPACE=(TRK,(1,1)),UNIT=DISK,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//INDD01 DD DSN=HLQ.INDD01,DISP=SHR
//QSTART DD DSN=HLQ.ANY.DATASET,DISP=SHR
//QSCTRL1 DD *
MAINPROG=PGMNAME
CKPTRTN=CKPTIMS
GSAMOUT=OUTDD01
GSAMIN=INDD01
GSAMOUT=OUTDD02
Should be changed to:
//STEP01 EXEC PGM=QSATTACH,REGION=4M, Changed
// PARM='IMSXRST’ Changed
//STEPLIB DD DSN=IMST.RESLIB,DISP=SHR
// DD DSN=QSTART.IMSLOAD,DISP=SHR
// DD DSN=QSTART.LOADLIB,DISP=SHR
// DD DSN=APPL.LOADLIB,DISP=SHR
//DFSRESLB DD DSN=IMST.RESLIB,DISP=SHR
//IMS DD DSN=IMST.PSBLIB,DISP=SHR
// DD DSN=IMST.DBDLIB,DISP=SHR
//IMSERR DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//IEFRDER DD DSN=HLQ.IMSLOG,DISP=(NEW,CATLG,CATLG),
// UNIT=DISK,SPACE=(CYL,(10,10)),DCB=IMST.OLP01
//DFSVSAMP DD DSN=IMSVS.PROCLIB(DFSVSM01),DISP=SHR
//IMSLOGR DD DUMMY,DSN=HLQ.IMSLOG,DISP=SHR
//OUTDD01 DD DSN=HLQ.OUTDD01,DISP=(MOD,CATLG,CATLG),
// SPACE=(TRK,(1,1)),UNIT=DISK,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//OUTDD02 DD DSN=HLQ.OUTDD02,DISP=(MOD,CATLG,CATLG),
// SPACE=(TRK,(1,1)),UNIT=DISK,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//INDD01 DD DSN=HLQ.INDD01,DISP=SHR
//QSTART DD DSN=HLQ.ANY.DATASET,DISP=SHR
//QSCTRL1 DD *
PARM='DLI,QSXRST,PSBNAME' Changed
MAINPROG=PGMNAME
CKPTRTN=CKPTIMS
GSAMOUT=OUTDD01
GSAMIN=INDD01
GSAMOUT=OUTDD02
// PARM='IMSXRST’ Changed
//STEPLIB DD DSN=IMST.RESLIB,DISP=SHR
// DD DSN=QSTART.IMSLOAD,DISP=SHR
// DD DSN=QSTART.LOADLIB,DISP=SHR
// DD DSN=APPL.LOADLIB,DISP=SHR
//DFSRESLB DD DSN=IMST.RESLIB,DISP=SHR
//IMS DD DSN=IMST.PSBLIB,DISP=SHR
// DD DSN=IMST.DBDLIB,DISP=SHR
//IMSERR DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//IEFRDER DD DSN=HLQ.IMSLOG,DISP=(NEW,CATLG,CATLG),
// UNIT=DISK,SPACE=(CYL,(10,10)),DCB=IMST.OLP01
//DFSVSAMP DD DSN=IMSVS.PROCLIB(DFSVSM01),DISP=SHR
//IMSLOGR DD DUMMY,DSN=HLQ.IMSLOG,DISP=SHR
//OUTDD01 DD DSN=HLQ.OUTDD01,DISP=(MOD,CATLG,CATLG),
// SPACE=(TRK,(1,1)),UNIT=DISK,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//OUTDD02 DD DSN=HLQ.OUTDD02,DISP=(MOD,CATLG,CATLG),
// SPACE=(TRK,(1,1)),UNIT=DISK,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//INDD01 DD DSN=HLQ.INDD01,DISP=SHR
//QSTART DD DSN=HLQ.ANY.DATASET,DISP=SHR
//QSCTRL1 DD *
PARM='DLI,QSXRST,PSBNAME' Changed
MAINPROG=PGMNAME
CKPTRTN=CKPTIMS
GSAMOUT=OUTDD01
GSAMIN=INDD01
GSAMOUT=OUTDD02
Related topic
Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*