Indexing your DSECT data sets ($DINDEX member)

To allow for DSECT names of up to the maximum of 63 characters, and individual members that contain multiple DSECTS, the HFZPDSCU utility can be used to create a $DINDEX member.

The $DINDEX member should contain a line for every DSECT in each member of the PDS or PDSE. Each line should consist of the DSECT name, followed by a space, followed by the member in which that DSECT is found. For example:
DSECT1 MEMBER1
DSECT2 MEMBER1
LONGDSECTNAME1 MEMBER2
LONGDSECTNAME2 MEMBER2

In this example, MEMBER1 contains DSECTs DSECT1 and DSECT2, and MEMBER2 contains DSECTs LONGDSECTNAME1 and LONGDSECTNAME2.

DSECT indexing utility (HFZPDSCU)

The HFZPDSCU utility is used to create a $DINDEX member for a given data set. It does this by calling the assembler for each member in the data set and extracting the imbedded DSECTs from the assembler output.

In situations where DSECT or macro expansions require special keyword specifications, separate members might have to be coded. These members need to call the macro in question, providing the required keywords, and need to be stored in the same data set as the macro they invoke. For example, CICSĀ® provides in its SDFHMAC data set a member called DFHTCTZE, which provides multiple terminal-related DSECTs. If this member is processed directly by the HFZPDSCU utility, then it does not detect the TCTENIB DSECT, as detection requires special macro keywords to be specified. In this case, if a member is created in the SDFHMAC data set (or a copy of it), which contains the following source line, then all DSECTs are detected, including TCTENIB:
DFHTCTZE CICSYST=YES
The HFZPDSCU utility can be used either by entering HFZPDSCU next to a data set name in ISPF, or as a batch utility, in which case the data set to process is passed as a parameter. See the following example:
//UTILJOB1 JOB ...
//RUNUTIL EXEC PGM=HFZPDSCU,PARM=('fully_qualified_PDS(E)_data_set_name')
//SYSPRINT DD SYSOUT=*

The HFZPDSCU utility creates a $DINDEX member in the target data set, so you must have write access to this data set.