COBOL2002 ユーザーズガイド

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

32.10.1 CBLXMAPERROR

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

形式
CALL  'CBLXMAPERROR'  USING  引数1

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

表32-9 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に設定されるエラー情報を次に示します。

    表32-10 引数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.で,どの実行状態でエラーが発生したかがわかります。