EXIT
Use the EXIT
option to provide user-supplied
modules in place of various compiler functions.
For compiler input, use the INEXIT
and LIBEXIT
suboptions
to provide modules in place of SYSIN and SYSLIB (or copy library),
respectively. 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
COPY
orBASIS
statements. 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
RTEREUS
runtime option, theIGZERRE
callable service, or theCEEPIPI
callable service for environment management. - Compiler exits must not use the
STOP RUN
statement.