IMS Catalog Populate utility (DFS3PU00)

Use the IMS™ Catalog Populate utility (DFS3PU00) to load or insert records into the IMS catalog database data sets. The DFS3PU00 utility can also be used to estimate the size the IMS catalog data sets.

Whether the DFS3PU00 utility runs in load mode, update mode, or analysis-only mode is determined by the IMS catalog PSB that you specify in the utility JCL:
  • Load mode is specified by PSB DFSCPL00.
  • Update mode is specified by PSB DFSCP001.
  • Analysis-only mode is specified by DFSCP000.

If any of the data sets for the IMS catalog have not been created, the DFS3PU00 utility creates them automatically. The amount of space that the utility allocates for the data sets is based on the ACB library members and the values that are specified on SPACEALLOC parameter in the catalog section of the DFSDFxxx PROCLIB member.

The output of the DFS3PU00 utility includes a report that contains statistics about the record segments that are loaded into the IMS catalog. The report includes information about the number and types of segments, as well as an estimate of the amount of DASD storage that each data set group of the IMS catalog will require. If you need to know how much DASD storage the IMS catalog data sets will use before they are created, you can run the DFS3PU00 utility without populating the IMS catalog to generate only the statistics report. To run the DFS3PU00 utility in analysis-only mode, specify DFSCP000 as the PSB for the utility in the utility JCL.

After the utility evaluates the members in your ACB libraries, it produces a report. This report is the same report that the DFS3PU00 utility produces when it loads the IMS catalog.

The DFS3PU00 utility creates the catalog records from the ACB members in one or more ACB libraries and depending on your database types, the associated DBD and PSB members in DBD libraries and PSB libraries. The records contain metadata for your application programs and databases.

The DFS3PU00 utility can run in a DL/I region or, if it is updating an existing IMS catalog, the DFS3PU00 utility can run in a BMP region. If you run the utility in a DL/I batch region and the IMS catalog is shared, you must specify IRLM support in the EXEC parameters of the utility JCL. In the following example, the second Y and irlmid value indicate IRLM support:
PARM=(DLI,DFS3PU00,DFSCP001,,,,,,,,,,,Y,Y,irlmid,,,,,,,,,,,'DFSDF=001')

As an alternative to running the DFS3PU00 utility, you can populate the IMS catalog by using the ACB Generation and Catalog Populate utility (DFS3UACB). The DFS3UACB utility generates the ACB libraries for your applications and databases and then populates the IMS catalog, both in the same job step.

Subsections:

Restrictions

No restrictions that are unique to the DFS3PU00 utility are currently documented.

Prerequisites

Before the DFS3PU00 utility can load the metadata for new or changed application programs and databases into the IMS catalog, the DBD generation, PSB generation, and ACB generation processes must be complete for the new or changed application programs and databases.

If you are loading an IMS catalog for the first time, ensure that the following steps have been completed before running the DFS3PU00 utility:
  • The DBD and PSB load modules for the IMS catalog have been added to your DBD and PSB libraries.
  • The ACB member for the IMS catalog has been generated and loaded into the IMS.ACBLIB data set.
  • The IMS catalog HALDB master database and partitions have been defined in either the RECON data set or, if the target IMS catalog is not supported by DBRC, in an IMS catalog partition definition data set.

Requirements

The DFS3PU00 utility requires access to the following data sets:
  • The IMS.PROCLIB data set that contains the DFSDFxxx member that enables the IMS catalog and defines the alias name of the IMS catalog
  • One or more IMS.ACBLIB data sets
  • If ACB library members reference logically related databases, the IMS.DBDLIB data set
  • If ACB library members reference GSAM databases, the IMS.DBDLIB data set and the IMS.PSBLIB data set

When the IMS.DBDLIB and IMS.PSBLIB data sets are included as input, they must be the DBD and PSB libraries from which the input IMS.ACBLIB data set was built.

If any required members of the PSBLIB or DBDLIB data sets are not found, the utility issues an error message, and the records for the referencing PSBs are not created in the IMS catalog. You can add the missing catalog records later by supplying the necessary PSB or DBD members with the correct ACB library and rerunning the DFS3PU00 utility in update mode by specifying the DFSCP001 PCB in the utility JCL.

When the IMS catalog is registered with DBRC, you are required to create an image copy of the IMS catalog after an initial load of the IMS catalog. When the IMS catalog is not registered with DBRC, IMS cannot require an image copy after an initial load; however, if an image copy is not created after an initial load, the only way to recover the catalog is to reload it.

