COBOL2002 ユーザーズガイド

[目次][用語][索引][前へ][次へ]

32.11.1 CBLEURERROR

EURを使用した通信節による帳票出力機能の使用時に,出力された実行時メッセージのエラー情報(COBOLメッセージ番号,エラーコード)を取得します。

形式
CALL  'CBLEURERROR'  USING  引数1

引数
引数1は,次に示す形式の集団項目です。

表32-11 CBLEURERRORサービスルーチンの集団項目

記述形式 内容
01 データ名01.
CALL文のUSINGで指定するエラー情報取得領域の名前を指定します。
 02 データ名02  PIC S9(9) USAGE COMP.
COBOLメッセージ番号です。
 02 データ名03  PIC 9(9)  USAGE COMP.
エラーコードです。
 02 FILLER       PIC X(528).
予備。このサービスルーチンを呼び出す前にLOW-VALUE(X'00')を設定しておきます。
引数の指定,および形式が異なる場合の動作は保証しません。

戻り値
0:エラー情報が取得できた場合
100:エラー情報がない場合
-1:エラー情報の取得に失敗した場合

規則
  • CBLEURERRORサービスルーチンを呼び出すと,直前に実行されたEURを使用した通信節による帳票出力機能の通信文で出力されるエラーメッセージに対するエラー情報(COBOLメッセージ番号,エラーコード)が引数1に設定されます。
    引数1に設定されるエラー情報を次に示します。

    表32-12 引数1に設定されるエラー情報の説明

    エラー情報 説明
    COBOLメッセージ番号 直前に実行されたEURを使用した通信節による帳票出力機能の通信文で出力されたKCCC5104R-SからKCCC5115R-WまでのSレベル以下のメッセージ番号が設定されます。メッセージについては,マニュアル「COBOL2002 メッセージ」を参照してください。
    エラーコード COBOL EUR 連携ライブラリが返したリターンコード詳細が設定されます。リターンコード詳細については,マニュアル「COBOL EUR 連携ガイド」のエラーコードの記述を参照してください。
  • CBLEURERRORサービスルーチンの戻り値は,RETURN-CODE特殊レジスタで参照できます。
  • エラーコードは,実行時メッセージKCCC5107R-S,KCCC5108R-S,またはKCCC5114R-W,KCCC5115R-Wが出力された場合に設定されます。それ以外の実行時メッセージの場合は,エラーコードには0が設定されます。
  • 次に示す場合,CBLEURERRORサービスルーチンの戻り値は100を返します。CBLEURERRORサービスルーチンの戻り値が100の場合,COBOLメッセージ番号は0,エラーコードには0が設定されます。
    ・直前に実行された通信文でエラーが発生していない場合
    ・通信文を実行しないでCBLEURERRORサービスルーチンを呼び出した場合
    ・CBLEURERRORサービスルーチンを呼び出したあとに通信文を実行しないで,再度,CBLEURERRORサービスルーチンを呼び出した場合
  • CBLEURERRORサービスルーチンでエラーが発生し,エラー情報の取得に失敗した場合,戻り値は-1を返します。

使用例
       IDENTIFICATION DIVISION.
       PROGRAM-ID. SAMPLE2.
                :
       DATA DIVISION.
       WORKING-STORAGE SECTION.
                :
       01  OP-1.
         02 ERR-MSGNUMBER     PIC S9(9) USAGE COMP.
         02 ERR-EURERRORCODE  PIC 9(9)  USAGE COMP.
         02 FILLER            PIC X(528) VALUE LOW-VALUE.
       01  STMT-PROC          PIC X(20).
       01  戻り値             PIC S9(9) USAGE COMP.
                    :
           COPY MDC1PCO.
                :
       COMMUNICATION  SECTION.
       CD  PRINT-O  FOR  OUTPUT  WS
           MAP  NAME  IS  PRINT-MAP
           MAPPING  MODE  IS  PRINT-MAPMODE
           STATUS  KEY  IS  PRINT-KEY
           DATA  ABSENCE  CODE  IS  PRINT-ABSENCE
           SYMBOLIC  TERMINAL  IS  PRINT-TERMINAL.
                :
       PROCEDURE DIVISION.
                :
           MOVE 'PRT001へMDC1PC6G帳票を送信' TO STMT-PROC.   … 2.
           MOVE  'MDC1PC6G' TO  PRINT-MAP.
           MOVE  'PRT001'  TO  PRINT-TERMINAL.
           SEND  PRINT-O  FROM  MDC1PCO  WITH  EMI.          … 3.
           IF PRINT-KEY NOT = '00000'
             PERFORM エラー処理                              … 1.
                :
           STOP RUN.                                         … 6.
                : 
                :
       エラー処理.                                           … 4.
             CALL 'CBLEURERROR' USING OP-1
             MOVE RETURN-CODE TO 戻り値
             EVALUATE 戻り値
               WHEN  0
                 DISPLAY STMT-PROC                           … 5.
      *>              << エラー情報判定,リカバリ処理 >>
                                 : 
               WHEN  -1
                 DISPLAY 'CBLEURERRORが失敗しました。'
             END-EVALUATE.
                :
この例では,3.のSEND文実行でエラーが発生した場合に,1.のPERFORM文から,4.のエラー処理段落が実行されます。ここでCBLEURERRORサービスルーチンを呼び出し,エラー情報を取得します。2.のように通信文実行ごとに実行状態を退避しておくと,5.で,どの実行状態でエラーが発生したかがわかります。