C のスレッドの生成時には、そのスレッドの最初のエントリ ポイントとなる C の関数を指定する必要があります。次のコード例は、該当するエントリ ポイント、c_thread() で次の処理を行う方法を示しています。
c_thread(void) { cobinit(); /* Only required if not */ /* already called in this */ /* process */ cobcall("cobep", 0, NULL); /* Call COBOL */ cobthreadtidy(); /* Tidy up COBOL in this */ /* thread */ return 0; /* Exit thread */ }
説明:
この関数は、現在のスレッドに対する COBOL 環境の初期設定を解除し、スレッド状態情報をクリアして、スレッド ローカルとして割り当てられたデータを解放します。成功時には 0 を返します。
この関数は、非 COBOL の API 呼び出し、すなわち、スレッドが C ライブラリ、オペレーティング システムやサード パーティのスレッドの API 呼び出しで生成された場合にのみ使用されます。COBOL 構文や CBL_THREAD_CREATE ライブラリ ルーチンで生成したスレッドで使用すべきではありません。COBOL プログラムから直接 cobthreadtidy() を呼び出すことはできません。
この関数は、すべての COBOL プログラムがそのスレッドで終了し、再び呼び出さない場合にのみ呼び出します。COBOL エントリ ポイントや COBOL ルーチン (cobinit() など) を cobthreadtidy() の後で呼び出すと、その結果は予測できません。