Coding database descriptions as input for the DBDGEN utility
One way to define a database descriptor (DBD) is with 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.

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
/*
- DFSMARSH, which defines data marshalling properties for individual fields
- DFSMAP and DFSCASE, which define alternative fields maps for a segment