Coding database descriptions as input for the DBDGEN utility

A database descriptor (DBD) is defined by a series of macro instructions that describes such things as a database's organization and access method, the segments and fields in a database record, and the relationships between types of segments.

After you have coded the DBD macro instructions, they are used as input to the DBDGEN utility. This utility is a macro assembler that generates a DBD control block and stores it in the IMS.DBDLIB library for subsequent use during database processing.

If an IMS catalog is enabled, the information you code in the DBD macro instructions also provides much of the database and application program metadata that is stored in the IMS catalog. This metadata includes such things as field data types, application program data structures, date and time formats, and more. The metadata is read into the catalog primarily from the IMS.ACBLIB data set after the ACB members are generated, but in some cases is also read directly from the IMS.DBDLIB data set.

The following figure illustrates the DBD generation process.

Figure 1. The DBD generation process
DBDGEN utility input: IMS.SYSMAC and DBD macro instructions. Output: IMS.DBDLIB.

The following JCL shows an example of the input to the DBDGEN utility. Separate input is required for each database being defined.

//DBDGEN    JOB  MSGLEVEL=1
//                  EXEC        DBDGEN,MBR=APPLPGM1
//C.SYSIN        DD     *
 
    DBD                 required for each DBD generation
    data set(or AREA)    required for each data set group
                         (or AREA in a Fast Path DEDB)
    SEGM                required for each segment type
    FIELD               required for each DBD generation
    LCHILD              required for each secondary index or
                         logical relationship
    XDFLD               required for each secondary index relationship
        .
        .
        .
    DBDGEN              required for each DBD generation
    END                 required for each DBD generation
/*
In addition to the statements shown in the preceding example, the input to the DBDGEN utility can also include the following macro statements:
  • DFSMARSH, which defines data marshalling properties for individual fields
  • DFSMAP and DFSCASE, which define alternative fields maps for a segment