CEELRR macro — Initialize or terminate Language Environment library routine retention

CEELRR is used to tell Language Environment to initialize and terminate library routine retention. The macro generates reentrant code.

Read syntax diagramSkip visual syntax diagram
Syntax

>>-label--CEELRR--ACTION=--+-INIT-+--+-------------------+-----><
                           '-TERM-'  |           .-NO--. |   
                                     '-, XPLINK--+-YES-+-'   

label
Assembler label on this macro generation.
ACTION=
The action to be performed by Language Environment with regard to library routine retention. Valid values are INIT and TERM. A value of INIT tells Language Environment to initialize library routine retention. A value of TERM tells Language Environment to terminate library routine retention. You must specify the ACTION value.
XPLINK=

The XPLINK keyword allows the application to specify whether XPLINK applications are permitted under the LRR environment. Valid values are YES and NO. When XPLINK applications are run under an LRR environment, the region size may need to be increased because an additional load module CELHV003 is kept in memory.

For ACTION=INIT, if the XPLINK= keyword is specified, valid values are YES or NO. If omitted, the default for the XPLINK= keyword is NO.

For ACTION=TERM, if the XPLINK= keyword is specified, it is ignored.

Usage notes:
  1. The macro must be used in an assembler routine that is not Language Environment-conforming.
  2. The contents of the following registers are destroyed by the macro invocation:
    • R14
    • R15: Upon return, contains the return code
    • R0
    • R1
  3. The code generated by the macro expansion assumes that R13 has a standard RSA available.
  4. One of the following return codes is put in R15 upon completion of the code generated by the CEELRR macro with ACTION=INIT:
    0
    Library routine retention was successfully initialized.
    4
    Library routine retention is already initialized. No action was taken.
    8
    Library routine retention was not initialized; the parameter list is not recognized.
    12
    Library routine retention was not initialized due to one of the following problems:
    • There was insufficient storage.
    • There was an error in an attempt to load CEEBINIT or CEEBLIBM.
    16
    Library routine retention was not initialized because Language Environment is currently initialized. This return code can occur in the following example scenarios:
    • A program that is running with Language Environment calls an assembler program that uses CEELRR with ACTION=INIT.
    • An assembler program calls IGZERRE to initialize a reusable environment, and then it uses CEELRR with ACTION=INIT.
    • A reusable environment is established with the RTEREUS runtime option and a call is made to an assembler program that uses CEELRR with ACTION=INIT.
    20
    Library routine retention was not initialized because the Language Environment preinitialized environment has been established and is dormant. This return code can occur in the following example scenarios:
    • An assembler program calls CEEPIPI to preinitialize Language Environment, and then it uses CEELRR with ACTION=INIT.
    • An assembler program uses the PL/I preinitialize program interface, and then it uses CEELRR with ACTION=INIT.
  5. One of the following return codes is put in R15 upon completion of the code generated by the CEELRR macro with ACTION=TERM:
    0
    Library routine retention was successfully terminated. All resources associated with library routine retention were freed.
    4
    Library routine retention is not initialized. No action was taken.
    8
    Library routine retention was not terminated; the parameter list is not recognized.
    16
    Library routine retention was not terminated because Language Environment is currently initialized. This return code can occur in the following example scenarios:
    • A program that is running with Language Environment calls an assembler program that uses CEELRR with ACTION=TERM.
    • An assembler program calls IGZERRE with the initialize function, and then it uses CEELRR with ACTION=TERM.
    • A reusable environment is established with the RTEREUS runtime option and a call is made to an assembler program that uses CEELRR with ACTION=TERM.
    20
    Library routine retention was not terminated because the Language Environment preinitialized environment has been established and is dormant. This return code can occur in the following example scenarios:
    • An assembler program calls CEEPIPI to preinitialize Language Environment, and then it uses CEELRR with ACTION=TERM.
    • An assembler program uses the PL/I preinitialize program interface, and then it uses CEELRR with ACTION=TERM.