Rational Developer for System z
COBOL for Windows バージョン 7.5 プログラミング・ガイド


JNI サービスへのアクセス

Java Native Interface (JNI) は、COBOL と Java を併用するアプリケーションを開発する際に使用できる多くの呼び出し可能サービスを提供します。 このサービスへの アクセスを円滑に行うには、COBOL プログラムの LINKAGE SECTION に JNI.cpy を コピーします。

JNI.cpy コピーブックには、以下の定義が含まれています。

次の図に示すように、JNI 環境ポインターからの 2 つのレベルの 間接化技法によって JNI 環境構造を取得します。

この図は、JNI 環境構造を表しています。JNIEnvPtr は、スレッドごとのポインターを指し、スレッドごとのポインターは JNI 関数ポインターの配列を指しています。

特殊レジスター JNIEnvPtr を使用して、JNI 環境ポインターを参照し、JNI 環境構造のアドレスを取得します。JNIEnvPtr は、USAGE POINTER を使用して暗黙的に定義されます。それを受取データ項目として使用することは できません。 JNI 環境構造の内容を参照する前に、以下のステートメントをコーディングして、そのアドレス可能度を確立する必要があります。

Linkage section.
COPY JNI
. . .
Procedure division.
    Set address of JNIEnv to JNIEnvPtr
    Set address of JNINativeInterface to JNIEnv
    . . .

上のコードは、以下の項目のアドレスを設定します。

上記のステートメントをコーディングした後に、関数ポインターを参照する CALL ステートメントを使用して、JNI 呼び出し可能サービスに アクセスすることができます。次の例に示すように、環境ポインターを必要とするサービスに、最初の引数として JNIEnvPtr 特殊レジスターを渡すことができます。

01 InputArrayObj usage object reference jlongArray.
01 ArrayLen pic S9(9) comp-5.
. . .
    Call GetArrayLength using by value JNIEnvPtr InputArrayObj
      returning ArrayLen

重要: すべての引数を値によって JNI 呼び出し可能サービスに渡します。 相互運用可能にするには、引数をネイティブ形式にする必要があります (例えば、データ記述記入項目に NATIVE 文節を使用して宣言します)。

一部の JNI 呼び出し可能サービスは、Java クラス・オブジェクト参照を引数として必要とします。 クラスに関連付けられたクラス・オブジェクトへの参照を取得するには、以下の JNI 呼び出し可能サービスのどちらかを使用します。

制限: JNI 環境ポインターはスレッド固有のものです。 スレッド間での受け渡しはしないでください。

関連タスク
ローカル参照とグローバル参照の管理
Java 例外の処理
COBOL および Java での相互運用可能なデータ型のコーディング
クライアントの定義

関連参照
付録G. JNI.cpy
Java Native Interface


ご利用条件 | フィードバック

Copyright IBM Corporation 1996, 2008.
このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)