Java での COBOL 作業場所節へのアクセス (COBOL/Java 相互運用プロジェクト)

次の例では、Java プログラムから COBOL プログラムの作業場所節項目にアクセスし、それらの項目を Java で表示して値を更新する方法を示します。

別々のプロジェクト内にある Java と COBOL を使用する場合は、「Java での COBOL 作業場所節へのアクセス (別個のプロジェクト)」を参照してください。

  1. COBOL/Java 相互運用プロジェクトを作成します。
    1. [File > New > Project] をクリックし、[Micro Focus COBOL] フォルダーから [COBOL/Java Interoperability Project] タイプを選択して [Next] をクリックします。
    2. [Project name] フィールドにプロジェクトの名前を入力し、プロジェクト テンプレートを選択して [Next] をクリックします。
    3. プロジェクトで使用する Java ランタイムを選択し、[Finish] をクリックします。
    プロジェクトが作成され、ワークスペースに表示されます。このタイプのプロジェクトについては、デフォルトですべてのプロジェクト成果物が完全に表示されるため COBOL エクスプローラー ビューで作業することをお勧めします。
  2. プロジェクトのプロパティでパッケージ名を設定します。
    注: このパッケージ名を使用して、Java コードが COBOL と相互運用するために必要な、COBOL で生成されたすべての Java 成果物がまとめられます。
    1. プロジェクトが選択されていることを確認し、[Project] メニューの [Properties] をクリックします。

      [Properties for <project-name>] ダイアログ ボックスが表示されます。

    2. [Micro Focus > Project Settings > COBOL] を選択します。
    3. [Package Name] フィールドを「com.mycompany.demo2」に更新します。

      この例では、[Java Interoperability Output Path] を src に設定し、プロジェクトを単一のネイティブ ライブラリ ファイルにビルドするなど、他の設定も必要ですが、これらはデフォルトの設定であるためすでに設定されています。

    4. [Apply and Close] をクリックします。
  3. COBOL プログラム (demo2.cbl) を作成します。
    1. COBOL エクスプローラー ビューでプロジェクトを選択し、[File > New > COBOL Program] をクリックします。
    2. [New file name] フィールドに「demo2.cbl」と入力し、[Finish] をクリックします。

      プログラムがエディターで開きます。

    3. テキストを次のように置き換えて、プログラムを保存します。
            $set sourceformat(variable)
             program-id. demo2 as "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 demo2.

      自動的にビルドするようにワークスペースが設定されている場合、プログラムがコンパイルされます。自動的にビルドするようにワークスペースが設定されていない場合は、[Project] メニューの [Build Project] をクリックします。

  4. Java プログラム (Demo2.java) を作成します。
    1. COBOL エクスプローラー ビューでプロジェクトを選択し、[File > New > Other > Class] をクリックして [Next] をクリックします。
    2. [Source folder] フィールドで <project-name>/src が指定されていることを確認し、[Package] フィールドに「com.mycompany.demo2」、[Name] フィールドに「Demo2」と入力して [Finish] をクリックします。

      プログラムがエディターで開きます。

    3. テキストを次のように置き換えて、プログラムを保存します。
      package 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());
          }
       }

      自動的にビルドするようにワークスペースが設定されている場合、プログラムがコンパイルされます。自動的にビルドするようにワークスペースが設定されていない場合は、[Project] メニューの [Build Project] をクリックします。

  5. 実行構成を作成して実行します。
    1. COBOL エクスプローラー ビューでプロジェクトを右クリックし、[Run As > Run Configurations] を選択します。
    2. [Java Application] 起動構成をダブルクリックします。

      新しい構成が右側のペインに表示されます。

    3. [Name] フィールドに構成の名前を入力します。
    4. [Main class] フィールドに「com.mycompany.demo2.Demo2」と入力します。
    5. [Arguments] タブを選択し、[VM arguments] フィールドに次の引数を入力します。
      -Djava.library.path="<path-to-COBOL-output-folder>" 

      <path-to-COBOL-output-folder> は、COBOL プロジェクトの出力フォルダーのフル パス名に置き換えます。

    6. [Apply]、[Run] の順にクリックします。
    コンソール ウィンドウに次の出力が生成されます。
    --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 項目の値を変更しました (ここでも内部でマッピング処理を使用しています)。