To access exit routines during data set processing, you must specify
the addresses of your exit routines using the EXLST macro. Any number
of ACB macros in a program can indicate the same exit list for the
same exit routines to do all the special processing for them, or they
can indicate different exit lists. Use exit routines for the following
tasks:
- Analyzing physical errors. When VSAM
finds an error in an I/O operation that the operating system's error
routine cannot correct, the error routine formats a message for your
physical error analysis routine (the SYNAD user exit) to act on.
- Analyzing logical errors. Errors not directly
associated with an I/O operation, such as an nonvalid request, cause
VSAM to exit to your logical error analysis routine (the LERAD user
exit).
- End-of-data-set processing. When your program
requests a record beyond the last record in the data set, your end-of-data-set
routine (the EODAD user exit) is given control. The end of the data
set is beyond either the highest addressed or the highest keyed record,
if your program is using addressed or keyed access.
- Journalizing transactions. To journalize the transactions
against a data set, you might specify a journal routine (the JRNAD
user exit). To process a key-sequenced data set using addressed access,
you need to know if any RBAs changed during keyed processing. When
you are processing by key, VSAM exits to your routine for noting RBA
changes before writing a control interval in which there is an RBA
change. When journalizing transactions for compressed data sets, the
RBAs and data lengths represent compressed data. VSAM does not exit
to the JRNAD routine for RBA change if the data set is extended addressable.
- User
processing. User processing exits (UPAD) are available to assist
subsystems that need to dispatch new units of work. The UPAD wait
exit is given control before VSAM issues any WAIT SVCs. Use the UPAD
post exit to make it easier to use cross-memory processing. See Table 1.
The EXLST macro is coordinated with the EXLST parameter of an ACB
or GENCB macro used to generate an ACB. To use the exit list, you
must code the EXLST parameter in the ACB.
You can use the EXLST macro to build an exit list when the program
is assembled, or the GENCB macro to build an exit list when the program
is run. For information about the advantages and disadvantages of
using GENCB see Manipulating the Contents of Control Blocks.