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.

For normal CICS tasks, such as those started from a terminal, use any of the following methods listed to set the Language Environment runtime options. For more information about the full order of precedence for Language Environment runtime options see z/OS V1R11.0 Language Environment Programming Guide SA22-7561-10. The methods are shown in the order in which they are processed. Each setting could be overridden by a following one. This is, in effect, a reverse order of precedence.
  1. 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.
  2. 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.
  3. 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.
  4. The user replaceable program DFHAPXPO (applies to XPLINK programs only).
  5. In the CEEUOPT CSECT, where user-supplied application program-level runtime options are located. This CSECT is linked with the application program itself.
  6. 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.
  7. 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

Under CICS many of the Language Environment runtime option settings are ignored. These are all the Fortran-only options plus the following:
  • 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.

Note: Do not use RPTOPTS(ON) in a production environment. There is significant overhead and it causes a large amount of data to be written to the CESE queue.

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.