|
CEE3AB2 requests that Language Environment® terminate
the enclave with an abend and user-defined reason code. The issuing of the abend can
be either with or without clean-up, with the type of dumps the user
requires. There is no return from this service, nor is there any condition
that is associated with it.
Syntax
>>-CEE3AB2--(--abcode--,--reasoncode--,--clean-up--)-----------><
- abcode (input)
- A fullword integer, no greater than 4095, specifying the abend
code that is issued. Under CICS®,
this fullword integer is converted to EBCDIC.
- reasoncode (input)
- A fullword integer, specifying the reason code that is issued
by the user. If no reason code is specified, the reason code is 0.
- clean-up (input)
- Indicates if the abend should result in clean-up of the enclave’s
resources. The acceptable values for clean-up are
as follows:
- 0
- Issue the abend without clean-up
- 1
- Issue the abend with normal enclave termination processing
- 2
- Issue the abend with enclave termination processing honoring the
TERMTHDACT runtime option for taking a system dump of the user address
space but suppressing the CEEDUMP
- 3
- Issue the abend with enclave termination processing suppressing
both the CEEDUMP and system dump if requested by the TERMTHDACT runtime
option
- 4
- Issue the abend with enclave termination processing honoring the
TERMTHDACT runtime option for taking a CEEDUMP but suppressing the
system dump
- 5
- Issue the abend with enclave termination processing forcing a
system dump of the user address space and suppressing the CEEDUMP
If an illegal value for clean-up is passed,
the abend is issued without clean-up.
If clean-up is
0, no Language Environment dump
is generated. A system dump, however, is requested when issuing the
abend. Under CICS, a transaction
dump is taken. To get a dump under CMS, specify FILEDEF SYSABEND PRINTER
or FILEDEF SYSUDUMP PRINTER.
If clean-up is
0, Language Environment condition
handling is disabled for the current enclave and termination activities
are not performed. Event handlers are not driven; Debug Tool is not
invoked; user exits are not invoked; and user-written condition handlers
are not invoked.
When clean-up is
1, the abend is processed in the same manner as if it were a non-Language Environment abend.
Its processing is affected by the ABPERC and TRAP options, the filedef
abends percolated in the assembler user exit, and other elements of
the environment related to abend processing. In particular, the condition
handler can intercept the abend and give the application a chance
to handle the abend. If the condition remains unhandled, normal termination
activities are performed: information such as a Language Environment dump
is produced, depending on the setting of the TERMTHDACT option; event
handlers are driven; Debug Tool is
invoked; and user exits are invoked. Assembler user exit settings
control if the application actually terminates with an abend.
When clean-up is
2, it follows the abend processing as when clean-up is
1 except the CEEDUMP is suppressed.
When clean-up is
3, it follows the abend processing as when clean-up is
1, however CEEDUMP and system dumps are both suppressed
When clean-up is
4, it follows the abend processing as when clean-up is
1, however only the system dumps are suppressed.
When clean-up is
5, it follows the abend processing as when clean-up is
1, however forcing a system dump to be taken and suppressing the CEEDUMP.
z/OS UNIX consideration - In a multithreaded environment, CEE3AB2 applies to the enclave.
Usage notes - Language Environment abend
codes are usually in the range of 4000 (X’FA0’) to 4095 (X’FFF’).
Use the range of 0 to 3999 to avoid confusion with Language Environment abend
codes. The value that is specified for the abend code is passed directly
to the ABEND macro without further verification.
- When TRAP(OFF) is specified, CEE3AB2 behaves in a similar manner
to clean-up 0.
- In a non-CICS environment, a system dump of the user address space
is taken only if a SYSMDUMP, SYSUDUMP, or SYSABEND DD card is present.
Examples - Following is an example of CEE3AB2 called by C/C++.
/*Module/File Name: EDC3AB2 */
/*********************************************************************/
/* */
/* THIS EXAMPLE CALLS CEE3AB2 TO TERMINATE THE ENCLAVE WITH AN ABEND */
/* AFTER CLEAN-UP TAKES PLACE. USER COULD ALSO SPECIFY THEIR OWN */
/* REASON CODE. */
/* */
/*********************************************************************/
#include <leawi.h>
int main(void) {
_INT4 code,reason,cleanup;
code = 1234; /* Abend code to issue */
reason = 9; /* User defined reason code*/
cleanup = 3; /* Specify 3, for an ABEND with cleanup & with no dumps*/
CEE3AB2(&code,&reason,&cleanup);
}
- Following is an example of CEE3AB2 called by COBOL.
CBL LIB,QUOTE
**********************************************
*Module/File Name: IGZTAB2
**********************************************
** Function: CEE3AB2 - Terminate enclave **
** with an abend and user defined **
** reason code **
** **
** In this example, CEE3AB2 is called to **
** terminate the enclave with an abend and **
** a user defined reason code along with **
** Language Environment cleanup **
**********************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. CBL3AB2.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 ABDCODE PIC S9(9) BINARY.
01 RESCODE PIC S9(9) BINARY.
01 TIMING PIC S9(9) BINARY.
PROCEDURE DIVISION.
PARA-CBLMGET.
**********************************************
** 1234 is the abend code to be issued, **
** 9 is the reason code for the abend. **
** A timing of four requests an abend **
** with clean-up. **
**********************************************
MOVE 1234 TO ABDCODE.
MOVE 9 TO RESCODE.
MOVE 4 TO TIMING.
CALL "CEE3AB2" USING ABDCODE, RESCODE, TIMING.
GOBACK.
- Following is an example of CEE3AB2 called by PL/I.
*PROCESS MACRO;
/***************************************************/
/*Module/File Name: IBM3AB2 */
/*******************************************************************/
/** **/
/** Function: CEE3AB2 - Terminate enclave with abend and user **/
/** defined reason code **/
/** **/
/** In this example, CEE3AB2 is called to terminate the enclave **/
/** with an abend and user defined reason code along with **/
/** Language Environment cleanup **/
/** **/
/*******************************************************************/
PLI3AB2: PROCEDURE OPTIONS (MAIN) REORDER;
%INCLUDE CEEIBMAW;
%INCLUDE CEEIBMCT;
DCL ABDCODE REAL FIXED BINARY(31,0);
DCL RESCODE REAL FIXED BINARY(31,0);
DCL TIMING REAL FIXED BINARY(31,0);
ABDCODE = 3333; /* Choose code to abend with */
RESCODE = 9; /* User defined reason code */
TIMING = 4; /* Specify 4, for an abend with */
/* cleanup and no dumps */
/*************************************************/
/* Call CEE3AB2 to request an abend 3333 */
/* reason code 9 with cleanup */
/*************************************************/
CALL CEE3AB2 ( ABDCODE, RESCODE, TIMING );
END PLI3AB2;
|