SYSPUNCH data set

The SYSPUNCH data set contains the IMS™ DBDGEN or PSBGEN utility control statements if the SYSIN data set contains one or more DECODE DBD, DECODE PSB, DECODE ACB, DECODE ACBPSB, or DECODE ACBDBD control statements.

Re-created utility control statements

The following figures show examples of the IMS DBDGEN and PSBGEN utility control statements created by DBD/PSB/ACB Reversal.

For the control statements not specified in the source, DBD/PSB/ACB Reversal always decodes the default value defined explicitly by IMS DBDGEN or PSBGEN utility.

Note: If you want to eliminate the comment lines, which are the heading of the DATASET, SEGM, or PCB statement, specify DECOPT COMMENT=NO in the first control statement of the SYSIN data set.
Figure 1. IMS DBDGEN utility control statements re-created by DBD/PSB/ACB Reversal
         TITLE   'ASSEMBLE OF DBDNAME=DSCLSDVN '                         
*        DSNAME=IMSVS.DBDLIB                
*        VOL=IMSVS                                                      
*        DBDGEN DATE 11/22/2018 TIME 19.49                               
*        DECODE DATE 12/01/2018 TIME 10.18.54                               
*        IMS VERSION 13.1
       DBD     NAME=DSCLSDVN,ACCESS=(HDAM,VSAM),                       C 
               RMNAME=(DFSHDC40,1,2,6),PASSWD=YES,                     C 
               VERSION=             DATE 11/22/2018 TIME 19.49             
***********************************************************************  
*        DATASET GROUP NUMBER 1                                       *  
***********************************************************************  
DSG001 DATASET DD1=DSCLSDV0,SIZE=(2048),SCAN=3                           
***********************************************************************  
*        SEGMENT NUMBER 1                                             *  
***********************************************************************  
       SEGM    NAME=SSCLSP00,PARENT=0,BYTES=(100,5),RULES=(LVV,LAST),  C 
               PTR=(TWIN,,,,)                                            
       FIELD   NAME=(ECLASSR,SEQ,U),START=3,BYTES=3,TYPE=C               
       FIELD   NAME=(ECLSP0LE),START=1,BYTES=2,TYPE=C                    
       LCHILD  NAME=(SSCRSP23,DSCRSDVN),PTR=SNGL,PAIR=SSCLSV11,        C 
               RULES=HERE                                                
***********************************************************************  
*        SEGMENT NUMBER 2                                             *  
***********************************************************************  
       SEGM    NAME=SSCLSV11,PARENT=((SSCLSP00,)),PTR=PAIRED,          C 
               SOURCE=((SSCRSP23,DATA,DSCRSDVN))                         
       FIELD   NAME=(ECLASSNR,SEQ,U),START=21,BYTES=6,TYPE=C             
       DBDGEN                                                            
       FINISH                                                           
       END   
Figure 2. IMS PSBGEN utility control statements re-created by DBD/PSB/ACB Reversal
         TITLE   'ASSEMBLE OF PSBNAME=PSBSMUAL '                       
*        DSNAME=IMSVS.PSBLIB              
*        VOL=IMSVS                                                    
*        PSBGEN DATE 11/22/2018 TIME 19.50                            
*        DECODE DATE 12/01/2018 TIME 10.23.54                            
*        IMS VERSION 13.1
***********************************************************************
*        PCB NUMBER 1      DB   NUMBER 1                              *
***********************************************************************
       PCB     TYPE=DB,DBDNAME=DSCLSDVN,PROCOPT=A,KEYLEN=29             
       SENSEG  NAME=SSCLSP00,PARENT=0                                   
       SENSEG  NAME=SSCLSV11,PARENT=SSCLSP00      
*********************************************************************** 
*        PCB NUMBER 1      DB   NUMBER 2                              * 
*********************************************************************** 
       PCB     TYPE=DB,DBDNAME=DSSCHHVN,PROCOPT=A,KEYLEN=40             
       SENSEG  NAME=SSSCHP00,PARENT=0                                   
       SENSEG  NAME=SSSCHP11,PARENT=SSSCHP00                            
       SENSEG  NAME=SSSCHP12,PARENT=SSSCHP00                            
       SENSEG  NAME=SSSCHP13,PARENT=SSSCHP00                            
       PSBGEN  PSBNAME=PSBSMUAL,LANG=ASSEM,CMPAT=NO       
       END 

Restrictions on the generated control statements

When the IMS DBDGEN utility processes the control statements issued by the DBD/PSB/ACB Reversal utility, the following restrictions apply:
  • The order of the FIELD, LCHILD, and XDFLD statements that follow the SEGM statement is not the same as the user-required order in the DBD control statements. DBD/PSB/ACB Reversal generates all of the FIELD statements that belong to the segment following the SEGM statements, and then produces, if they exist, the LCHILD statements with paired XDFLD statements. This does not affect the database being accessed.
  • If the VERSION parameter on the DBD statement has a time stamp value, DBD/PSB/ACB Reversal decodes the time stamp value as an Assembler comment statement.