Recommendations

If you are updating an existing IMS catalog, create an image copy of the IMS catalog data sets when the updates are complete. If the IMS catalog is registered with DBRC, you can use the DBRC command GENJCL.IC to back up the catalog. If you have defined the IMS catalog in an IMS Catalog partition definition data set, you must use standard image copy JCL.

Start of changeThe storage requirement is highly dependent on the total number of ACBLIB members because they have to be kept in storage. Consider increasing the job's region size to prevent a GETMAIN failure that will cause abend U1002 reason code 4 to be issued. End of change

Input and output

The DFS3PU00 utility always reads input from the ACB library data sets that contain the ACB members for your databases and application programs, and from the DFSDFxxx member of the IMS.PROCLIB data set.

If your databases use logical relationships, the IMS Catalog Populate utility also reads input from the IMS.DBDLIB data set.

If you use GSAM databases and an ACB library member references a GSAM database, the DFS3PU00 utility also reads input from both the IMS.DBDLIB and the IMS.PSBLIB data sets.

The output of the DFS3PU00 utility includes:
  • The record segments in the IMS catalog data set (DFSCD000).
  • Messages and statistical information to the SYSPRINT data set.
If any of the following database data sets do not exist, the DFS3PU00 utility creates them automatically:
  • The DFSCD000 database data sets:
    • Four data sets for the segments of the IMS catalog
    • The indirect list data set (ILDS)
    • The primary index data set
  • The DFSCX000 secondary index data set.
Figure 1. IMS Catalog Populate utility input and output
The ACBLIB, the DBDLIB, the PSBLIB, and the DFSDFxxx PROCLIB member are shown as input to the DFS3PU00 utility. The IMS catalog and the SYSPRINT data set are shown as the output targets of the utility.

JCL specifications

DFS3PU00 utility JCL statements

The execution parameters for the DFS3PU00 utility must reference the DFSDFxxx member of the IMS.PROCLIB data set, as shown in the following example JCL.

At least one IMS.ACBLIB data set must be specified in the utility JCL by the IMSACB01 DD statement. You can include additional ACBLIB data sets by concatenating them in a single DD statement or by specifying additional IMSACBnn DD statements, as shown in the following example JCL by the IMSACB02 and IMSACB03 DD statements. The additional IMSACBnn ddnames must be consecutively numbered in the last two characters positions.

Duplicate ACB members with duplicate names are handled differently depending on whether the ACB libraries are concatenated on a single DD statement or are referenced individually by separate DD statements. If you use cloned ACB libraries, but duplicate ACB members might be generated individually in any of the libraries, reference each of the cloned ACB libraries in the utility JCL by using a separate DD statement.

When ACB libraries are referenced individually by separate DD statements, the DFS3PU00 utility checks the ACB generation time stamps of ACB members with duplicate names and uses them only if the ACB generation time stamp is different from the previously processed ACB member with the same name. If the time stamps are the same, the ACB member with the duplicate name is ignored.

However, when ACB libraries are concatenated in a single DD statement, the DFS3PU00 utility does not check the ACB generation time stamps of ACB members with duplicate names. If duplicate member names exist across the concatenated ACB libraries, only the first ACB member is used and any subsequent ACB members with a duplicate name are ignored, even if the time stamps are different.

Your DLIBATCH or equivalent procedure should already include IMS DD statements for the PSB and DBD libraries that were used to generate the ACB libraries. The procedure should also include STEPLIB and DFSRESLB DD statements for the IMS.SDFSRESL data set and IEFRDER and IEFRDER2 DD statements for the IMS log data sets.

The following is a sample of the JCL statements that can be used to perform an initial load of the IMS catalog with the DFS3PU00 utility. The JCL specifies the IMS catalog PSB DFSCPL00, which loads records to the IMS catalog. Any existing records are overwritten.

  //LOADCAT EXEC PGM=DFS3PU00,
  // PARM=(DLI,DFS3PU00,DFSCPL00,,,,,,,,,,,Y,N,,,,,,,,,,,,'DFSDF=001')
  //STEPLIB  DD  DSN=IMS.SDFSRESL,DISP=SHR
  //DFSRESLB DD  DSN=IMS.SDFSRESL,DISP=SHR
  //IMS      DD  DSN=IMS.PSBLIB,DISP=SHR
  //         DD  DSN=IMS.DBDLIB,DISP=SHR
  //PROCLIB  DD  DSN=IMS.PROCLIB,DISP=SHR
  //SYSABEND DD  SYSOUT=*       Dump data set
  //SYSPRINT DD  SYSOUT=*       Messages, statistics
  //IEFRDER  DD  ...            Log data set
  //DFSVSAMP DD  ...            Buffer pool parameters
  //IMSACB01 DD  ...            First ACBLIB              
  //         DD  ...            Optional concatenated ACBLIB
  //IMSACB02 DD  ...            Optional additional ACBLIBs
  //IMSACB03 DD  ...            ...
