ネイティブ COBOL プログラムの作業場所節のデータ項目に Java プログラムからアクセスできるように構成できます。Java プログラムでは、相互運用の一環として実装されるアクセサー (get メソッド) とミューテーター (put メソッド) を使用して COBOL データを読み書きできます。
COBOL コンパイル プロセスの一環として生成される COBOL ライブラリ ファイルと多数の Java クラスを使用して、データにアクセスする Java アプリケーションで駆動される実行単位の一部を構成できます。生成された Java クラスは、COBOL データ項目と Java 型をマップし、それらの同期を保つために主に使用されます。
最初に、作業場所節項目を共有するために、それらを JAVA-SHAREABLE ブロック内でラップします。たとえば、次の grp1 と grp2 には Java プログラムからアクセスできますが、grp3 にはアクセスできません。
program-id. "demo1".
...
working-storage section.
>>JAVA-SHAREABLE ON
01 grp1.
03 i1 pic 9(8) comp-5 value 88888889.
03 i2 pic 9(8) comp-5 value 01234578.
01 grp2.
03 i3 occurs 5.
05 i4 occurs 2 times pic x(4) comp-5.
05 grp2a.
07 i5 pic 9(9) comp-5.
>>JAVA-SHAREABLE OFF
01 grp3.
03 i6 pic 9(8) comp-5 value 22222229.
03 i7 pic 9(8) comp-5 value 08765432.
...
実行単位に必要なファイルを生成するには、JAVA-GEN-STRG 指令を追加で使用して、JAVA-SHAREABLE ブロックを含む COBOL プログラムを .dll (Windows) または .so (UNIX) ファイルにコンパイルします。JAVA-SHAREABLE 指令が指定されている場合、<prog-name>ws.java ファイルが生成されます。このファイルは、COBOL データにアクセスするための put メソッドと get メソッドを実装するクラスを生成するために使用されます。JAVA-GEN-STRG は、データに Java からアクセスできるようにするために使用される strg.java ラッパー クラスを生成します。
これらの Java ファイルは、ユーザーには表示されない他の生成ファイルとともに、メインの Java アプリケーションをビルドするときにコンパイルされます。
import com.mycompany.demo1.*;
...
int i1 = strg.demo.grp1.i1.get();
int i2 = strg.demo.grp1.i2.get();
int a1 = strg.demo.grp2.i4[5][2].get(); *> see note
int a2 = strg.demo.grp2.i3[2].i4[4].get();
int a3 = strg.demo.grp2.i3[1].grp2a[1].i5.get();
...
ここで、<prog-name>ws.java の COBOL データは JAVA-PACKAGE-NAME(com.mycompany.demo1) でコンパイルされています。この抜粋は、COBOL で設定された grp1 項目の値を取得するために使用される get メソッドの実装も示しています。宣言の strg 要素で strg.java ラッパー クラスをインスタンス化し、<prog-name>ws.java の指定に従って demo プログラムの項目をカプセル化しています。
また、COBOL と Java の間でテーブル/配列を扱う場合は、COBOL では 1 から始まる索引付けシステムを使用し、Java では 0 から始まる索引付けシステムを使用することに注意してください。COBOL テーブルを使用する場合、この違いに対処する必要があります。
また、put メソッドを使用して COBOL データを Java コードから直接更新することもできます。内部のマッピング プロセスによってメモリ内の COBOL 項目が更新されます。
... strg.demo.grp1.i1.put(12345678); strg.demo.grp2.i3[1].i4[2].put(5555); ...
COBOL データを Java プログラムで共有してアクセスする処理をコマンド ラインから行う実用的な例については、「例 2 - Java での COBOL 作業場所節項目へのアクセス」を参照してください。同様の処理を IDE 内から行う例については、「IDE 内での Java の相互運用」を参照してください。
複数の COBOL ソース プログラムから COBOL 項目を共有する場合は、JAVA-GEN-STRG 指令を使用する代わりに genjava ユーティリティを使用して strg.java を作成する必要があります。詳細については、「genjava ユーティリティ」を参照してください。
COBOL データ項目の共有は、JAVA CALLABLE メソッドと組み合わせて使用すると特に便利です (「Java での COBOL プログラムの呼び出し」を参照)。これにより、Java アプリケーションで COBOL コードと COBOL データの両方を駆動できます。「例 4 - Java での COBOL の呼び出しと作業場所節項目へのアクセス」を参照してください。