IDENTIFICATION DIVISION.
PROGRAM-ID. PGM1
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
EXEC CICS HANDLE ABEND LABEL(LBL1) END-EXEC.
CALL "PGM2" USING DFHEIBLK DFHCOMMAREA
EXEC CICS RETURN END-EXEC.
LBL1.
EXEC CICS RETURN END-EXEC.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM2
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DATA1 PIC 9 VALUE 0.
01 DATA2 PIC 9 VALUE 1.
PROCEDURE DIVISION.
* Force a DIVIDE-BY-ZERO exception
COMPUTE DATA1 = DATA2 / DATA1
GOBACK.
In this example the setting of the CBLPSHPOP option will have no effect on VS COBOL II compatibility. If you specify CBLPSHPOP(ON), no HANDLE ABEND will be in effect for PGM2 because the CICS PUSH HANDLE performed by Language Environment will suspend the effects of the CICS HANDLE ABEND issued in PGM1. When the divide by zero occurs in PGM2, an ASRA abend occurs because there is no HANDLE ABEND active.
If you specify CBLPSHPOP(OFF), the divide by zero in PGM2 will cause CICS to ask Language Environment to branch to LBL1 in PGM1; however, Language Environment will not permit branches to labels across program boundaries. As with CBLPSHPOP(ON), the program will end with an ASRA abend.