Java での COBOL の呼び出し (COBOL/Java 相互運用プロジェクト)

次の例では、Java プログラムから COBOL プログラムを呼び出す方法を示します。2 つの引数を COBOL に渡し、戻り値を受け取ります。

別々のプロジェクト内にある 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.demo3」に更新します。

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

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

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

    3. テキストを次のように置き換えて、プログラムを保存します。
            $set sourceformat(variable)
             >>JAVA-CALLABLE
             program-id. demo3 as "demo3" .
      
             working-storage section.
             01 i pic 9(9) comp-5.
             01 primes.
               03 pic 9(9) comp-5 occurs 10 value 2,3,5,7,11,13,17,19,23,27.
      
             linkage section.
             01 ltable1.
               03 str pic X(100) occurs 4.
             01 lint1 pic 9(9) comp-5.
             01 ltable2.
               03 int1 pic 9(9) comp-5 occurs 10.
             procedure division using ltable1 by value lint1 returning ltable2.
                 perform varying i from 1 by 1 until i > 4
                     display "COBOL " i " " str(i)
                 end-perform
                 display "COBOL " lint1
                 move primes to ltable2
             goback.
             end program demo3.

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

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

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

    3. テキストを次のように置き換えて、プログラムを保存します。
      package com.mycompany.demo3;
      
      public class Demo3
      {
          public static void main(String[] args)
          {
            String[] s = {"hello", "there", "pink", "green"};
            int int1 = 23;
            System.out.println("---------demo3---------");
            int[] i = com.mycompany.demo3.progs.demo3(s, int1);
            System.out.println("Hello from Java");
            for (int k=0; k<i.length; k++)
                System.out.println(i[k]);
      
          }
      }

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

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

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

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

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

    6. [Apply]、[Run] の順にクリックします。
    コンソール ウィンドウに次の出力が生成されます。
    ---------demo3---------
    COBOL 0000000001 hello                                                                                               
    COBOL 0000000002 there                                                                                               
    COBOL 0000000003 pink                                                                                                
    COBOL 0000000004 green                                                                                               
    COBOL 0000000023
    Hello from Java
    2
    3
    5
    7
    11
    13
    17
    19
    23
    27

    コードと出力からわかるように、この Java プログラムでは 2 つの引数を COBOL プログラムに渡しています。それらの引数が COBOL で処理されて表示されます。さらに、COBOL プログラムから値が返され、その値が Java プログラムで処理されます。