Exit XPCHAIR
Exit XPCHAIR is invoked before a HANDLE ABEND LABEL routine is given control.
This situation occurs only when a program abend causes a branch to an internal abend routine. When the HANDLE ABEND request specifies PROGRAM, exit XPCFTCH is invoked (see Exit XPCFTCH). You can use the XPCHAIR exit to supply an alternative handle abend address. If the exit sets a return code of zero, or an alternative address of zero, CICS passes control to the specified internal routine of the application program
This exit is never invoked for a C or C++ program that is compiled with the XPLINK option, or for an AMODE(64) program.
If a modified entry address is
supplied:
- The code that is invoked receives control in the execution key that the internal abend routine would have received control in; that is, the key in force when the EXEC CICS HANDLE ABEND LABEL command was issued.
- The resume address is placed in register 14 for a COBOL application
or register 15 for an Assembler application. If your application runs
in a mixed environment, your exit program might need to set up its
own base register. For example, you could use the following code to
set up addressability:
BASSM 15,0 USING *,15
- When invoked
- Before a HANDLE ABEND routine is given control.
- Exit-specific parameters
-
- UEPPCDS
- Address of a storage area that contains program and terminal related
information, and that can be mapped using the DSECT DFHPCUE. When
XPCHAIR is invoked, the following DFHPCUE fields are significant:
- PCUE_CONTROL_BITS
- 1-byte flag field. A setting of PCUECBTE indicates that the transaction is linked to a terminal.
- PCUE_TASK_NUMBER
- 3-character packed decimal field that contains the task number.
- PCUE_TRANSACTION_ID
- 4-character field that contains the transaction ID.
- PCUE_TERMINAL_ID
- 4-character field that contains the terminal ID (if any).
- PCUE_PROGRAM_NAME
- 8-character field that contains the name of the program that issued the HANDLE ABEND LABEL command.
- PCUE_LOGICAL_LEVEL
- Fullword that contains the program logical level.
- PCUE_BRANCH_ADDRESS
- Fullword. Use this field to supply the address of an alternate abend routine. Set the top bit to specify that the alternate abend routine is to run AMODE (31).
- UEPTACB
- Address of the transaction abend control block (TACB) for the
abend. If the abend occurred because of a program check, the information
in the TACB includes:
- The program status word (PSW).
- The registers at the time of the abend.
- Details of the subspace, access registers, and vector registers current at the time of the abend.
- The Breaking Event Address Register (BEAR).
- The Translation Exception Address (TEA)
- Return codes
-
- UERCNORM
- Continue processing.
- UERCPURG
- Task purged during XPI call.
- UERCMEA
- The address of an alternate abend routine is supplied.
- XPI calls
- All can be used.