Using the PREINIT parameter for DFSDDLT0 input restart
You use the DFSDDLT0 restart function to restart a DFSDDLT0 input stream within the same dependent region.
The PREINIT parameter in the EXEC statement invokes the
restart function. Code the PREINIT parameter of DFSMPR as PREINIT=xx
,
where xx
is the two-character suffix of the DFSINTxx
PROCLIB member. (PREINIT=DL refers to the default PROCLIB member.)
The PREINIT process establishes a checkpoint field for each active IMS region. This field is updated with the sequence number of each GU call to an I/O PCB as it is processed. For this reason, sequence numbers are required for all such GU calls that are used. On a restart, if the checkpoint field contains a sequence number, the DFSDDLT0 stream starts at the next GU call to an I/O PCB following the sequence number in the checkpoint field; otherwise the DFSDDLT0 stream starts from the beginning.
The DFSDDLSI module and the default IMS.PROCLIB member, DFSINTDL, are shipped with IMS and are installed as part of normal IMS installation.
The following code shows examples of SYSIN/SYSIN2 and PREINIT.
//TSTPGM JOB CARD
//DDLTTST EXEC DFSMPR,PREINIT=DL
//MPP.SYSIN DD *
|---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----<
S11 1 1 1 1 TP 1 01000000
OPTIONS SNAP= ,ABORT=9999 01000010
U********************************************************************** 01000040
S11 1 1 1 1 TP 1 01000050
L GU 01000060
E OK 01000070
S11 1 1 1 1 DBPCBXXX 01000080
L GU 01000090
E DATA A INIT-LOAD UOW 01000100
E 01 ROOTSEG1 0008A 0004D 01000110
S11 1 1 1 1 TP 1 01000120
L ISRT 01000130
L Z0080 DATA -SYNC INTERVAL 1 SEG 1 -MESSAGE 1 X01000140
L P DATA 11111111111111111111111111111111111111111111111 01000150
L ISRT 01000160
L Z0080 DATA -SYNC INTERVAL 1 SEG 2 -END EOM 1 X01000170
L P DATA 11111111111111111111111111111111111111111111111 01000180
U********************************************************************** 01000190
U* ENDING FIRST SYNC INTERVAL 01000200
U********************************************************************** 01000210
L GU 01000220
E QC 01000230
L GU 01000240
E OK 01000250
S11 1 1 1 1 DBPCBXXX 01000260
WTO GETTING DATA BASE SEGMENT 1 FROM DBPCBXXX 01000270
L U GHU 01000280
E DATA INIT-LOAD UOW. 1 A.P. 1 01000290
E OK 01000300
L U0003 GN 01000310
E OK 01000320
S11 1 1 1 1 TP 1 01000330
L ISRT 01000340
L Z0080 DATA -SYNC INTERVAL 2 SEG 1 -MESSAGE 1 X01000350
L P DATA 22222222222222222222222222222222222222222222211 01000360
L ISRT 01000370
L Z0080 DATA -SYNC INTERVAL 2 SEG 2 -END EOM 1 X01000380
L P DATA 22222222222222222222222222222222222222222222211 01000390
U********************************************************************** 01000400
U* ENDING SECOND SYNC INTERVAL 01000410
U********************************************************************** 01000420
L GU 01000430
E QC 01000440
L GU 01000450
E OK 01000460
S11 1 1 1 1 DBPCBXXX 01000470
S11 1 1 1 1 TP 1 01000480
L ISRT 01000490
L Z0080 DATA -SYNC INTERVAL 3 SEG 1 -MESSAGE 1 X01000500
L P DATA 33333333333333333333333333333333333333333333311 01000510
L ISRT 01000520
L Z0080 DATA -SYNC INTERVAL 3 SEG 2 -END EOM 1 X01000530
L P DATA 33333333333333333333333333333333333333333333311 01000580
U********************************************************************** 01000590
U* ENDING THIRD SYNC INTERVAL 01000600
U********************************************************************** 01000610
L GU 01000620
E QC 01000630
//MPP.SYSIN2 DD *
|---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----<
ABEND 01000430
/*
Notes for the SYSIN/SYSIN2 and PREINIT examples:
- The PREINIT= parameter coded in the EXEC statement invokes the restart process.
- When DFSDDLT0 starts processing, it substitutes the SYSIN2 ABEND statement for the statement in SYSIN with the same sequence number. (It is the GU call with sequence number 01000430.)
- DFSDDLT0 begins with statement 01000000 and processes until it encounters the ABEND statement (statement number 01000430). The GU calls to the I/O PCB have already been tracked in the checkpoint field (statements 01000060, 01000220, and 01000240).
- When DFSDDLT0 is rescheduled, it examines the checkpoint field
and finds 01000240. DFSDDLT0 begins processing at the next GU call
to the I/O PCB, statement 01000450.
If the statement currently numbered 01000240 did not have a sequence number, DFSDDLT0 would restart from statement 01000000 when it was rescheduled.