When the IMS PSBGEN utility processes the control statements issued by the DBD/PSB/ACB Reversal, the following restrictions apply:
  • The PCB label and the PCBNAME parameter in the PCB statement are mutually exclusive. Whether a PCB label or a PCBNAME parameter is used to decode a PCB name depends on the version of IMS that generated the PSB:
    • For PSBs that were generated by IMS Version 3 or higher, if the PCB_LABEL=YES option (uses the PCB label) is not specified, DBD/PSB/ACB Reversal uses the PCBNAME parameter to decode the PCB name.
    • For PSBs that were generated by IMS Version 2 Release 2, DBD/PSB/ACB Reversal uses the PCB label to decode the PCB name.
  • If the PGM_COBOL=YES option (prints LANG=COBOL) is not specified, DBD/PSB/ACB Reversal always decodes the PSBGEN statement as PSBGEN LANG=ASSEM, even if the statement is defined as PSBGEN LANG=COBOL or PSBGEN LANG=, because there is no difference between the PSBs.
  • DBD/PSB/ACB Reversal always decodes the TP PCB statement as PCB TYPE=TP,LTERM=nnnnn, even if it is defined as PCB TYPE=TP,NAME=nnnnn, because there is no difference between the two PSBs.
When the IMS DBDGEN utility processes the control statements issued by the ACB reversal function of DBD/PSB/ACB Reversal, the following restrictions apply:
  • When DBD/PSB/ACB Reversal cannot obtain complete segment name information from one or more ACBs, the program decodes the segment name as follows:
    • NAME=$FABNnnn (nnn is the segment code)

    Then the program writes FABN0039W message to both SYSOUT and SYSPUNCH data set.

  • Because the ACB library contains no information on the SIZE parameter, the second RECORD parameter, or the DEVICE parameter of the DATASET statement, the DBD/PSB/ACB Reversal cannot decode these parameters.
  • Because the ACB library contains no information on the FREQ parameter of the SEGM statement, the DBD/PSB/ACB Reversal cannot decode the FREQ parameter.
  • Because DBD/PSB/ACB Reversal cannot obtain paired segment name information on the LCHILD statement for virtually paired logical relationship, the program cannot decode the PAIR parameter.
  • Because DBD/PSB/ACB Reversal cannot obtain segment name information and database name information of the SOURCE parameter for virtually paired logical relationship, the program decodes these names as follows:
    • SOURCE=(($SEGMnnn,DATA,$DBDnnn)) (nnn is a sequential number in a DBD)
    Then the program writes message FABN0065W to both the SYSOUT and the SYSPUNCH data set.
  • Because the IMS ACBGEN does not generate any DBD-type ACB for logical DBD, DBD/PSB/ACB Reversal decodes the logical DBD by using information from the PSB-type ACB that refers to the logical DBD when specifying the PSB-type ACB with the ACB keyword. Therefore the SEGM statements are decoded only for the sensitive segments, and the order of the SEGM statements might be different from the user-required order.
  • Because the ACB library contains no information on the GSAM database, DBD/PSB/ACB Reversal does not decode the DBD control statements for the GSAM database if ACB_GSAM=YES is not specified for the runtime option.
  • When decoding a DBD-type ACB for a DEDB, a PSB-type ACB, which references the DBD, is also used to for obtaining the DBD VERSION= parameter value. If a problem occurs when reading the PSB-type ACB, the DBD VERSION= parameter value is not decoded.
  • If the index target segment type is assumed to be the index source segment, DBD/PSB/ACB Reversal prints the XDFLD SEGMENT parameter without a value.
When IMS PSBGEN utility processes the control statements issued by the ACB reversal function of the DBD/PSB/ACB Reversal, the following restrictions apply:
  • In a DEDB database, DBD/PSB/ACB Reversal always decodes the POS parameter of the PCB statement as POS=S.
  • DBD/PSB/ACB Reversal decodes the INDICES parameter of the SENSEG statement into the following format:
    • INDICES=($DBD0001,$DBD0002)

    DBD/PSB/ACB Reversal provides the specified number of index DBDs, but it does not get the real DBD name from a PSB-type ACB. Therefore it assigns an alternative DBD name that contains a four-digit sequential number in a PSB. The program then writes message FABN0055W to the SYSOUT data set. Replace each DBD name that is assigned with the real index DBD name manually, to regenerate DBD/PSB and to build ACB from the sources generated by DBD/PSB/ACB Reversal.

  • DBD/PSB/ACB Reversal always decodes the REPLACE parameter of the SENFLD statement as REPLACE=YES.
  • DBD/PSB/ACB Reversal program does not decode the GSAM PCB in the ACB library if ACB_GSAM=YES is not specified for the runtime option.