What exactly is an EXIT in z/OS? An EXIT is nothing more than a subroutine invoked by a program that can be customised to implement a predefined event in the execution of that same program. Confused? In that case imagine an EXIT as a way to customise the execution of a program or your z/OS system. That’s what an EXIT in z/OS is. 🙂
A simple example could be an EXIT provided by a Sort program to add the functionality of comparing records. The procedures customised and provided by the user (the EXIT) take the place of the default routines provided by the Sort program.
IBM provides several EXITS with z/OS that you, as a systems programmer, can customise and implement:
BCP Exits | |
---|---|
Exit | Description |
USER1(name) | Exit routine is given control after each record is read by SMF dump program |
USER2(name) | Exit routine is given control only when the dump program selects a record to be written |
USER3(name) | Exit routine is given control after the output dataset is closed by SMF dump program |
IEAVTRML | Allows installation to supply resource management routines |
IXZXIT01 | Allows installation to view, modify, or reroute a message or acknowledgement before the message arrives at the receiving member’s mailbox. |
IXZXIT02 | Allows installation to view or modify a message before it is retrieved from a mailbox. |
IXZXIT03 | Allows installation to attach to or detach from an installation-defined JES XCF group. |
TSO Exits | |
Exit | Description |
ADRS exit | Perform additional processing whenever a user selects the ADRS option from the Information Centre Facility |
REXX attention handling | Perform special attention processing |
CHSFEXIT | Change default space parameters that VM/PC servers use to dynamically allocate MVS datasets |
Edit exit for RENUM, MOVE, and COPY subcommands | Tailor the way line numbering is done |
Edit exit for syntax checkers | Supply syntax checker with dataset attributes |
REXX exec initialisation | Access or update REXX variables |
REXX exec processing | Perform special processing before REXX exec executes |
REXX exec termination | Access or update REXX variables |
ICQAMFX1 | Application manager function pre-initialisation |
ICQAMFX2 | Application manager function post-termination |
ICQAMPX1 | Application manager panel pre-display |
ICQAMPX2 | Application manager panel post-display |
IDYTSINI | TSOLIB initialisation |
IDYTSTER | TSOLIB termination |
IKJADINI | ALTLIB initialisation |
IKJADTER | ALTLIB termination |
IKJCNXCD | CONSPROF pre-display |
IKJCNXCI | CONSPROF initialisation |
IKJCNXCT | CONSPROF termination |
IKJCNXAC | CONSOLE activation |
IKJCNXDE | CONSOLE deactivation |
IKJCNX50 | CONSOLE 80% message capacity |
IKJCNX60 | CONSOLE 100% message capacity |
IKJCNXPP | CONSOLE pre-parse |
IKJCT43I | EXEC initialisation |
IKJCT43T | EXEC termination |
IKJCT44B | Add installation-written CLIST built-in functions |
IKJCT44S | Add installation-written CLIST statements |
IKJEESXA | LISTBC failure |
IKJEESXB | LISTBC termination |
IKJEESX0 | SEND initialisation |
IKJEESX1
IEEVSNX1 |
SEND pre-display |
IKJEESX2
IEEVSNX2 |
SEND pre-save |
IKJEESX3
IEEVSNX3 |
SEND failure |
IKJEESX4
IEEVSNX4 |
SEND termination |
IKJEESX5 | LISTBC initialisation |
IKJEESX6 | LISTBC pre-display |
IKJEESX7 | LISTBC pre-list |
IKJEESX8 | LISTBC pre-read |
IKJEESX9 | LISTBC pre-allocate |
IKJEFD21 | FREE initialisation |
IKJEFD22 | FREE termination |
IKJEFD47 | ALLOCATE command initialisation |
IKJEFD49 | ALLOCATE command termination |
IKJEFF10 | SUBMIT command |
IKJEFF53 | OUTPUT, STATUS and CANCEL commands |
IKJEFLD | Logon pre-prompt |
IKJEFLD1 | Logon authorised pre-prompt |
IKJEFLD2 | Logoff |
IKJEFLD3 | Logon post-prompt |
IKJEFLN1 | Logon pre-display |
IKJEFLN2 | Logon post-display |
IKJEFY11 | OUTDES initialisation |
IKJEFY12 | OUTDES termination |
IKJEFY60 | PRINTDS initialisation |
IKJEFY64 | PRINTDS termination |
IKJEGASI | TESTAUTH subcommand initialisation |
IKJEGAST | TESTAUTH subcommand termination |
IKJEGAUI | TESTAUTH initialisation |
IKJEGAUT | TESTAUTH termination |
IKJEGCIE | TEST subcommand initialisation |
IKJEGCTE | TEST subcommand termination |
IKJEGMIE | TEST initialisation |
IKJEGMTE | TEST termination |
IKJPRMX1 | PARMLIB initialisation |
IKJPRMX2 | PARMLIB termination |
INMCZ21R | TRANSMIT/RECEIVE NAMES dataset pre-allocation |
INMRZ01
INMRZ01R |
RECEIVE initialisation |
INMRZ02
INMRZ02R |
RECEIVE termination |
INMRZ04
INMRZ04R |
RECEIVE notification |
INMRZ05R | RECEIVE acknowledgment notification |
INMRZ06R | RECEIVE pre-acknowledgment notification |
INMRZ11
INMRZ11R |
RECEIVE dataset preprocessing |
INMRZ12
INMRZ12R |
RECEIVE dataset postprocessing |
INMRZ13
INMRZ13R |
RECEIVE dataset decryption |
INMRZ15R | RECEIVE post-prompt |
INMRZ21R | RECEIVE log dataset pre-allocation |
INMXZ01
INMXZ01R |
TRANSMIT startup |
INMXZ02
INMXZ02R |
TRANSMIT termination |
INMXZ03
INMXZ03R |
TRANSMIT encryption |
INMXZ21R | TRANSMIT log dataset pre-allocation |
IRXINITX | REXX pre-environment initialisation |
IRXITTS
IRXITMV |
REXX post-environment initialisation |
IRXTERMX | REXX environment termination |
Names service exit | Track changes made to Information Centre Facility names directories |
Session Manager | Initialisation/stream monitoring/termination |
JES2 Exits | |
Exit | Description |
Exit 0 | Pre-initialisation |
Exit 1 | Print/Punch Separators |
Exit 2 | JOB Statement Scan |
Exit 3 | JOB Statement Accounting Field Scan |
Exit 4 | JCL and JES2 Control Statement Scan |
Exit 5 | JES2 Command Preprocessor |
Exit 6 | Converter/Interpreter Text Scan |
Exit 7 | JCT Read/Write (JES2) |
Exit 8 | Control Block Read/Write (USER) |
Exit 9 | Job Output Overflow |
Exit 10 | $WTO Screen |
Exit 11 | Spool Partitioning Allocation ($TRACK) |
Exit 12 | Spool Partitioning Allocation ($STRAK) |
Exit 13 | TSO/E Interactive Data Transmission Facility Screening and Notification |
Exit 14 | Job Queue Work Select — $QGET |
Exit 15 | Output Dataset/Copy Select |
Exit 16 | Notify |
Exit 17 | BSC RJE SIGNON/SIGNOFF |
Exit 18 | SNA RJE LOGON/LOGOFF |
Exit 19 | Initialisation Statement |
Exit 20 | End of Input |
Exit 21 | SMF Record |
Exit 22 | Cancel/Status |
Exit 23 | FSS Job Separator Page (JSPA) Processing |
Exit 24 | Post-initialisation |
Exit 25 | JCT Read (FSS) |
Exit 26 | Termination/Resource Release |
Exit 27 | PCE Attach/Detach |
Exit 28 | Subsystem Interface (SSI) Job Termination |
Exit 29 | Subsystem Interface (SSI) End-of-Memory |
Exit 30 | Subsystem Interface (SSI) Dataset OPEN and RESTART |
Exit 31 | Subsystem Interface (SSI) Allocation |
Exit 32 | Subsystem Interface (SSI) Job Selection |
Exit 33 | Subsystem Interface (SSI) Dataset CLOSE |
Exit 34 | Subsystem Interface (SSI) Dataset Unallocation |
Exit 35 | Subsystem Interface (SSI) End-of-Task |
Exit 36 | Pre-security Authorisation Call |
Exit 37 | Post-security Authorisation Call |
Exit 38 | TSO/E Receive Dataset Disposition |
Exit 39 | NJE SYSOUT Reception Dataset Disposition |
Exit 40 | Modifying SYSOUT Characteristics |
Exit 41 | Modifying Output Grouping Key Selection |
Exit 42 | Modifying a Notify User Message |
Exit 43 | Transaction Program Select/Terminate/Change |
Exit 44 | JES2 Converter Exit (Main Task) |
Exit 45 | Pre-SJF Exit Request |
Exit 46 | Transmitting an NJE Data Area |
Exit 47 | Receiving an NJE Data Area |
Exit 48 | Subsystem Interface (SSI) SYSOUT Dataset Unallocation |
Exit 49 | Job Queue Work Select — QGOT |
Exit 50 | End of Input |
Exit 51 | Job Phase Change Exit ($QMOD) |
Exit 52 | JOB JCL Statement Scan (JES2 User Environment) |
Exit 53 | JOB Statement Accounting Field Scan (JES2 User Environment) |
Exit 54 | JCL and JES2 Control Statement Scan (JES2 User Environment) |
Exit 55 | NJE SYSOUT Reception Dataset Disposition |
Exit 56 | Modifying an NJE Data Area before Its Transmission |
Exit 57 | Modifying an NJE Data Area before Receiving the Rest of the NJE Job |
JES3 Exits | |
Exit | Description |
IATUX03 | Examine or modify converter/interpreter text created from JCL |
IATUX04 | Examine the job information from the JCL |
IATUX05 | Examine the step information from the JCL |
IATUX06 | Examine DD statement information from the JCL |
IATUX07 | Examine or substitute unit, type and volume serial information |
IATUX08 | Examine setup information |
IATUX09 | Examine final job status, JST and JVT |
IATUX10 | Generate a message |
IATUX11 | Inhibit printing of the LOCATE request or response |
IATUX14 | Job validation/restart LOCATE request or response |
IATUX15 | Scan an initialisation statement |
IATUX17 | Define set of scheduler elements |
IATUX18 | Check input authority level for consoles |
IATUX19 | Examine or modify temporary OSE |
IATUX20 | Examine or modify data written on job header pages |
IATUX21 | Create and write dataset headers for output datasets |
IATUX22 | Examine or alter the forms alignment |
IATUX23 | Examine or modify data written to trailer pages |
IATUX24 | Examine the Net-id and the devices requested |
IATUX25 | Examine or modify volume serial number |
IATUX26 | Examine MVS scheduler control blocks |
IATUX27 | Examine or alter the JDAB, JCT and JMR |
IATUX28 | Examine the accounting information as provided by the JOB statement |
IATUX29 | Examine the accounting information as provided by the JCT, JDAB and JMR |
IATUX30 | Examine authority level for TSO/E terminal commands |
IATUX32 | Override the DYNALDSN initialisation statement |
IATUX33 | JES3 control statement and JCL EXEC statement installation exit |
IATUX34 | JCL DD statement user exit and JCL EXEC statement installation exit |
IATUX35 | Validity check network commands |
IATUX36 | Collect accounting information |
IATUX37 | Modify the JES3 networking dataset header |
IATUX38 | Change SYSOUT class for networking datasets |
IATUX39 | Modify the dataset header for a SYSOUT dataset |
IATUX40 | Modify job header |
IATUX41 | Determines the disposition of job over JCL limit |
IATUX42 | TSO/E interactive data transmission facility screening and notification |
IATUX43 | Modify job header segments |
IATUX44 | Examine and modify the JCL |
IATUX45 | Examine and modify data sent to an output writer FSS |
IATUX46 | Select processors eligible for C/I processing |
IATUX48 | Override operator modification of output datasets |
IATUX49 | Override address space selected for C/I processing |
IATUX50 | Process user defined BSIDMOD codes for C/I processing |
IATUX57 | Select a single WTO routing code for JES3 MSGROUTE |
IATUX58 | Modify security information before JES3 security processing |
IATUX59 | Modify security information after JES3 security processing |
IATUX60 | Determine action to take when a TSO/E user is unable to receive a dataset |
IATUX61 | During MDS processing, chooses whether a job should be cancelled or sent to the error queue |
IATUX62 | Overrides the decision to accept a tape or disk mount |
IATUX66 | Assigns transmission priority to a SNA/NJE data stream |
IATUX67 | Determines action when remote dataset is rejected by RACF® |
IATUX69 | Determines if a message is to be sent to the JES3 global address space |
IATUX70 | Performs additional message processing |
VTAM Exits | |
Exit | Description |
ISTAUCAG | Calculates and records time during which a terminal user or an application program is logged onto an application program |
ISTAUCAT | Validates a logon request to an application program |
ISTEXCVR | Provides ACF/VTAM with an ordered list of virtual routes for path selection to transmit data through network |
ISTINCDT | User supplies supplementary tables to session-link unformatted system services table which ACF/VTAM uses to handle command input and message output |
ISTINCLM | User can change IBM-supplied logon mode table which contains parameters representing protocols for telecommunications session or user can supply supplementary tables |
ISTINCNO | User supplies supplementary tables to operation-level unformatted system services tables which handle commands from an ACF/VTAM operator and messages to an ACF/VTAM operator |
ISTMGC00 | Communication network management (CNM) table routes unsolicited network service requests to application programs to record and report maintenance statistics |
ISTPUCWC | Virtual route pacing window size calculator specifies limits to data flow through a network to avoid congestion in nodes along a virtual route |
ISTRACON | Module containing constants used to control functions not suitable for modification by operator command or start option |
RACF Exits | |
Exit | Description |
ICHCCX00 | Command exit |
ICHCNX00 | Command exit |
ICHDEX01 | RACF® password authentication |
ICHFRX01 | RACROUTE request=FASTAUTH preprocessing |
ICHFRX02 | RACROUTE request=FASTAUTH postprocessing |
ICHPWX01 | New password exit |
ICHRCX01 | RACROUTE request=AUTH preprocessing |
ICHRCX02 | RACROUTE request=AUTH postprocessing |
ICHRDX01 | RACROUTE request=DEFINE preprocessing |
ICHRDX02 | RACROUTE request=DEFINE postprocessing |
ICHRIX01 | RACROUTE request=VERIFY preprocessing |
ICHRIX02 | RACROUTE request=VERIFY postprocessing |
ICHRLX01 | RACROUTE request=LIST pre/postprocessings |
ICHRLX02 | RACROUTE request=LIST selection |
ICHRSMFE | RACF report writer |
IRRACX01 | ACEE compression/expansion |
IRREVX01 | Common command exit |
ICHRFX03 | RACROUTE request=FASTAUTH preprocessing |
ICHRFX04 | RACROUTE request=FASTAUTH postprocessing |
IRRSXT00 | SAF callable services router |
DFSMS Exits | |
Exit | Description |
CBRHADUX | Object access method (OAM) auto-delete |
CBRUXCUA | Change use attribute installation exit |
CBRUXEJC | Cartridge eject installation exit |
CBRUXENT | Cartridge entry installation exit |
IDAEOVXT | VSAM EOV installation exit |
IEFXVNSL | Automatic volume recognition (AVR) nonstandard label processing |
IFG0EX0A | Format-1 DSCB not found during OPEN or EOV |
IFG0EX0B | Take control during OPEN for a DCB |
IFG01991 | Open, close, end of volume abnormal conditions |
IFG0193G | ISO/ANSI/FIPS Version 3 label exits for volume access, file access, label validation, and label validation suppression |
IGBDCSX1
IGBDCSX2 |
DASD precalculation and postcalculation services |
IGDACSDC | Automatic class selection (ACS) data class exit |
IGDACSSC | Automatic class selection (ACS) storage class exit |
IGDACSMC | Automatic class selection (ACS) management class exit |
IGG026DU | Catalog pre-initialisation |
IGG029DM | Process after DADSM SCRATCH failure |
IGG029DU | DADSM SCRATCH pre-initialisation |
IGGDASU3 | DADSM SCRATCH postprocessing |
IGG030DU | DADSM RENAME pre-initialisation |
IGGDARU3 | DADSM RENAME postprocessing |
IGGPRE00
IGGPOST0 |
System provided DADSM pre-processing and post-processing exit routines, associated with the IGGPRE00_EXIT and IGGPOST0_EXIT dynamic exits, for allocate, extend, scratch, partial release and rename functions. |
IGXMSGEX | Customize messages |
NSLETRLI | Nonstandard label processing for input trailers |
NSLETRLO
NSLCTRLO |
Nonstandard label processing for output trailers |
NSLOHDRI
NSLEHDRI |
Nonstandard label processing for input headers |
NSLOHDRO
NSLEHDRO |
Nonstandard label processing for output headers |
NSLREPOS | Volume verification using the dynamic device reconfiguration (DDR) option for nonstandard label processing |
NSLRHDRI | Nonstandard label processing for restarting after a checkpoint |
OMODVOL1
EMODVOL1 |
Volume label editor for open and EOV |
IPCS Exits | |
Exit | Description |
ANALYZE exit | Generate data for contention analysis |
ASCB exit | Generate information related to the address space or ASCB being processed |
BLSUGWDM validity check routine | Command validation routine for IPCS |
Control block formatter exit | Assist in formatting a control block |
Control block status (CBSTAT) exit | Perform analysis and generate condensed output describing information relevant to the debugging process |
CTRACE buffer find exit | Locate the component trace buffers in a dump for a particular component |
CTRACE filter/analysis (CTRF) exit | · Perform statistical analysis of the component trace
· Provide additional component trace filtering · Limit the number of component trace entries processed |
Find exit | Associate a symbol with an AREA or STRUCTURE in a dump |
GTFTRACE filter/analysis exit | · Do statistical analysis of GTF trace records
· Provide additional GTF trace record filtering · Limit the number of GTF trace records processed |
GTFTRACE formatting appendage | Format GTF trace records containing a particular FID and EID format in the user range. |
Model processor formatting (MPF) exit | Dynamically interact with the formatting service to augment its function |
Post-formatting exit | Supply a routine for any type of structure that can be described by a parmlib data statement |
Scan exit | Check the validity of an AREA or STRUCTURE in a dump |
Task control block (TCB) exit | Generate information related to the task control block (TCB) being processed |
Verb exit | Format and print dump datasets created by stand-alone, SVC or SYSMDUMP dumping services |
RMF Exits | |
Exit | Description |
ERBMFDUC | Internal processing |
ERBMFEVT | User sampler |
ERBMFIUC | Monitor I session initialisation |
ERBMFPUS | Post-processor |
ERBMFRUR | Report writer |
ERBMFTUR | Termination |
ERBTRACE | Field tracing |
Thanks, great list for referencing various exit points.