次の手順は Enterprise Server コマンド プロンプト (Windows) またはシェル プロンプト (UNIX) から実行します。
$set sourceformat(variable)
program-id. "demo2".
working-storage section.
>>JAVA-SHAREABLE ON
01 grp1.
03 i1 pic 9(8) comp-5 value 88888888.
03 i2 pic 9(8) comp-5 value 12345678.
>>JAVA-SHAREABLE OFF
01 grp2.
03 p1 pic x.
03 p2 pic 9.
procedure division.
display "start".
display "value of shared CBL grp is: "
display grp1::i1.
display grp1::i2.
end program.
Windows:
cobol demo2.cbl java-package-name(com.mycompany.demo2) java-output-path(src2) java-gen-strg ibmcomp;
UNIX:
cob -yo libdemo2.so -C "java-package-name(com.mycompany.demo2) java-output-path(src2) java-gen-strg java-gen-progs ibmcomp" -Q -znoexecstack demo2.cbl
COBOL ライブラリ ファイル (UNIX のみ) が生成され、そのサポート クラス ファイルが com.mycompany.demo2 パッケージ名を使用して生成されて src2 フォルダーに配置されます。
cbllink -D demo2.obj
COBOL ライブラリ ファイルが生成されます。
import com.mycompany.demo2.*;
public class Demo2
{
public static void main(String[] args)
{
System.out.println("--COBOL items now accessible in Java--");
int i1 = strg.demo2.grp1.i1.get();
int i2 = strg.demo2.grp1.i2.get();
System.out.println("-- COBOL item i1 = " + i1);
System.out.println("-- COBOL item i2 = " + i2);
strg.demo2.grp1.i1.put(77777777);
System.out.println("-- i1 updated from Java = " + strg.demo2.grp1.i1.get());
}
}
この Java コードにより、COBOL のコンパイルで使用したネームスペースがインポートされます。現在の作業フォルダーと src2 フォルダーが CLASSPATH にあることを確認してください。
javac Demo2.java java Demo2[/task/taskbody/steps/step/info/div {"- topic/div "})
次の出力が生成されます。
--COBOL items now accessible in Java-- -- COBOL item i1 = 88888888 -- COBOL item i2 = 12345678 -- i1 updated from Java = 77777777
このコードおよび出力は、この COBOL プログラムでは、2 つの PIC 9 COMP-5 項目を Java プログラムと共有していることを示しています。Java プログラムで get メソッドを使用して COBOL データの値を表示しました (これを行うために「COBOL 項目と Java 型のマッピング」に従って COMP-5 項目を int 型にマップしています)。さらに、Java プログラムで put メソッドを使用して COBOL 項目の値を変更しました (ここでも内部でマッピング処理を使用しています)。