EXIT
Use the EXIT option to provide user-supplied
modules in place of various compiler functions.
INEXIT and LIBEXIT
suboptions to provide modules in place of SYSIN and SYSLIB (or copy library), respectively.
If INEXIT or LIBEXIT is used, the 'Source' view for
your debug session will not be available. If you choose the 'Show Source' feature of 'Switch View'
with Debug for z/OS, it will not work because there is no source file.
For compiler output, use the PRTEXIT suboption to provide a module in
place of SYSPRINT.
To provide a module that will be called for each SYSADATA record immediately after the record has
been written out to the file, use the ADEXIT suboption.
To customize compiler messages (change their severity or suppress them, including
converting FIPS (FLAGSTD) messages to diagnostic messages to which you assign a
severity), use the MSGEXIT suboption. The module that you provide to customize the
messages will be called each time the compiler issues a diagnostic message or a FIPS message.
Default is: NOEXIT
Abbreviations are: NOEX|EX(INX|NOINX,
LIBX|NOLIBX, PRTX|NOPRTX, ADX|NOADX, MSGX|NOMSGX)
You can specify the suboptions in any order, and can separate them by either commas or spaces. If you specify both the positive and negative form of a suboption, the form specified last takes effect. If you specify the same suboption more than once, the last one specified takes effect.
If you specify the EXIT option without specifying at least one suboption,
NOEXIT will be in effect.
You can
specify the EXIT option only at invocation in the JCL PARM field
(under TSO/E, in a command argument) or at installation time. Do not specify the
EXIT option in a PROCESS (CBL) statement.
INEXIT(['str1',]mod1)- The compiler reads source code from a user-supplied program object (where mod1 is the module name) instead of SYSIN.
LIBEXIT(['str2',]mod2)- The
compiler obtains copybooks from a user-supplied program object (where
mod2 is the module name) instead of library-name or SYSLIB.
For use with either
COPYorBASISstatements. PRTEXIT(['str3',]mod3)- The compiler passes printer-destined output to the user-supplied program object (where mod3 is the module name) instead of SYSPRINT.
ADEXIT(['str4',]mod4)- The compiler passes the SYSADATA output to the user-supplied program object (where mod4 is the module name).
MSGEXIT(['str5',]mod5)- The compiler passes the message number, and passes the default severity of a compiler diagnostic message, or the category (as a numeric code) of a FIPS compiler message, to the user-supplied program object (where mod5 is the module name).
The names mod1, mod2, mod3, mod4, and mod5 can refer to the same module.
The suboptions str1, str2, str3, str4, and str5 are character strings that are passed to the program object. These strings are optional. They can be up to 64 characters in length, and you must enclose them in a pair of apostrophes (' '). You can use any character in the strings, but any included apostrophes must be doubled ("). Lowercase characters are folded to uppercase.
If one of str1, str2, str3,
str4, or str5 is specified, that string is passed
to the appropriate user-exit module in the following format, where LL is a halfword
(on a halfword boundary) that contains the length of the string.
LL string
Compiler exit modules that are specified on the EXIT
option can be implemented either in an assembler language or in a high-level programming language
such as COBOL. However, when exits are written in a Language Environment® conforming programming language or Language Environment conforming assembler
language, the exit must be reentrant.
- Compiler exits are run as subprograms instead of main programs.
- Compiler exits must not include logic for explicitly initializing or terminating Language Environment. In particular, exits must
not use the
RTEREUSruntime option, theIGZERREcallable service, or theCEEPIPIcallable service for environment management. - Compiler exits must not use the
STOP RUNstatement.
