Parameter values in the assembler user exit

The parameters described in CEEBXITA assembler user exit interface contain different values depending on how the user exit is used. Table 1 and Table 2 describe the possible values for the parameters based on how the assembler user exit is invoked.

Table 1. Parameter values in the assembler user exit (Part 1). The assembler user exit contains these parameter values depending on when it is invoked.
When invoked CEEAUE_ LEN CEEAUE_RETC CEEAUE_RSNC CEEAUE_ FLAGS CEEAUE_A_CC_ PLIST
First enclave within process initialization: Entry

CEEAUE_FUNC = 1

48 0 0 0 Upon entry, CEEAUE_A_CC_ PLIST contains the register 1 value from the operating system. It contains the user parameters. You can alter it in a user exit. Upon return, the CEEAUE_A_CC_ PLIST is processed and merged as the invocation string.
First enclave within process initialization: Return   0, or abend code if CEEAUE_ABND = 1 0, or reason code for CEEAUE_RETC if CEEAUE_ABND = 1 See Note 1. Register 1, used as the new parameter list. CEEAUE_A_CC_ PLIST contains the user parameters. You can alter it in a user exit. Upon return, the CEEAUE_A_CC_ PLIST is processed and merged as the invocation string.
First enclave within process termination: Entry

CEEAUE_FUNC = 2

48 Return code issued by application that is terminating. Reason code that accompanies CEEAUE_RETC. See Note 2.  
First enclave within process termination: Return   If CEEAUE_ABND = 0, the return code placed into register 15 when the enclave terminates.

If CEEAUE_ABND = 1, the abend code.

If CEEAUE_ABND = 0, the enclave reason code.

If CEEAUE_ABND = 1, the abend reason code.

See Note 1.  
Nested enclave initialization: Entry

CEEAUE_FUNC = 3

48 0 0 0 The register 1 value discovered in a nested enclave creation. CEEAUE_A_CC_ PLIST contains the user parameters. You can alter it in a user exit. Upon return, the CEEAUE_A_CC_ PLIST is processed and merged as the invocation string.
Nested enclave initialization: Return   0, or if CEEAUE_ABND = 1, the abend code. 0, or if CEEAUE_ABND = 1, reason code for CEEAUE_RETC. See Note 1. Register 1 used as the new enclave parameter list. CEEAUE_A_CC_ PLIST contains the user parameters. You can alter it in a user exit. Upon return, the CEEAUE_A_CC_ PLIST is processed and merged as the invocation string.
Nested enclave termination: Entry

CEEAUE_FUNC = 4

48 Return code issued by enclave that is terminating. Reason code accompanying CEEAUE_RETC. See Note 2.  
Nested enclave termination: Return   If CEEAUE_ABND = 0, the return code from the enclave.

If CEEAUE_ABND = 1, the abend code.

If CEEAUE_ABND = 0, the enclave reason code.

If CEEAUE_ABND = 1, the enclave reason code.

See Note 1.  
Process termination: Entry

Function code = 5

48 Return code presented to the invoking system in register 15 that reflects the value returned from the "first enclave within process termination". Reason code accompanying CEEAUE_RETC that is presented to the invoking system in register 0 and reflects the value returned from the "first enclave within process termination". See Note 3.  
Process termination: Return   If CEEAUE_ABND = 0, return code from the process.

If CEEAUE_ABND = 1, the abend code.

If CEEAUE_ABND = 0, the reason code for CEEAUE_RETC from the process.

If CEEAUE_ABND = 1, reason code for the CEEAUE_RETC abend reason code.

See Note 1.  
Notes:
  1. CEEAUE_FLAGS:
    • CEEAUE_ABND = 1 if an abend is requested, or 0 if the enclave should continue with termination processing
    • CEEAUE_DUMP = 1 if the abend should request a dump
    • CEEAUE_STEPS = 1 if the abend should abend the step
    • CEEAUE_STEPS = 0 if the abend should abend the task
  2. CEEAUE_FLAGS:
    • CEEAUE_ABTERM = 1 if the application is terminating with an Language Environment return code modifier of 2 or greater, or 0 otherwise
    • CEEAUE_ABND = 1 if an abend is requested, or 0 if the enclave should continue with termination processing
    • CEEAUE_DUMP = 0
    • CEEAUE_STEPS = 0
  3. CEEAUE_FLAGS:
    • CEEAUE_ABTERM = 1 if the last enclave is terminating abnormally (that is, a Language Environment return code modifier is 2 or greater). This reflects the value returned from the "first enclave within process termination".
    • CEEAUE_ABND = 1 if an abend is requested, or 0 if the enclave should continue with termination processing "first enclave within process termination" (function code 2).
    • CEEAUE_DUMP = 0
    • CEEAUE_STEPS = 0
Table 2. Parameter values in the assembler user exit (Part 2). The assembler user exit contains these parameter values depending on when it is invoked.
When invoked CEEAUE_A_WORK CEEAUE_ A_OPTIONS CEEAUE_ USERWD CEEAUE_ A_AB_ CODES CEEAUE_ FBCODE CEEAUE_PAGE
First enclave within process initialization: Entry

CEEAUE_FUNC = 1

Address of a 256-byte work area of binary zeros.   0   0 Minimum number of storage bytes to be allocated for PL/I BASED variables (default = 32768).
First enclave within process initialization: Return   Pointer to address of a halfword prefixed character string containing runtime options, or 0. The value of CEEAUE_ USERWD for all subsequent exits. Pointer to the abend codes table, or 0.   User specified PAGE value. Minimum number of storage bytes to be allocated for PL/I BASED variables (default = 32768).
First enclave within process termination: Entry

CEEAUE_FUNC = 2

Address of a 256-byte area of binary zeros.   Return value from previous exit.   Feedback code causing termination.  
First enclave within process termination: Return     The value of CEEAUE_ USERWD for all subsequent exits.      
Nested enclave initialization: Entry

CEEAUE_FUNC = 3

Address of a 256-byte work area of binary zeros.   Return value from previous exit.   0 Minimum number of storage bytes to be allocated for PL/I BASED variables (default = 32768).
Nested enclave initialization: Return   Pointer to fullword address that points to a halfword prefixed length string containing runtime options, or 0. The value of CEEAUE_ USERWD for all subsequent exits. Pointer to abend codes table, or 0.   User specified PAGE value. Minimum number of storage bytes to be allocated for PL/I BASED variables (default = 32768).
Nested enclave termination: — Entry

CEEAUE_FUNC = 4

Address of a 256-byte work area of binary zeros.   Return value from previous exit.   Feedback code causing termination.  
Nested enclave termination: Return     The value of CEEAUE_ USERWD for all subsequent exits.      
Process termination: Entry

CEEAUE_FUNC = 5

Address of a 256-byte work area of binary zeros.   Return value from previous exit.   Feedback code causing termination.  
Process termination: Return     The value of CEEAUE_ USERWD for all subsequent exits.