ここでは、Java プログラムから COBOL プログラムを呼び出す 2 つの短いコード例を示します。最初の例は次の処理を実行します。
簡単な COBOL のサブルーチン、legacy.cbl を示します。
working-storage section. copy "javatypes.cpy". 01 wsResult jint. linkage section. 01 wsOperand1 jint. *> type defined in javatypes.cpy 01 wsOperand2 jint. 01 wsOperation pic x. procedure division using wsOperand1 wsOperand2 wsOperation. evaluate wsOperation when "a" add wsOperand1 to wsOperand2 giving wsResult when "s" subtract wsOperand1 from wsOperand2 giving wsResult end-evaluate exit program returning wsResult.
次に、このサブルーチンを呼び出す Java プログラムを示します。
import com.microfocus.cobol.* ; class SimpleCall { public static void main(String argv[]) throws Exception { int i = RuntimeSystem.cobcall_int("legacy", new ParameterList() .add((int)4 .add((int)7 .add((byte)'a')); System.out.println(i) ; } }
2 つ目の例では、複数の異なる USAGE 句に相当する配列を使用して、COBOL プログラムへデータを渡す方法を示します。使用されている cobcall() メソッドは値を戻しませんが、最初のパラメーターとしてオブジェクトを渡し、COBOL プログラムから同じオブジェクト型を返すことができます。次の SimpleCall2 は、最初のパラメーターを参照で、2 番目のパラメーターを値で、3 番目のパラメーターを内容 (by content) で、それぞれ渡します。
import com.microfocus.cobol.* ; class SimpleCall2 { public static void main(String argv[]) throws Exception { RuntimeSystem.cobcall(null, "usages", new ParameterList() .add((int)1, RuntimeSystem.BY_REFERENCE) .add((int)2, RuntimeSystem.BY_VALUE) .add((int)3, RuntimeSystem.BY_CONTENT)); } }