例 3 - Java での COBOL プログラムの呼び出し

この例では、ネイティブ COBOL プログラムからコードを実行する Java プログラムを示します。

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

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

    Windows:

    cobol demo3.cbl java-output-path(src3) java-package-name(com.mycompany.demo3) java-gen-progs;

    UNIX:

    cob -yo libdemo3.so -C "java-package-name(com.mycompany.demo3) java-output-path(src3) java-gen-progs" -Q -znoexecstack demo3.cbl  
    注: AIX プラットフォームの場合、-Q -znoexecstack フラグは省略します。

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

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

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

  5. 次の Java ソース ファイル (Demo3.java) を作成します。
    import 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]);
    
        }
    }

    この Java コードにより、COBOL のコンパイルで使用したネームスペースがインポートされます。現在の作業フォルダーと src3 フォルダーが CLASSPATH にあることを確認してください。

  6. Java バイトコードをコンパイルして実行します。
    javac Demo3.java
    java Demo3
    [/task/taskbody/steps/step/info/div {"- topic/div "})
    注: 一部の Linux プラットフォームでは、-Xrs オプションを使用して Java バイトコードを実行する必要がある場合があります。115 Unexpected signal (Signal 4) エラー メッセージが表示される場合は、このオプションを使用してください。
    (div]

    次の出力が生成されます。

    ---------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 プログラムでは、i 整数配列を宣言するときに demo3 COBOL プログラムを呼び出していることを示しています。COBOL コードで使用するいくつかの引数を渡し、COBOL コードから返されるテーブル/配列を Java プログラムで表示しています。