COBOL2002 ユーザーズガイド

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

32.6.1 CBLDBGINF

CBLDBGINFサービスルーチンは,COBOL以外のプログラムからCOBOLプログラムを呼ぶ場合,COBOLプログラムの例外発生時に異常終了時要約情報リストを出力するものです。

このサービスルーチンは,CALL文で呼び出すのではなく,C言語の構造化例外処理のフィルタ式から呼び出す必要があります。

記述例
#include <windows.h>
extern int WINAPI CBLDBGINF(DWORD);
                       /* CBLDBGINF 外部参照宣言 */
         :
  CBLDBGINF(GetExceptionCode())
         :

引数
発生した例外の種類を識別するコードを引数にします。GetExceptionCode()関数の戻り値をそのまま指定します。

戻り値
構造化例外のフィルタ式の評価結果の値を戻します。
  • EXCEPTION_CONTINUE_SEARCH
    例外コードがEXCEPTION_BREAKPOINT,またはEXCEPTION_SINGLE_STEPの場合
  • EXCEPTION_EXECUTE_HANDLER
    例外コードが上記の二つ以外だった場合
なお,上記のEXCEPTION_CONTINUE_SEARCHおよびEXCEPTION_EXECUTE_HANDLERの詳細については,CまたはC++の各マニュアルの構造化例外処理に関する個所を参照してください。

規則
  • このサービスルーチンは,Cプログラムの構造化例外処理のフィルタ式から呼び出す必要があります。その他の方法によって呼び出した場合,実行時の動作は保証しません。
  • 異常終了時要約情報リストには,-DebugInf,-DebugInf,Trace,-DebugCompati,-DebugData,-TDInf,-CVInf,または-DebugRangeオプションを指定してコンパイルしたプログラムの情報が出力されます。リストの出力内容,および出力先については,「39.2 異常終了時要約情報リスト」を参照してください。
  • 戻り値がEXCEPTION_EXECUTE_HANDLERのとき,CBLDBGINFは異常終了時要約情報リストを出力しません。
  • このサービスルーチンを使用するプログラムでは,リンク時に以下のインポートライブラリを指定してください。
    cbl2k_32.lib

注意事項
COBOL2002が動作していない環境でCBLDBGINFを呼び出した場合,エラーメッセージが表示されます。

使用例
CBLDBGINFサービスルーチンを呼び出す例を,次に示します。
 
#include <windows.h>
extern int WINAPI CBLDBGINF();
                       /* CBLDBGINF 外部参照宣言 */
 
_try{
 COBOL_SUB( );           /* COBOLプログラム実行 */
}
 
/* フィルタ式でのCBLDBGINF呼び出し */
_except (CBLDBGINF(GetExceptionCode())){
  /* 例外ハンドラブロック 例外発生時の処理をする */
         :
         :
}