Java での COBOL 作業場所節へのアクセス (別個のプロジェクト)

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

同じプロジェクト内にある Java と COBOL を使用する場合は、「Java での COBOL の呼び出し (COBOL/Java 相互運用プロジェクト)」を参照してください。

この例では、デモンストレーション用に 2 つの新しいプロジェクトを作成しますが、既存のネイティブ COBOL プロジェクトおよび Java プロジェクトを使用するように適応させることもできます。
  1. Java プロジェクトを作成します。
    1. [File > New > Other] をクリックし、[Java] フォルダーから [Java Project] を選択します。

      [Create a Java Project] ウィザードが表示されます。

    2. [Project name] フィールドに「JShare」と入力し、プロジェクトに必要な JRE を選択して [Next] をクリックします。
      注: 選択した JRE と作成する COBOL プロジェクトでビット体系が一致している必要があります。
    3. [Libraries] タブで、[Classpath] を選択して [Add Library] をクリックします。
    4. [COBOL JVM Runtime System] をダブルクリックし、[Finish] をクリックします。
    5. [Finish] をクリックします。

    Java パースペクティブを開くように求められた場合は、[No] を選択します。JShare プロジェクトが作成されます。COBOL プロジェクトと Java プロジェクトの両方を表示するには、COBOL エクスプローラー ビューを選択し、[View menu] アイコン ([View menu]) をクリックして [Filters and Customization] をクリックします。[Filters and Customization] ダイアログ ボックスが開きます。[Pre-set filters] タブをクリックし、[Non-COBOL projects] をオフにして [OK] をクリックします。

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

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

    3. テキストを次のように置き換えて、プログラムを保存します。
      package com.microfocus.java;
      import com.mycompany.demo2.strg;
      
      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] をクリックします。この時点では、まだ COBOL プログラムが存在していないためエラーが発生します。これらは以降の手順で解決されます。

  3. ネイティブ COBOL プロジェクトを作成します。
    1. [File > New > COBOL Project] をクリックします。

      [COBOL Project] ウィザードが表示されます。

    2. [Project name] フィールドに「CShare」と入力し、プロジェクト テンプレートを選択して [Finish] をクリックします。
      注: 選択したプロジェクト テンプレートと JShare プロジェクトで選択した JRE でビット体系が一致している必要があります。
    CShare プロジェクトが作成され、ワークスペースに表示されます。
  4. COBOL プログラム (demo2.cbl) を作成します。
    1. COBOL エクスプローラー ビューで CShare を選択し、[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.
  5. COBOL プロジェクトのプロパティを設定します。
    1. CShare プロジェクトが選択されていることを確認し、[Project] メニューの [Properties] をクリックします。

      [Properties for CShare] ダイアログ ボックスが表示されます。

    2. [Micro Focus > Build Configurations > Link] を選択します。

      [Link] 設定が表示されます。

    3. 次の設定を変更し、[Apply] をクリックします。

      Windows:

      オプション
      [Target type] [Single Native Library File]

      UNIX:

      オプション
      [Output name] 現在の値の前に「lib」を付加
      [Target type] [Single Native Library File]
      [Callable by non-COBOL applications] [Yes]
      [Multi-threaded] [Yes]
    4. [Micro Focus > Project Settings > COBOL] を選択します。
    5. [Additional directives] フィールドで Ellipsis button をクリックし、次のコンパイラ指令を追加して [OK] をクリックします。
      • java-output-path"<path-to-src-folder-of-Java-project>"
      • java-package-name"com.mycompany.demo2"
    6. [Apply and Close] をクリックします。

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

  6. JShare プロジェクトで、src フォルダーを右クリックして [Refresh] を選択します。

    ネームスペースを表すフォルダー構造に demo2ws.java ファイルが表示されます。

  7. genjava ユーティリティを構成します。

    genjava ユーティリティは、COBOL プログラムと相互運用するいくつかの Java 成果物を生成するために必要です。

    1. [Run] メニューの [External Tools] をポイントし、[External Tools Configurations] を選択します。

      [Create, manage, and run configurations] ダイアログ ボックスが表示されます。

    2. [Program] をダブルクリックします。

      新しい構成が表示されます。

    3. [Name] フィールドに「genjava」と入力します。
    4. [Location] フィールドで [Browse File System] をクリックし、genjava ユーティリティのフル パスと実行可能ファイル名を選択します。

      デフォルトでは、実行可能ファイル (genjava) は製品インストール フォルダーの bin サブフォルダーにあります。

    5. [Working Directory] フィールドで [Browse Workspace] をクリックし、JShare プロジェクトの src フォルダーを選択します。
    6. [Arguments] フィールドにコマンドの引数を次のように入力します。

      <COBOL-Output-Name> -s demo2 -k com.mycompany.demo2

    7. [Run] をクリックします。

      JShare プロジェクトの src フォルダーを再度更新すると、strg.java ファイルが追加されます。この時点で、Java プログラムのエラーは解決されました。

  8. 実行構成を作成し、アプリケーションを実行します。
    1. JShare を右クリックし、[Run As > Run Configurations] を選択します。

      [Run Configurations] ダイアログ ボックスが表示されます。

    2. 左側のペインで [Java Application] 起動構成タイプをダブルクリックします。

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

    3. [Name] フィールドに構成の名前を入力します。
    4. [Main class] フィールドに「com.microfocus.java.Demo2」と入力します。
    5. [Arguments] タブをクリックし、[VM arguments] フィールドに次のように入力します。
      -Djava.library.path="<path-to-COBOL-project-output-folder>" 

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

    6. [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 項目の値を変更しました (ここでも内部でマッピング処理を使用しています)。