高度な使用方法

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

たとえば、以下のコマンドは、 COBOLソース ファイル mycobol.cbl と 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 ルートが使用されます。