CEERELES macro — Dynamically delete a routine

CEERELES is used to dynamically delete a routine. The macro invocation destroys the following registers:
  • R0
  • R1
  • R14
  • R15
When the macro code is expanded and run, the following assumptions are made:
  • R12 points to the CAA.
  • R13 has a standard Language Environment DSA available.
Read syntax diagramSkip visual syntax diagram
Syntax

>>-label--CEERELES--+---------------+--,------------------------>
                    '-TOKEN=--token-'      

                             .-MF=I-----------------.   
>--+-------------------+--,--+----------------------+----------><
   '-FEEDBACK=--fbcode-'     +-+------+-------------+   
                             | '-MF=L-'             |   
                             '-MF=(E,--ctrl_addr--)-'   

label
The assembler label you give to this invocation of the macro. A label is required if MF=L is specified; otherwise, it is optional.
TOKEN=token
The name of a variable that contains the token returned by the CEEFETCH macro. If MF=I or MF=L, you must specify TOKEN.
FEEDBACK=fbcode
The name of a variable to contain the resulting 12-byte feedback token. If you omit this parameter, any nonzero feedback token that results is signaled. The following symbolic conditions might be returned from this service:
Symbolic feedback code Severity Message number Message text
CEE000 0 The service completed successfully.
CEE38N 3 3351 An event handler was unable to process a request successfully.
CEE39K 1 3380 The target load module was not recognized by Language Environment.
CEE3DG 3 3504 Delete service request for module-name was unsuccessful.
CEE3E0 3 3520 The token passed to the CEERELES macro was invalid.
MF=I
Indicates the immediate form of the macro. The immediate form generates an inline parameter list, and generates nonreentrant code.
MF=L
Indicates the list form of the macro. A remote control program parameter list for the macro is defined, but the service is not invoked. The list form of the macro is usually used with the execute form of the macro.
MF=(E,ctrl_addr)
Indicates the execute form of the macro. The service is invoked using the remote control program parameter list addressed by ctrl_addr (usually defined by the list form of the macro).

Only one of the MF=I, MF=L, or MF=(E, ctrl_addr) parameters can be coded for the same macro invocation. If none is coded, the immediate form of the macro is used.

Usage notes:
  1. Language Environment issues the appropriate operating system delete command and performs the necessary dynamic updates to accommodate the deleted load module.
  2. Language Environment performs any language-related cleanup required.
  3. This macro should not be used for DLLs.
  4. In a multithread environment, using a CEEFETCH / BALR (or BASSM) / CEERELES sequence on more than one thread is not supported if the target routine is the same COBOL routine, even when the COBOL routine is enabled for multithreading. COBOL does not allow a CANCEL of a routine that is active on another thread.
  5. In a multithread environment, using a CEEFETCH / BALR (or BASSM) / CEERELES sequence on more than one thread is not supported if the target routine is the same PL/I routine.