Rational Developer for System z
PL/I for Windows, Version 7.6, プログラミング・ガイド

ステップ 3: PL/I プログラムの作成

ネイティブ・メソッドの PL/I インプリメンテーションは、他の PL/I サブルーチンとほぼ同じようなものです。

便利な PL/I コンパイラー・オプション

サンプル・プログラムには、重要なコンパイラー・オプションを定義する 一連の *PROCESS ステートメントが含まれています。

 *Process Limits( Extname( 31 ) ) Margins( 1, 100 ) ;
 *Process Dllinit xinfo(def);
 *Process Default( IEEE );

次に、これらのオプションの概要と利点を説明します。

Extname(31)
Java スタイルの長い外部名を許可します。
Margins(1,100)
マージンを拡張して、Java スタイルの名前と ID が入る場所を 確保します。
Dllinit
DLL の作成に必要な初期化コードをインクルードします。
xinfo(def)
DLL の作成で使用される *.DEF ファイルを作成するように、コンパイラーに指示します。
Default( IEEE );
IEEE は、FLOAT データを IEEE フォーマット (Java で の保持形式) で保持するように指定します。

PL/I プロシージャー名とプロシージャー・ステートメントの正しい形式

PL/I プロシージャー名は、実行時に Java クラス・ローダーによって 検出されるために、Java 命名規則に準拠している必要があります。Java 命名体系は 3 つの部分で構成されます。最初の部分は Java 環境に対してルーチンを識別し、2 番目の部分はネイティブ・メソッドを定義する Java クラスの名前、3 番目の部分はネイティブ・メソッド自体の名前です。

次に、サンプル・プログラムにある外部 PL/I プロシージャー名 _Java_callingPLI_callToPLI を 分けて説明します。

_Java
動的ライブラリー内にあるネイティブ・メソッドはすべて、_Java を最初に指定する必要があります。
_callingPLI
ネイティブ・メソッドを宣言する Java クラスの名前。
_callToPLI
ネイティブ・メソッド自体の名前。
注:
PL/I と C の間では、ネイティブ・メソッドのコーディングに重要な 違いがあります。JDK に付属する javah ツールは、C プログラムに必要な外部参照形式を生成します。ネイティブ・メソッドを PL/I で書き、前述した PL/I 外部参照の命名規則に準拠する場合は、PL/I ネイティブ・メソッドに対して javah ステップを 実行する必要はありません。

サンプル・プログラムの完全なプロシージャー・ステートメントは、次のとおりです。

  Java_callingPLI_callToPLI:
  Proc( JNIEnv , MyJObject )
    External( "_Java_callingPLI_callToPLI" )
    Options( NoDescriptor ByValue linkage(stdcall) );

JNI インクルード・ファイル

Java インターフェースの PL/I 定義を含む PL/I インクルード・ファイルは、次の 2 つのインクルード・ファイルに含まれています。2 つのファイルは、jni.cop の中に jni_md.cop が含まれる構造になっています。これらのインクルード・ファイル は、次のステートメントによって組み込まれます。

   %include jni;

jni.cop ファイルの完全なリストについては、¥ibmpliw¥include ディレクトリーを 参照してください。


Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)