同じプロジェクト内にある Java と COBOL を使用する場合は、「Java での COBOL の呼び出し (COBOL/Java 相互運用プロジェクト)」を参照してください。
[Create a Java Project] ウィザードが表示されます。
Java パースペクティブを開くように求められた場合は、[No] を選択します。JCall プロジェクトが作成されます。COBOL プロジェクトと Java プロジェクトの両方を表示するには、COBOL エクスプローラー ビューを選択し、
([View menu]) をクリックして [Filters and Customization] をクリックします。[Filters and Customization] ダイアログ ボックスが開きます。[Pre-set filters] タブをクリックし、[Non-COBOL projects] をオフにして [OK] をクリックします。
プログラムがエディターで開きます。
package com.microfocus.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]);
}
}
自動的にビルドするようにワークスペースが設定されている場合、プログラムがコンパイルされます。自動的にビルドするようにワークスペースが設定されていない場合は、[Project] メニューの [Build Project] をクリックします。この時点では、まだ COBOL プログラムが存在していないためエラーが発生します。これらは以降の手順で解決されます。
[COBOL Project] ウィザードが表示されます。
プログラムがエディターで開きます。
$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.
[Properties for CCall] ダイアログ ボックスが表示されます。
[Link] 設定が表示されます。
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] |
をクリックし、次のコンパイラ指令を追加して [OK] をクリックします。
自動的にビルドするようにワークスペースが設定されている場合、プログラムがコンパイルされます。自動的にビルドするようにワークスペースが設定されていない場合は、[Project] メニューの [Build Project] をクリックします。
ネームスペースを表すフォルダー構造に demo3.native.sig ファイルが表示されます。これは、Java で COBOL プログラムを呼び出すために必要なファイルの 1 つです。
genjava ユーティリティは、COBOL プログラムと相互運用するいくつかの必須の Java 成果物を生成するために必要です。
[Create, manage, and run configurations] ダイアログ ボックスが表示されます。
新しい構成が表示されます。
デフォルトでは、実行可能ファイル (genjava) は製品インストール フォルダーの bin サブフォルダーにあります。
<COBOL-Output-Name> -p demo3 -k com.mycompany.demo3
JCall の src フォルダーを再度更新すると、progs.java ファイルが追加されます。
[Run Configurations] ダイアログ ボックスが表示されます。
新しい構成が右側のペインに表示されます。
-Djava.library.path=<path-to-COBOL-project-output-folder>
<path-to-COBOL-project-output-folder> は、CCall プロジェクトの出力フォルダーのフル パス名に置き換えます。
---------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 プログラムで処理されます。