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