JNI と C を使って Java から COBOL プログラムを呼び出す
さて、今度は、COBOL に Hello, world! を言わせましょう。
まずは、COBOL プログラムを以下のようにつくります。ファイル名は hello.cob とします。
IDENTIFICATION DIVISION. PROGRAM-ID. hello. PROCEDURE DIVISION. DISPLAY "Hello, world!". EXIT PROGRAM.
コンパイルを行います。リンクは行いません。
$ cobc -c hello.cob
次に Java と COBOL の間を取り持つ C のプログラムを作ります。前回の bridge_HelloCobol.c を書き換える形です。
#include <libcob.h> #include "bridge_HelloCobol.h" /* COBOL プログラムのプロトタイプ宣言 */ extern int hello(void); JNIEXPORT void JNICALL Java_bridge_HelloCobol_sayHello(JNIEnv *env, jobject obj) { /* COBOL の初期化 */ cob_init(0, NULL); /* COBOL プログラムの実行 */ hello(); }
コンパイルを行います。cob-config コマンドを使って、OpenCOBOL 用のオプションを与えている点に注意してください。
gcc -fPIC -g -I$JAVA_HOME/include/ -I$JAVA_HOME/include/linux/ `cob-config --cflags` -c bridge_HelloCobol.c
最後にリンクします。ここでも cob-config コマンドを使って、OpenCOBOL 用のオプションを与えています。
$ gcc --shared `cob-config --libs` -o libHello.so *.o
これで出来上がった libHello.so は、前回のエントリと同じ Java プログラムから呼び出すことができます。