C プログラムとのインターフェイス

この COBOL システムは、C と COBOL プログラムを混在させる多くのライブラリ関数を提供します。これらの関数は、主に C プログラムで使用されることを想定しています。

デフォルトでは %ProgramFiles(x86)%\Micro Focus\Enterprise Developer\include(Windows) または $COBDIR/include(UNIX) にある C ヘッダー ファイルにプロトタイプされています。

この関数は、命名規則 cobtype_t がある移植可能なデータ型を使用します。これらのデータ型の定義は、デフォルトでは %ProgramFiles(x86)%\Micro Focus\Enterprise Developer\include(Windows) または $COBDIR/include(UNIX) に配置されている cobtypes.h ヘッダー ファイルにあります。

C のコード内では、C の関数を呼び出す場合と同じ要領で COBOL のエントリ ポイントを呼び出すことができます。たとえば、次の例は、2 つの引数を使用して、COBOL エントリ ポイント cobep を呼び出す C プログラムを示しています。

cobep(arg1, arg2);

C のコード内で COBOL のプログラムやエントリ ポイントを呼び出したり、呼び出しをキャンセルするには、cobcall()cobcancel()、および cobfunc() ルーチンを使用します。具体的な方法については「COBOL を呼び出す C 関数」で説明しています。

COBOL プログラムを呼び出す前には、必ず cobinit() を実行します。マルチスレッド環境では、COBOL 環境が初期化されているかどうかを知ることができません。そのため、COBOL の各スレッドで cobinit() を実行する必要があります。

プロセスが fork() 呼び出す場合、対応する exec() がなければ、子プロセスは COBOL 機能を使用する前に cobinit() を呼び出す必要があります。その場合、親プロセスは fork() の呼び出しの前にも後にも COBOL を呼び出さないでください。fork() が呼び出される時点で、スレッドは 1 つだけにする必要があります。

C の main() を持つアプリケーションで、コマンド ラインに COBOL からアクセスする場合は、cobcommandline() を呼び出す必要があります。これは UNIX 環境にのみ該当します。

COBOL プログラムを呼び出したスレッドは、COBOL のマルチスレッド化構文またはライブラリ ルーチンで生成した場合を除き、終了前に必ず cobthreadtidy() を実行してください。

アプリケーションで COBOL プログラムを呼び出した場合は、そのアプリケーションを終了する前に必ず cobtidy() または cobexit() を呼び出してください。

COBOL プログラムおよびそれを呼び出す C 関数が、同じ呼び出し可能 DLL/ 共有オブジェクトに含まれず、また、システム実行可能ファイルにリンクもされていない場合は、次の処理が必要になります。

COBOL を呼び出す C ルーチンは、すべてリファレンス トピックで説明しています。