Start of change  //SYSINP   DD  *              ISRTLIST DUPLIST /*  End of change

The following is a sample of the JCL statements that can be used to update the IMS catalog by running the DFS3PU00 utility in a DL/I batch job. The JCL specifies the IMS catalog PSB DFSCP001, which inserts records to the IMS catalog without replacing the entire catalog. IRLM support is not indicated.

  //UPDTCAT EXEC PGM=DFS3PU00,
  //             PARM=(DLI,DFS3PU00,DFSCP001,,,,,,,,,,,Y,N,,,,,,,,,,
  //             ,,'DFSDF=001')                                       
  //STEPLIB  DD  DSN=IMS.SDFSRESL,DISP=SHR
  //DFSRESLB DD  DSN=IMS.SDFSRESL,DISP=SHR
  //IMS      DD  DSN=IMS.PSBLIB,DISP=SHR
  //         DD  DSN=IMS.DBDLIB,DISP=SHR
  //PROCLIB  DD  DSN=IMS.PROCLIB,DISP=SHR
  //SYSABEND DD  SYSOUT=*       Dump data set
  //SYSPRINT DD  SYSOUT=*       Messages, statistics
  //IEFRDER  DD  ...            Log data set with catalog updates
  //DFSVSAMP DD  ...            Buffer pool parameters
  //IMSACB01 DD  ...            First ACBLIB              
  //         DD  ...            Optional concatenated ACBLIB
  //IMSACB02 DD  ...            Optional additional ACBLIBs
  //IMSACB03 DD  ...            ...

The following is a sample of the JCL statements that can be used to update the IMS catalog by running the DFS3PU00 utility in a BMP job. The JCL specifies the IMS catalog PSB DFSCP001, which inserts records to the IMS catalog without replacing the entire catalog.

In this example, imsid is the identifier of the IMS system on which the job is to be run.

//UPDTCAT EXEC PGM=DFS3PU00,
  //             PARM=(BMP,DFS3PU00,DFSCP001,,,,,,,,,,,imsid,,,,,,)
  //STEPLIB  DD  DSN=IMS.SDFSRESL,DISP=SHR
  //DFSRESLB DD  DSN=IMS.SDFSRESL,DISP=SHR
  //IMS      DD  DSN=IMS.PSBLIB,DISP=SHR
  //         DD  DSN=IMS.DBDLIB,DISP=SHR
  //PROCLIB  DD  DSN=IMS.PROCLIB,DISP=SHR
  //SYSABEND DD  SYSOUT=*       Dump data set
  //SYSPRINT DD  SYSOUT=*       Messages, statistics
  //IEFRDER  DD  ...            Log data set with catalog updates
  //DFSVSAMP DD  ...            Buffer pool parameters
  //IMSACB01 DD  ...            First ACBLIB              
  //         DD  ...            Optional concatenated ACBLIB
  //IMSACB02 DD  ...            Optional additional ACBLIBs
  //IMSACB03 DD  ...            ...

DD statements

DFSRESLB DD
Points to an authorized library that contains the IMS SVC modules. For IMS batch, SDFSRESL and any data set that is concatenated to it on the DFSRESLB DD statement must be authorized through the Authorized Program Facility (APF). This DD statement provides an authorized library for the IMS SVC modules, which must be in an authorized library. The JOBLIB or STEPLIB statement does not need to be authorized for IMS batch.
DFSVSAMP
Defines the buffer pool parameters data set.
IEFRDER DD
Defines the primary IMS log data set.
IEFRDER2 DD
Defines the secondary IMS log data set.
IMS DD
Defines the IMS.PSBLIB and IMS.DBDLIB data sets.
The IMS DD statement is required only if the IMS ACB library members loaded into the IMS catalog reference GSAM or logically related databases.
IMSACB01 DD
Defines an ACB library data set that contains the ACB members that are used to populate the IMS catalog. This DD statement is required.
IMSACBnn DD
Defines additional optional input ACB library data sets. The ddnames of additional ACB libraries must be consecutively numbered in the nn position.

