Defining runtime options for Language Environment
Language Environment® provides runtime options to control your program's processing. Under CICS®, exactly which options apply to the execution of a particular program depends not only on the program, but also on how it is run.
Java™ programs and programs initiated from the Web use the Language Environment preinitialization module, CEEPIPI. This has its own version of the CEEDOPT CSECT and such programs get their runtime options from this CSECT.
- The CEEDOPT CSECT built into CEECCICS contains the IBM® Language Environment default runtime options. You can change these default runtime options by using the CEEWCOPT sample job located in SCEESAMP. This option is supported but using the CEEPRMxx parmlib member to specify runtime options is the preferred and easiest method.
- The CEEPRMxx parmlib member provides support for the CEECOPT option group which is the preferred method for setting your default Language Environment runtime options for CICS.
- In the CEEROPT CSECT, where the region-wide default options are located. This CSECT is link-edited into a load module of the same name and placed in a data set in the DFHRPL library concatenation for the CICS job.
- The user replaceable program DFHAPXPO (applies to XPLINK programs only).
- In the CEEUOPT CSECT, where user-supplied application program-level runtime options are located. This CSECT is linked with the application program itself.
- In the application source code using the programming language
options statements, as follows:
- In C programs, through the #pragma runopts statement in the program
source. For example:
#pragma runopts(rptstg(on))
- In PL/I programs, through the PLIXOPT declaration statement within
the program. For example:
DECLARE PLIXOPT CHARACTER(18) VARYING STATIC EXTERNAL INIT('RPTOPTS(ON) NOSTAE');
Note: There is no source code mechanism that allows the setting of runtime options within COBOL programs or within C++ programs. - In C programs, through the #pragma runopts statement in the program
source. For example:
- In the Language Environment options specified in a debugging profile. For more information, see Debugging profiles.
In most installations, the first method in the previous list is unavailable to application programmers, and the second is often unavailable. However, application programmers can use method 4 or method 5. Choose one method only; do not attempt to use both method 4 and method 5. For information about generating a CEEUOPT CSECT to link with your application, see z/OS Language Environment Customization.
Both CEEDOPT and CEEROPT are able to set any option so that it cannot be overridden by a later specification.
For more information about how to specify Language Environment runtime options and also for their meanings, see z/OS Language Environment Programming Reference.
Runtime options ignored under CICS
- ABPERC
- AIXBLD
- CBLOPTS
- CBLQDA
- DEBUG
- EXECOPS
- INTERRUPT
- LIBRARY
- MSGFILE
- NONIPTSTACK
- PLITASKCOUNT
- POSIX (unless XPLINK or Java program)
- RTEREUS
- RTLS
- SIMVRD
- THREADHEAP
- VERSION
Determining which runtime options were used
If you want to know which Language Environment runtime options were in effect when your program ran, specify the option RPTOPTS(ON). When the program ends this produces a list of all the runtime options used. The list is written to the CESE TD queue. The list contains not only the actual settings of the options, but also their origin, that is, whether they are the default for the installation or the region, or whether they were set by the programmer or in one of the exits.
Runtime options in child enclaves: performance considerations
Under CICS the execution of a CICS LINK command creates what Language Environment calls a Child Enclave. A new environment is initialized and the child enclave gets its runtime options. These runtime options are independent of those options that existed in the creating enclave.
Frequent use of EXEC CICS LINK, and the individual setting of many runtime options, could affect performance. A static or dynamic call does not incur these overheads. If you must use CEEUOPT to specify options, specifying only those options that are different from the defaults improves performance.
Something similar happens when a CICS XCTL command is executed. In this case we do not get a child enclave, but the existing enclave is terminated and then reinitialized with the runtime options determined for the new program. The same performance considerations apply.