ネイティブ Java オブジェクトへのアクセス

制約事項: 次の説明はネイティブ コードのみに該当します。

オブジェクト指向 COBOL の Java ドメインを使用する場合、Java オブジェクトに直接アクセスすることはありません。常にプロキシを経由してアクセスします。一方、javasup クラスの getJavaObject メソッドを使用すると、実際の Java オブジェクトへのポインターを取得することができます。このメソッドを Java Native Interface (JNI) と組み合わせて使用すると、オブジェクト指向 COBOL の Java ドメインでは利用できない Java の機能も利用可能になります。

JNI ポインターを取得するには、javasup クラスの getEnv メソッドを呼び出します。JNI ポインターは関数テーブルへのポインターです。次の例に示すように、コピーブック javatypes.cpy で定義されている JNINativeInterface 構造体を使用すると、JNI 関数テーブルに容易にアクセスできます。

 working-storage section. 
 01 JEnv                        pointer.
 linkage section.
 01 lnk-JNINativeInterface      JNINativeInterface.

*>
 procedure division.
     invoke javasup "getEnv" returning jEnv
*>   Map the pointer passed in JEnv to the
*>   JNINativeInterface structure so that we
*>   can call JNI functions.
     set address of lnk-JNINativeInterface to JEnv
*>   

以上の処理を行うと、JNINativeInterface の型定義で指定されている名前を使用して、JNI 関数を呼び出すことが可能になります。

具体的には、COBOL 開発システム インストールの docs/mfcobol.docs.zip 内にある「Java Run-time Class Library Reference」を参照してください。