この COBOL プログラムを実行すると、Java プログラムに Java で処理する文字列配列が渡され、さらに Java が呼び出されます。その Java プログラムから COBOL プログラムで処理する配列が返されます。
import java.math.BigDecimal;
import java.util.Arrays;
public class Demo1
{
public static void static1(String[] d)
{
System.out.println("---Output from Java Demo1.static1 method---");
for (int i = 0; i < d.length; i++)
{
System.out.println(d[i]);
}
Arrays.sort(d);
}
/* select colours from array */
public static String[] static2(int[] s)
{
System.out.println("---Output from Java Demo1.static2 method---");
for (int i: s)
System.out.println(i);
String[] rainbow = {"Red", "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet"};
String[] ret = {rainbow[s[0]], rainbow[s[1]], rainbow[s[2]], rainbow[s[3]], rainbow[s[4]]};
return ret;
}
}
javac Demo1.java
これにより、現在のフォルダーに Demo1.class ファイルが生成されます。
$set sourceformat(variable) nsymbol(national)
78 MAX_OCC value 5.
01 i pic xxxx comp-5.
01 grp2.
03 nat1 pic n(10) national occurs MAX_OCC
value n"Red" n"Green" n"Blue" n"Orange" n"Indigo".
01 grp3.
03 utf1 pic u(10) occurs MAX_OCC.
01 grp4.
03 num2 pic xxxx comp-5 occurs MAX_OCC
value 1 2 4 5 6.
procedure division.
*> Sort COBOL array
call "java.Demo1.static1" using grp2
display "---Output from COBOL---"
perform varying i from 1 by 1 until i > 5
display nat1(i)
end-perform
*> Select colours of the rainbow from input array
*> Careful Java has 0 based array indexes
call "java.Demo1.static2" using grp4 returning grp3
display "---Output from COBOL---"
perform varying i from 1 by 1 until i > 5
display utf1(i)
end-perform.
Windows:
cobol demo1.cbl; cbllink demo1.obj
UNIX:
cob -x demo1.cbl
これにより、最終的な COBOL 実行可能ファイル demo1.exe (Windows) または demo1 (UNIX) が生成されます。
Windows:
demo1.exe
UNIX:
./demo1
---Output from Java Demo1.static1 method--- Red Green Blue Orange Indigo ---Output from COBOL--- Blue Green Indigo Orange Red ---Output from Java Demo1.static2 method--- 1 2 4 5 6 ---Output from COBOL--- Orange Yellow Blue Indigo Violet
このコードおよび出力は、COBOL コードが static1 メソッドを実行し、いくつかの COBOL 操作を処理した後、static2 メソッドを実行し、さらにいくつかの COBOL 操作を処理したことを示しています。