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:

  1. The PREINIT= parameter coded in the EXEC statement invokes the restart process.
  2. 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.)
  3. 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).
  4. 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.