ネイティブ COBOL プログラムに Java プログラムからアクセスできるように構成できます。Java プログラムからメイン プログラムのエントリ ポイントを呼び出して COBOL コードを実行できます。
COBOL プログラムを呼び出し可能にするには、JAVA-CALLABLE 指令を使用します。この指令は、ソース指令として設定することも (以下を参照)、$set またはコマンド ラインで設定される従来の指令として設定することもできます。
COBOL ソースは、ライブラリ ファイル (.dll (Windows) または .so (UNIX) ファイル) にコンパイルする必要があります。JAVA_CALLABLE 指令を指定すると、多数のファイルが生成されます (その一部は暗黙的に生成されるため、ユーザーには表示されません)。これらは、プログラムにアクセスする Java アプリケーションで駆動される実行単位の一部を構成するために必要です。
>>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.
...
PROCEDURE DIVISION USING LTABLE1 BY VALUE LINT1 RETURNING LTABLE2.
...
JAVA-CALLABLE 指令に加え、JAVA-GEN-PROGS 指令も指定して progs.java ラッパー クラスを生成する必要があります。これは、Java プログラムから COBOL プログラムを呼び出せるようにするために最終的な実行単位に必要なもう 1 つのファイルです。
import com.mycompany.demo3.*;
public class Demo3
{
...
int[] i = com.mycompany.demo3.progs.demo3(s, int1);
...
}
ここで、共有される COBOL プログラムは JAVA-PACKAGE-NAME(com.mycompany.demo3) でコンパイルされています。また、Java コードを実行するときは、JAVA-OUTPUT-PATH の値が CLASSPATH 上にあることを確認してください。この抜粋は、demo3 COBOL プログラムから返された値で構成される整数配列を宣言する Java コードを示しています。宣言の progs 要素で progs.java ラッパー クラスをインスタンス化し、必要な引数を指定して demo3 プログラムを呼び出しています。
COBOL プログラムを Java プログラムで呼び出す処理をコマンド ラインから行う実用的な例については、「例 3 - Java での COBOL プログラムの呼び出し」を参照してください。同様の処理を IDE 内から行う例については、「IDE 内での Java の相互運用」を参照してください。
複数の COBOL ソース プログラムを呼び出す場合は、JAVA-GEN-PROGS 指令を使用する代わりに genjava ユーティリティを使用して progs.java を作成する必要があります。詳細については、「genjava ユーティリティ」を参照してください。
COBOL プログラムの呼び出しは、JAVA SHAREABLE 相互運用メソッドと組み合わせて使用できます (「Java での COBOL 作業場所節項目へのアクセス」を参照)。これにより、Java アプリケーションで COBOL コードと COBOL データの両方を駆動できます。「例 4 - Java での COBOL の呼び出しと作業場所節項目へのアクセス」を参照してください。