Errors during condition handling

Every effort should be made to ensure that further exceptions do not occur during the condition handler process. However, errors may still occur. To identify the state (or point in time) of the Language Environment condition manager, a state setting is contained in the CIB. The valid states, constant values, and actions taken by the Language Environment condition manager are listed in Table 1.

When a language-specific exception handler determines that it is safe to incur a nested condition, it should alter the CEECIB state variable to indicate nested conditions are tolerated (cib_state_recursion).

Table 1. CEECIB State Variable, Constant values, and associated actions
State Value Value Variable Meaning Condition Manager Actions with Nested Condition
cib_state_enable 1 The language-specific enablement handler is in control. This is set by the Language Environment condition manager. Terminate the enclave with abend 4087-1.
cib_state_hdl 2 A user condition handler, registered from CEEHDLR, is in control. This is set by the Language Environment condition manager. Terminate the enclave with abend 4087-2.
cib_state_memb 3 A language-specific exception handler is in control. This is set by the Language Environment condition manager. Terminate the enclave with abend 4087-3.
cib_state_SF0 4 A language-specific exception handler is in control for stack frame zero. This is set by the Language Environment condition manager. Terminate the enclave with abend 4087-4.
cib_state_evnt 5 A language-specific exception handler is in control for incidental service. This is set by the Language Environment condition manager. Terminate the enclave with abend 4087-5.
cib_state_ipat 6 The debug tool is in control. This is set by the Language Environment condition manager. Call the debug tool event handler indicating this event, then terminate the enclave with abend 4087-6.
cib_state_msg 7 Language Environment message services are being called by the Language Environment condition manager; this is set by the Language Environment condition manager. Terminate the enclave with abend 4087-7.
cib_state_dump 8 Used when traceback or dump services are being called. Terminate the enclave with abend 4087-8.
cib_state_Memb _AR_MODE 9 Used for member processing when recursion is allowed. While in this state, the Language Environment condition manager tolerates the occurrence of a nested condition.
cib_state_ab_term_exit 10 Used when an abnormal termination exit is called; the cib_state_ab_term_exit variable contains the name of the exit. End the enclave with abend 4087-A.
cib_state_recursion 100 A language-specific user handler is in control, such as a PL/I On Unit. This value is set by the language-specific exception handler. While in this state, the Language Environment condition manager tolerates the occurrence of a nested condition. This is set by subordinate condition handlers and debug tools when calling user code. Tolerate nested conditions.