The value of nn is determined by adding 1 to the value of nn from the preceding IMSACBnn ddname. Valid values for nn are from 02 through 99.

For example, after the required IMSACB01 DD statement, subsequent DD statements would be named IMSACB02, IMSACB03, IMSACB04, and so on.

If a break in the consecutive numbering of IMSACBnn ddnames occurs, the ACB library DD statements after the break are ignored.

PROCLIB DD
Defines the IMS.PROCLIB data set that contains the DFSDFxxx member that defines various attributes of the IMS catalog that are required by the utility.
STEPLIB DD
Points to IMS.SDFSRESL, which contains the IMS nucleus and required IMS modules. If STEPLIB is unauthorized by having unauthorized libraries that are concatenated to IMS.SDFSRESL, you must include a DFSRESLB DD statement.
SYSABEND DD
Defines the dump data set
SYSINP DD
An optional control statement sequential data set with 80-character fixed-length records. Only characters in positions 1 - 72 are read.

The control statement parameters, which are separated by blanks or commas, can be specified on one or more records.

For a description of the control statements that you can specify with the SYSINP DD statement, see Control statements.

Start of changeSYSPRINT DDEnd of change
Start of changeDefines the output message data set.

When the SYSPRINT DD statement refers to a DASD or tape data set, you can control the block size of this data set with the BLKSIZE sub-parameter of the DCB parameter. If specified, the BLKSIZE value must be an exact multiple of 121 or a system ABEND013-20 can result. Omitting BLKSIZE from a DASD data set causes a system-determined block size to be used. Regardless of what value is specified for LRECL, the utility will always use a record length of 121.

End of change
Start of change

Control statements

The following control statement parameters, which are separated by blanks or commas, can be specified on one or more records by using the SYSINP DD statement.

DUPLIST
Specifies that the DFS3PU00 utility list each DBD or PSB resource in the input ACB library that is not added to the IMS catalog because it is a duplicate of an instance that is already in the IMS catalog. For each duplicate instance of a resource in the IMS catalog, the utility prints message DFS4436I.
ERRORMAX=n
Terminate the IMS Catalog Populate utility when more than n messages indicate errors that prevent certain DBDs and PSBs from having their metadata that is written to the IMS catalog. Duplicate instances of metadata do not count toward this limit. If this option is omitted, there is no limit.
Start of changeRESOURCE_CHKP_FREQ=nEnd of change
Start of changeSpecifies the number of DBD and PSB resource instances to be inserted between checkpoints. n can be a 1- to 8-digit numeric value of 1 to 99999999. The default value is 100.End of change
Start of changeSEGMENT_CHKP_FREQ=nEnd of change
Start of changeSpecifies the number of segments to be inserted between checkpoints. When the number is reached, IMS finishes inserting all of the segments for the resource instance that is currently being processed before issuing the checkpoint. n can be a 1- to 8-digit numeric value of 1 to 99999999. The default value is 1000.
Note: The first checkpoint frequency number to be reached will cause a checkpoint to be taken and the counters will be reset to 0.
End of change
ISRTLIST
Start of changeSpecifies that the DFS3PU00 utility list each DBD or PSB resource that is inserted or updated in the IMS catalog. This parameter is the default.
The utility identifies the action that is taken for each resource by printing the following messages:
DFS4434I
The resource is new to the IMS catalog and a new record was created for it.
DFS4435I
The resource exists in the IMS catalog. A new instance of the resource was added to the resource record.

The utility prints message DFS4437I as updates are committed to the IMS catalog.

End of change
NODUPLIST
Do not print a list of resource instances that were not added. This parameter is the default.
NOISRTLIST
Do not print a list of inserted resource instances.
End of change

IMS Catalog Populate utility statistics report

Each time the DFS3PU00 utility runs it creates a statistics report for the record segments to be loaded or updated in the IMS catalog. When the DFS3PU00 utility runs in read-only mode, the report reflects only the potential statistics if the IMS catalog were loaded or updated from the ACB libraries currently being used as input to the utility.

To run the DFS3PU00 utility in analysis-only mode, specify DFSCP000 as the PSB for the utility in the utility JCL.

