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.
- 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.
- Even when the IMS installed level is updated to 15.2 and ACB, DBD, and PSB are generated with IMS, IMS 15.1 is still used for such resources.
TITLE 'ASSEMBLE OF DBDNAME=DSCLSDVN '
* DSNAME=IMSVS.DBDLIB
* VOL=IMSVS
* DBDGEN DATE 11/22/2021 TIME 19.49
* DECODE DATE 12/01/2021 TIME 10.18.54
* IMS VERSION 15.1
DBD NAME=DSCLSDVN,ACCESS=(HDAM,VSAM), C
RMNAME=(DFSHDC40,1,2,6),PASSWD=YES, C
VERSION= DATE 11/22/2021 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
TITLE 'ASSEMBLE OF PSBNAME=PSBSMUAL '
* DSNAME=IMSVS.PSBLIB
* VOL=IMSVS
* PSBGEN DATE 11/22/2021 TIME 19.50
* DECODE DATE 12/01/2021 TIME 10.23.54
* IMS VERSION 15.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
- 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.
- 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 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 2.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 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)
- 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.
- 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.