User exit types

You can select up to seven exit types during an assembly on z/OS® and CMS, or six on z/VSE®:
Exit type
Exit processing
SOURCE
Use this exit to replace or complement the assembler's primary input file processing. It can read primary input records instead of the assembler, or it can monitor and optionally modify the records read by the assembler before they are processed. You can also use the SOURCE exit to provide additional primary input records.
LIBRARY
Use this exit to replace or complement the assembler's MACRO and COPY library processing. It can read MACRO and COPY library records instead of the assembler, or it can monitor and optionally modify the records read by the assembler before they are processed. You can also use the LIBRARY exit to provide additional MACRO and COPY source records.
LISTING
Use this exit to replace or complement the assembler's listing output processing. It can write the listing records provided by the assembler, or it can monitor and optionally modify the records before they are written by the assembler. You can also use the LISTING exit to provide additional listing records.
OBJECT
(z/OS and CMS) Use this exit to replace or complement the assembler's object module output processing. It can write object module records provided by the assembler, or monitor and optionally modify the records before they are written by the assembler. You can also use the OBJECT exit to provide additional object module records.

The OBJECT exit is the same as the PUNCH exit, except that you use it when you specify the OBJECT assembler option to write object records to SYSLIN.

PUNCH
On z/OS and CMS, the PUNCH exit is the same as the OBJECT exit, except that you use it when you specify the DECK assembler option to write object records to SYSPUNCH.

On z/VSE, use this exit to replace or complement the assembler's object module output processing. It can write object module records provided by the assembler, or monitor and optionally modify the records before they are written by the assembler. You can also use the PUNCH exit to provide additional object module records.

ADATA
Use this exit to replace or complement the assembler's ADATA I/O. The ADATA exit can modify the records, discard records, or provide additional records.
TERM
Use this exit to replace or complement the assembler's terminal output processing. It can write the terminal records provided by the assembler, or it can monitor and optionally modify the records before they are written by the assembler. You can also use the TERM exit to provide additional terminal output records.
Note: The ASMAOPT file does not have an I/O exit.