COBOL2002 使用の手引 手引編


29.9.1 CBLXMAPERROR(AIX(32)で有効)

CBLXMAPERRORサービスルーチンは,XMAP3を使用した書式印刷機能,XMAP3を使用した通信節による画面操作・帳票出力機能で,出力される実行時メッセージのエラー情報(COBOLメッセージ番号,エラーコード)を取得します。

形式
CALL  'CBLXMAPERROR'  USING  引数1
引数

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

表29‒6  CBLXMAPERRORサービスルーチンの集団項目

記述形式

内容

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:エラー情報の取得に失敗した場合

規則
  • CBLXMAPERRORサービスルーチンを呼び出すと,直前に実行されたXMAP3を使用した書式印刷機能の入出力文,またはXMAP3を使用した通信節による画面操作・帳票出力機能の通信文で出力されるエラーメッセージに対するエラー情報(COBOLメッセージ番号,エラーコード)が引数1に設定されます。また,XMAP3を使用した書式印刷機能でFILE STATUS句を指定した場合でも,該当する実行時メッセージのエラー情報が設定されます。

    引数1に設定されるエラー情報を次に示します。

    表29‒7 引数1に設定されるエラー情報の説明

    エラー情報

    説明

    COBOLメッセージ番号

    直前に実行されたXMAP3を使用した書式印刷機能の入出力文,またはXMAP3を使用した通信節による画面操作・帳票出力機能の通信文で出力されたKCCC3401R-SからKCCC3418R-S,またはKCCC5000R-WからKCCC5051R-WまでのSレベル以下のメッセージ番号が設定されます。メッセージについては,マニュアル「COBOL2002 メッセージ」を参照してください。

    エラーコード

    XMAP3が返したエラー詳細コードです。XMAP3のエラー詳細コードについては,XMAP3のマニュアル「画面・帳票サポートシステム XMAP3 開発・実行ガイド」またはマニュアル「XMAP3 Version 5 画面・帳票サポートシステム XMAP3 実行ガイド」のリターンコードの説明を参照してください。

  • CBLXMAPERRORサービスルーチンの戻り値は,RETURN-CODE特殊レジスタで参照できます。

  • エラーコードは,実行時メッセージKCCC3416R-S,KCCC3417R-S,KCCC5007R-S,KCCC5008R-S,またはKCCC5040R-S〜KCCC5051R-Wが出力された場合に設定されます。それ以外の実行時メッセージの場合は,エラーコードには0が設定されます。

  • 次に示す場合,CBLXMAPERRORサービスルーチンの戻り値は100を返します。CBLXMAPERRORサービスルーチンの戻り値が100の場合,COBOLメッセージ番号,エラーコードは0が設定されます。

    ・直前に実行された入出力文,通信文でエラーが発生していない場合

    ・入出力文,通信文を実行しないでCBLXMAPERRORサービスルーチンを呼び出した場合

    ・CBLXMAPERRORサービスルーチンを呼び出したあとに入出力文,通信文を実行しないで,再度,CBLXMAPERRORサービスルーチンを呼び出した場合

  • CBLXMAPERRORサービスルーチンでエラーが発生し,エラー情報の取得に失敗した場合,戻り値は-1を返します。

使用例
       IDENTIFICATION DIVISION.
       PROGRAM-ID. SAMPLE1.
                :
       DATA DIVISION.
       WORKING-STORAGE SECTION.
                :
       01  OP-1.
         02 ERR-MSGNUMBER     PIC S9(9) USAGE COMP.
         02 ERR-XMAPERRORCODE 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.
               :
       エラー処理.                                           … 4.
             CALL 'CBLXMAPERROR' USING OP-1
             MOVE RETURN-CODE TO 戻り値
             EVALUATE 戻り値
               WHEN  0
                 DISPLAY STMT-PROC                           … 5.
      *>              << エラー情報判定,リカバリ処理 >>
                                 : 
               WHEN  -1
                 DISPLAY 'CBLXMAPERRORが失敗しました。'
             END-EVALUATE.
                :

この例では,3.のSEND文実行でエラーが発生した場合に,1.のPERFORM文から,4.のエラー処理段落が実行されます。ここでCBLXMAPERRORサービスルーチンを呼び出し,エラー情報を取得します。2.のように通信文実行ごとに実行状態を退避しておくと,5.で,どの実行状態でエラーが発生したかがわかります。