例 2 - Java での COBOL 作業場所節項目へのアクセス

この例では、ネイティブ COBOL プログラムから COBOL 作業場所節項目にアクセスして操作する Java プログラムを示します。

次の手順は Enterprise Server コマンド プロンプト (Windows) またはシェル プロンプト (UNIX) から実行します。

重要: UNIX プラットフォームの場合、現在の作業フォルダーと libjvm.so を含むフォルダーが LD_LIBRARY_PATH (AIX では LIBPATH) 環境変数で使用できることを確認してください。
  1. 次の COBOL ファイル (demo2.cbl) を作成します。
          $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.
  2. 現在の作業フォルダーに src2 サブフォルダーを作成します。
  3. 必要な指令を使用してファイルをコンパイルします。

    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  
    注: AIX プラットフォームの場合、-Q -znoexecstack フラグは省略します。

    COBOL ライブラリ ファイル (UNIX のみ) が生成され、そのサポート クラス ファイルが com.mycompany.demo2 パッケージ名を使用して生成されて src2 フォルダーに配置されます。

  4. コンパイルされたオブジェクト ファイルから必要なライブラリ ファイルを作成します (Windows のみ)
    cbllink -D demo2.obj

    COBOL ライブラリ ファイルが生成されます。

  5. 次の Java ソース ファイル (Demo2.java) を作成します。
    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 にあることを確認してください。
  6. Java バイトコードをコンパイルして実行します。
    javac Demo2.java
    java Demo2
    [/task/taskbody/steps/step/info/div {"- topic/div "})
    注: 一部の Linux プラットフォームでは、-Xrs オプションを使用して Java バイトコードを実行する必要がある場合があります。115 Unexpected signal (Signal 4) エラー メッセージが表示される場合は、このオプションを使用してください。
    (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 項目の値を変更しました (ここでも内部でマッピング処理を使用しています)。