高度な使用方法

cob -z オプションは、認識されたソース コード プログラムに加え、入力として .int ファイルおよびシステム オブジェクト (.o) ファイルを受け入れます。したがって、C および C++ のソースまたはオブジェクト コード (あるいはその両方) を、呼び出し可能な共有オブジェクトにリンクできます。

たとえば以下のコマンドは、COBOL プログラム mycobol.cbl および myint.int、C ソース コード myc.c、およびオブジェクト ファイル myobj.o を使用して myapp.so を作成します。オブジェクト ファイルには、COBOL、C、C++ などの言語や、サード パーティ システムのオブジェクト ファイルを使用できます。メインのエントリ ポイントは myentry として指定されます。これは指定された任意のモジュールに含めることができます。

cob -zo myapp.so mycobol.cbl myint.int myc.c myobj.o 
    -e myentry

C++ を含む呼び出し可能な共有オブジェクトを作成する際には、-z,CC オプションを使用して、C++ コンパイラで最後の呼び出し可能な共有オブジェクトを作成するようにします。たとえば以下のコマンドは、COBOL プログラム mycobol.cbl、C ソース コード myc.c、および C++ ソース ファイル mycpp.C を使用して myapp.so を作成します。メインのエントリ ポイントは myentry として指定されます。これは指定された任意のモジュールに含めることができます。

cob -z,CC -o myapp.so mycobol.cbl myc.c mycpp.C -e myentry

共有ライブラリは、-l および -L cob オプションを使用して、呼び出し可能な共有オブジェクトにリンクできます。呼び出し可能な共有オブジェクトがロードされると共有ライブラリもロードされ、呼び出し可能な共有オブジェクトがアンロードされると共有ライブラリもアンロードされます。たとえば以下のコマンドは、共有ライブラリ libmylib.so を作成してから、呼び出し可能な共有オブジェクト myapp.so にリンクします。実行時に myapp.so がロードされると、オペレーティング システムは共有ライブラリ libmylib.so を検索してロードします。

cob -Z mylib.cbl myobj.o
cob -zo myapp.so myprog.cbl myc.c -L. -lmylib -e myentry

呼び出し可能な共有オブジェクトには、必ずしも COBOL を含める必要はなく、C または C++ のオブジェクト、あるいはサード パーティ提供のオブジェクトを含めることができます。

C、C++、またはサード パーティのオブジェクトは、呼び出し可能な共有オブジェクトや共有ライブラリにリンクできます。これを利用して、たとえば、サード パーティ製品がマシンにインストールされていない環境に対応できるようにアプリケーションをコーディングできます。そのためには、サード パーティのオブジェクトおよび共有ライブラリを、システム実行可能ファイルではなく、呼び出し可能な共有オブジェクトにリンクします。必要に応じて、COBOL ON EXCEPTION 構文を使用し、この呼び出し可能な共有オブジェクトをロードします。サード パーティの製品がインストールされていない場合は、呼び出し可能な共有オブジェクトはロードされず、コードの ON EXCEPTION ルートが使用されます。