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.
この例では、CBLPSHPOP オプションの設定は VS COBOL II の互換性に影響を与えません。CBLPSHPOP(ON) を指定した場合、言語環境プログラムによって実行される CICS PUSH HANDLE が、PGM1 内で 発行される CICS HANDLE ABEND の影響を延期するため、PGM2 について HANDLE ABEND が有 効になりません。PGM2 内でゼロ除算が発生すると、アクティブの HANDLE ABEND がないため、ASRA 異常終了が 発生します。
CBLPSHPOP(OFF) を指定した場合、PGM2 内でゼロ除算が発生する と、CICS は言語環境プログラムに PGM1 内の LBL1 へ分岐するように要請しますが、言語環境プログラムは プログラム境界を超えるラベルへの分岐を許可しません。CBLPSHPOP(ON) の場合と同様に、プログラムは ASRA 異常終了で終了します。