Previous topic |
Next topic |
Contents |
Contact z/OS |
Library |
PDF
DCB Exit List z/OS DFSMS Using Data Sets SC23-6855-00 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
The EXLST parameter of the DCB macro specifies the address of a DCB exit list. The DCB exit list may contain the addresses of special processing routines, a forms control buffer (FCB) image, a user totaling area, an area for a copy of the JFCB, and an allocation retrieval list. A DCB exit list must be created if user label, data control block, end-of-volume, block count, JFCBE, or DCB abend exits are used, or if a PDAB macro or FCB image is defined in the processing program. The DCB exit list must begin on a fullword boundary and each entry in the list requires one fullword. Each exit list entry is identified by a code in the high-order byte, and the address of the routine, image, or area is specified in the 3 low-order bytes. Codes and addresses (including the information location) for the exit list entries are shown in Table 1. IBM provides an assembler macro, IHAEXLST, to define symbols for
the exit list codes. Those symbols are in Table 1.
The macro also defines a four-byte DSECT with the following symbols:
For
an example of coding a DCB exit list with IHAEXLST, see Figure 1.
You can activate or deactivate any entry in the list by placing the required code in the high-order byte. Care must be taken, however, not to destroy the last entry indication. The operating system routines scan the list from top to bottom, and the first active entry found with the proper code is selected. If you do not set the last entry indication, the system might scan many words or even thousands of bytes before finding a code that seems to be valid or a last entry indication. You can shorten the list during execution by setting the high-order bit to 1, and extend it by setting the high-order bit to 0. The system ignores invalid codes but a future level of the operating system might provide support for a code that now is invalid. This would be a latent bug in your program. If your program frees storage that an entry points to, it is a good programming practice to invalidate the code for that entry but it is not always necessary. For example your program might define a JFCB entry and issue the RDJFCB macro, free the storage that it points to and issue OPEN without TYPE=J. An OPEN macro with TYPE=J requires a valid DCB exit list entry. Another example is to define a DCB ABEND entry with an invalid address. If you never have an ABEND, this program will work fine. If the system tries to call this DCB ABEND exit, your program will get a program check that covers up the original ABEND cause. Exit routines identified in a DCB exit list are entered in 24-bit mode even if the rest of your program is executing in 31-bit mode. z/OS DFSMS Macro Instructions for Data Sets has an example showing how to build a 24-bit routine in an area below the 16 MB line that acts as a glue routine and branches to your 31-bit routine above the line. |
Copyright IBM Corporation 1990, 2014
|