Rational Developer for System z
Enterprise COBOL for z/OS バージョン 4.1 プログラミング・ガイド


例: CICS HANDLE を使用したエラー処理

次の例は、COBOL プログラムでの CICS HANDLE の使用を示しています。

プログラム A には CICS HANDLE CONDITION コマンドがありますが、プログラム B には CICS HANDLE コマンドはありません。プログラム A はプログラム B を呼び出します。プログラム A はネストされたプログラム A1 も呼び出します。条件は 3 つのシナリオのいずれかで取り扱われます。

(1)
CBLPSHPOP(ON): プログラム B の CICS READ コマンドに よってある条件が引き起こされても、その条件はプログラム A では処理されません (実行 時に CICS PUSH HANDLE が実行されたため、HANDLE 指定が 中断されたことが原因です)この条件はトランザクション異常終了となります。
(2)
CBLPSHPOP(OFF): プログラム B の CICS READ コマンド によってある条件が引き起こされても、その条件はプログラム A では処理されません (実行時に、LABEL オプションを指定した CICS HANDLE コマンドを 使用して、プログラム間分岐の試みを診断します)。この条件はトランザクション異常終了となります。
(3)
ネストされたプログラム A1 の CICS READ コマンドによって条件が 引き起こされた場合、制御のフローはラベル ERR-1 に移り、予測できない結果が生じます。
***********************************************************
*  Program A                                              *
***********************************************************
 ID DIVISION.
 PROGRAM-ID. A.
 . . .
 PROCEDURE DIVISION.
     EXEC CICS HANDLE CONDITION
               ERROR(ERR-1)
               END-EXEC.
     CALL 'B' USING DFHEIBLK DFHCOMMAREA.
     CALL 'A1'.
     . . .
 THE-END.
     EXEC CICS RETURN END-EXEC.
 ERR-1.
 . . .
* Nested program A1.
 ID DIVISION.
 PROGRAM-ID. A1.
 PROCEDURE DIVISION.
     EXEC CICS READ              (3)
               FILE('LEDGER')
               INTO(RECORD)
               RIDFLD(ACCTNO)
               END-EXEC.
 END PROGRAM A1.
 END PROGRAM A.
*
***********************************************************
*  Program B                                              *
***********************************************************
 ID DIVISION.
 PROGRAM-ID. B.
 . . .
 PROCEDURE DIVISION.
     EXEC CICS READ              (1)  (2)
               FILE('MASTER')
               INTO(RECORD)
               RIDFLD(ACCTNO)
               END-EXEC.
     . . .
 END PROGRAM B.

ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)