Running JCL for RECOVERDM
Submit the RECOVERDM JCL to recover messages that were lost from the queues because an IMS cold start was necessary following system maintenance.
The RECOVERDM procedure recovers messages lost from the queues because an IMS cold start was necessary following system maintenance.
The following figure shows the system operation flow for the RECOVERDM procedure:
Example: RECOVERDM procedure JCL
The following example JCL runs RECOVERDM when programs DFSUARC0 and IQCFCKPT have been used to automatically find the checkpoint.
//IQCRCDM JOB (ACCOUNTINFO),NORMAL JOBCARD INFO
//*********************************************************************
//* *
//* SAMPLE EXECUTION JCL - RECOVERDM *
//* *
//*********************************************************************
//* *
//* DELETE OF VSAM DATA SET *
//* *
//*********************************************************************
//DLTDS EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=A
//SYSIN DD *
DELETE (QCF.MSGQ)
//*********************************************************************
//* *
//* DEFINE FOR VSAM DATA SET TO STORE MESSAGE QUEUES *
//* *
//*********************************************************************
//DFNDS EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=A
//* DEFINE FOR VSAM DATA SET SHOULD BE MODIFIED TO MEET YOUR
//* SYSTEM REQUIREMENTS. RECSZ PARAMETER, THE AVERAGE RECORD SIZE,
//* CAN BE SET TO THE LRECL OF THE IMS SHORT MESSAGE
//* QUEUE AND THE MAX VALUE MUST BE EQUAL TO OR GREATER THAN
//* IMS LONG MESSAGE QUEUE.
//* NOTE:
//* IT IS RECOMMENDED THAT THE MAXIMUM RECORDSIZE BE SET
//* TO THE MAXIMUM ALLOWED BY VSAM, IE, 32761.
//* IT IS RECOMMENDED THAT THE CONTROLINTERVALSIZE BE SET
//* TO THE MAXIMUM ALLOWED BY VSAM, IE, 32768.
//SYSIN DD *
DEFINE CLUSTER (NAME(QCF.MSGQ) -
STORAGECLASS(PSTANDRD) -
MANAGEMENTCLASS(PNOBACK) -
IXD KEYS(4 0) -
RECSZ(500 32761) -
SPEED IMBED REPLICATE -
REUSE SHAREOPTIONS(3 3)) -
DATA (NAME(QCF.MSGQ.DATA) -
CONTROLINTERVALSIZE(32768) -
CYL(100,20)) -
INDEX (NAME(QCF.MSGQ.INDEX) -
CONTROLINTERVALSIZE(512) -
TRACKS(1,1))
//*********************************************************************
//* *
//* SELECT STEP *
//* *
//*********************************************************************
//SELECT EXEC PGM=IQCSELCT,REGION=0M
//STEPLIB DD DISP=SHR,DSN=hlqual.SIQCLINK
//QCFIN DD *
CHKPT 92359070707
FUNCTION RECOVERDM
//*
//* THIS IS A SAMPLE OF MULTIPLE LOG TAPES WHERE EACH LOG HAS A
//* DIFFERENT DATA SET NAME, THUS REQUIRING SEPARATE DD STATEMENTS.
//*
//LOGIN DD DISP=OLD,UNIT=TAPE,LABEL=(1,SL),DSN=LOG1,
// VOL=SER=IMSLG1
// DD DISP=OLD,UNIT=TAPE,LABEL=(1,SL),DSN=LOG2,
// VOL=SER=IMSLG2
//*
//MSGQ DD DSN=QCF.MSGQ,
// AMP=('BUFND=20,BUFNI=10'),
// DISP=(OLD,KEEP,KEEP)
//*
//* THE LRECL OF THE LOGOUT DATA SET MUST BE AT LEAST 256
//* BYTES LONGER THAN THE LRECL OF THE LOGIN DATA SET
//* TO ACCOMMODATE THE DFSMRQPF PREFIX.
//* HOWEVER, IT IS RECOMMENDED THAT THE MAXIMUM SIZES, LRECL=32756
//* AND BLKSIZE=32760, BE USED.
//*
//LOGOUT DD DSN=&&LOGOUT,UNIT=SYSDA,SPACE=(CYL,(5,5)),
// DCB=(LRECL=32756,BLKSIZE=32760,RECFM=VB),
// DISP=(NEW,PASS)
//SORTINB DD DSN=&&SORTINB,UNIT=SYSDA,SPACE=(TRK,(1,1)),
// DCB=(LRECL=80,RECFM=FB,BLKSIZE=800),DISP=(NEW,PASS)
//QCFPRINT DD SYSOUT=A
//SNAPDUMP DD SYSOUT=A
//*********************************************************************
//* *
//* SORTB JOB STEP *
//* *
//*********************************************************************
//SORTB EXEC PGM=SORT,REGION=0K,PARM='CORE=MAX',
// COND=((0,NE,SELECT))
//SORTLIB DD DISP=SHR,DSN=SYS1.SORTLIB
//SORTIN DD DISP=(OLD,DELETE),DSN=*.SELECT.LOGOUT
//SORTOUT DD DSN=&&SORTOUT,UNIT=SYSDA,SPACE=(CYL,(5,5)),
// DCB=(LRECL=32756,BLKSIZE=32760,RECFM=VB),
// DISP=(NEW,PASS)
//SYSOUT DD SYSOUT=A
//SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(20,10),,CONTIG)
//SORTWK02 DD UNIT=SYSDA,SPACE=(CYL,(20,10),,CONTIG)
//SORTWK03 DD UNIT=SYSDA,SPACE=(CYL,(20,10),,CONTIG)
//SORTWK04 DD UNIT=SYSDA,SPACE=(CYL,(20,10))
//SYSIN DD DSN=&&SORTINB,DISP=(OLD,PASS)
//*
//*********************************************************************
//* *
//* LOAD JOB STEP *
//* *
//*********************************************************************
//LOAD EXEC PGM=IQCINI0$,
// PARM='BPEINIT=IQCBINI0,BPECFG=IQCIVPCF,IMSPLEX=IPLEX,QCFIMS=IMS1'
//STEPLIB DD DISP=SHR,DSN=hlqual.SIQCLINK
// DD DISP=SHR,DSN=IMSREL.RESLIB
//*
//QCFPRINT DD SYSOUT=A
//*
//LOAD DD DISP=SHR,DSN=&&SORTOUT
//*
//* SCRAPLOG IS AN OPTIONAL DD STATEMENT. IT WILL CONTAIN THE
//* REJECTED MESSAGES FROM THE LOAD STEP.
//* DCB PARAMETERS SHOULD BE THE SAME AS THOSE FOR THE LOAD
//* DATA SET.
//* HOWEVER, IT IS RECOMMENDED THAT THE MAXIMUM SIZES FOR LRECL
//* AND BLKSIZE ARE USED.
//*
//SCRAPLOG DD DSN=QCF.SCRAPLOG,UNIT=SYSDA,DISP=(NEW,CATLG),
// DCB=(LRECL=32756,BLKSIZE=32760,RECFM=VB),
// SPACE=(CYL,(5,5))
//*
//SNAPDUMP DD SYSOUT=A
//*
//QCFIN DD DSN=USER.PRIVATE.PROCLIB(load),UNIT=SYSDA