coblongjmp 関数で、ローカルでない GO TO をエラーや例外処理に使用できるようにします。
#include "cobsetjmp.h"
int cobsetjmp(struct cobjmp_buf *buf);
| buf | 現在の実行環境が保存されるバッファ。 |
cobsetjmp() 関数は、buf で指定されたバッファに、現在の COBOL プログラムと C 関数の環境を保存します。 cobsetjmp() 関数は、0 の値を返却する C ライブラリ関数 setjmp() を呼び出します。
cobsetjmp() を呼び出した C 関数のどこかからか、C や COBOL 副プログラムから coblongjmp() が続けて呼び出されると、cobsetjmp() 呼び出しの直後に実行が回復されます。
coblongjmp() 呼び出し後、cobsetjmp() は 0 でない値を返却し、cobsetjmp() 呼び出し後にその値がテストされます。
coblongjmp() と cobsetjmp() 関数の使用には、次のような制限があります。
なし
次の例は、coblongjmp() と cobsetjmp() 関数の使用法を示しています。
void
some_c_func(void)
{
struct cobjmp_buf buf;
if (cobsetjmp(&buf) != 0)
{
cobprintf("Returned from coblongjmp\n");
return;
}
/* ここに有効なプログラムコードを記述 - たとえば COBOL の呼び出し */
coblongjmp(&cobjmp_buf);
}