#include "cobsetjmp.h" int cobsetjmp(struct cobjmp_buf *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() 関数の使用には、次のような制限があります。