The first section in the report is a summary of the segments that were inserted during the current execution of the utility. For each segment type inserted in the IMS catalog, the summary includes the following information organized into columns:
  • The segment code (SC)
  • The segment name, which generally corresponds to a macro in your DBD or PSB source files
  • The data set group (DSG) in the IMS catalog that the segment is stored in
  • The parent segment of the listed segment
  • The total number of segments of that type that are loaded into the IMS catalog
  • The average number of segment instances of that type under the parent segment

The second section in the report shows both the numbers of existing DBD and PSB records that were updated by the utility and the number of existing DBD and PSB records that were not updated because the time stamp of the record matched the time stamp of the corresponding ACB member in the ACB library. This section of the report also shows the number of DBD and PSB segments whose ACBLIB time stamps were already in the catalog and did not need to be inserted again.

The rest of the sections in the report provide the storage estimates.

For the OSAM data sets, the storage sections of the report show the number of blocks of the specified size. For the VSAM KSDSs, which include the indirect list data set (ILDS), the primary index data set, and the secondary index data set, the report shows the number of VSAM records.

These numbers are estimates that reflect the amount of space needed to load the catalog records that are built from the ACB libraries that you provide as input to the DFS3PU00 utility. If you are calculating the amount of storage required for the IMS catalog data sets, provide plenty of additional space in your calculations to allow for expansion.

If you have IMS create the IMS catalog data sets automatically, you can specify additional space as a percentage of the estimates that are provided by the utility on the SPACEALLOC parameter in the IMS catalog section of the DFSDFxxx PROCLIB member. The default value for this parameter is 500%.

In the report, the following abbreviations are used:
DSG
Data set group
L
A HALDB ILDS data set. The number of records shown represent the potential number of indirect list entries (ILEs) that could be created if the IMS catalog is reorganized.
SC
Segment code. When loading a segment type, IMS assigns a segment code as a unique identifier (an integer from 1 to 255). IMS assigns numbers in ascending sequence, starting with the root segment type (number 1) and continuing through all dependent segment types in hierarchical sequence.
SEGS
Segments
X
HALDB partitioned primary index.
   CATALOG DFSCD000                                          
                                                             
   PARTITION DFSCD01
                                          
      NUMBER OF SEGMENTS INSERTED INTO THE CATALOG
                      INSERTED                      AVERAGE  
      SC   SEGMENT    SEGMENTS   DSG   PARENT     SEGS/PARENT
      --   --------   --------   ---   --------   -----------
       1   HEADER        4228     A                          
       2   DBD           2530     A    HEADER         0.6    
       3   CAPXDBD          7     D    DBD            0.0    
       5   DSET          2599     D    DBD            1.0    
       7   AREA           139     D    DBD            0.1    
       9   SEGM         16337     B    DBD            6.5    
      10   CAPXSEGM         1     D    SEGM           0.0    
      12   FLD          16426     C    SEGM           1.0    
      14   MAR          16426     C    FLD            1.0    
      17   LCHILD        2687     B    SEGM           0.2    
      20   XDFLD          134     B    LCHILD         0.0    
      33   PSB           1840     A    HEADER         0.4    
      35   PCB           9190     B    PSB            5.0    
      37   SS           75274     B    PCB            8.2    
      39   SF            1105     B    SS             0.0    
      41   DBDXREF       8886     D    PSB            4.8    
                                                             
                 WITHIN    DUPLICATES                        
                EXISTING       NOT                           
      SEGMENT    HEADER     INSERTED                         
      -------   --------   ----------                        
      DBD           71           0                           
      PSB           72           0                           
                                                             
      ESTIMATED SPACE REQUIREMENT TO HOLD INSERTED SEGMENTS  
        DSG   BLKSIZE   BLOCKS                               
        ---   -------   ------                               
         A      4096       596                               
         B      4096      9343                               
         C      4096      8214                               
         D      4096       236                               
                                                             
        DSG   RECORDS                                        
        ---   -------                                        
         L      8886                                         
         X      4230                                         
                                                             
        SECONDARY                                            
        INDEX        RECORDS                                 
        ---------    -------                                 
        DFSCX000       8886

Return codes

The DFS3PU00 utility returns the following codes:

0
Successful completion of all operations
4
One or more records could not be loaded into the IMS catalog. Warning messages issued.
8 or greater
Program terminated due to severe errors