coblongjmp() 関数で、ローカルでない GO TO をエラーや例外の処理に使用できるようにします。
制約事項: この関数は、ネイティブ COBOL でのみサポートされます。
構文:
#include "cobsetjmp.h"
int cobsetjmp(struct cobjmp_buf *buf);
例:
次の例は、coblongjmp() と cobsetjmp() 関数の使用法を示しています。
void
some_c_func(void)
{
struct cobjmp_buf buf;
if (cobsetjmp(&buf) != 0)
{
cobprintf("Returned from coblongjmp\n");
return;
}
/* Valid code here - for example can call COBOL */
coblongjmp(&cobjmp_buf);
}
説明:
cobsetjmp() 関数は、buf で指定されたバッファーに、現在の COBOL プログラムと C 関数の環境を保存します。cobsetjmp() 関数は、0 の値を返す C ライブラリ関数 setjmp() を呼び出します。
cobsetjmp() の呼び出しに続いて、同じ C 関数内やそのサブプログラム (C または COBOL) 内で coblongjmp() が呼び出されると、cobsetjmp() を呼び出した直後の位置から実行が再開されます。
coblongjmp() の呼び出し後、cobsetjmp() はゼロ以外の値を返します。この戻り値をチェックすれば、cobsetjmp() の結果を知ることができます。
coblongjmp() と cobsetjmp() 関数の使用には、次のような制限があります。