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