nativeLibrary 型のライブラリー・パーツ

nativeLibrary 型のライブラリーを使用すると、EGL 生成 Java™ コードで単一のローカル実行 DLL を呼び出すことができます。 その DLL 用のコードは、EGL 言語では書かれていません。EGL 言語で書かれている 共用の関数と値が入っている基本ライブラリーの開発方法についての情報は、『basicLibrary 型のライブラリー・パーツ』を参照してください。

nativeLibrary 型のライブラリーでは、各関数の目的は DLL 関数へのインターフェースを提供することです。 EGL 関数内で文を定義することはできず、ライブラリー内の任意の場所で変数や定数を宣言することもできません。

EGL ランタイムは、DLL ベースの関数にアクセスする場合、EGL 関数プロパティー alias の設定値を使用します。このプロパティーのデフォルト値は、EGL 関数名です。 DLL ベースの関数が『命名規則』で説明されている規則に準拠していない場合は、このプロパティーを明示的に設定してください。

ライブラリー・プロパティー callingConvention は、EGL ランタイムが次の 2 種類のコード間でデータを受け渡す方法を指定します。
現時点で callingConvention に使用可能な値は、I4GL のみです。つまり、

ライブラリー・プロパティー dllName は、最終的な DLL 名を指定します。これをデプロイメント時にオーバーライドすることはできません。 ライブラリー・プロパティー dllName の値を指定しない場合は、DLL 名を Java ランタイム・プロパティー vgj.defaultI4GLNativeLibrary の中で指定する必要があります。 そのような Java ランタイム・プロパティーは、1 つの実行単位に 1 つだけ使用できます。したがって、EGL ライブラリー内で識別される DLL のほかに、1 つだけ DLL を指定できます。

DLL 名を開発時に (dllName で) 指定する場合でも、デプロイメント時に (vgj.defaultI4GLNativeLibrary で) 指定する場合でも、その DLL は、ランタイム変数内で識別されるディレクトリー・パスに存在する必要があります。その変数は、PATH (Windows® 2000/NT/XP の場合) または LIBPATH (UNIX® プラットフォームの場合) です。

ライブラリー関数は、ライブラリーの外部からも使用できるよう、自動的に public として宣言されます。 他の EGL コードの中では、ライブラリー名を指定せずに、関数の別名のみで関数を参照できますが、それは、そのライブラリーをプログラム固有の使用宣言に組み込んだ場合に限られます。

EGL ライブラリーは、そのライブラリーにアクセスするコードや DLL とは別個の Java クラスとして生成されます。 EGL ランタイムは、そのクラスにアクセスする場合、ライブラリー・プロパティー alias の設定値を使用します。このプロパティーのデフォルト値は、EGL ライブラリー名です。 ライブラリー・パーツの名前が Java の規則に準拠していない場合は、このプロパティーを明示的に設定してください。

実行時には、DLL は最初に使用されるときにロードされ、その DLL にアクセスしたプログラムまたは PageHandler が (実行単位が終了したときのように) メモリーを離れたときにアンロードされます。

PageHandler は、ロードされるたびに DLL の新しいコピーを取得します。 また、basicLibrary 型の EGL ライブラリーによって呼び出された DLL は、呼び出し元のライブラリーが存続している間はメモリー内に存続します。

次のネイティブ・ライブラリーは、C で書かれた DLL へのアクセスを提供します。
  Library myLibrary type nativeLibrary
  {callingConvention=”I4GL”, dllname=”mydll”}
	
    Function entryPoint1( p1 int nullable in, 
                          p2 date in, p3 time in, 
                          p4 interval in, p5 any out) 
    	end

    	Function entryPoint2( p1 float in, 
                          p2 String in, 
                          p3 smallint out)
    	end

    	Function entryPoint3( p1 any in, 
                          p2 any in, 
                          p3 any out, 
                          p4 CLOB inout)
    	end
  end

関連概念
Java ランタイム・プロパティー
basicLibrary 型のライブラリー・パーツ

関連リファレンス
EGL ソース形式の関数パーツ
Java ランタイム・プロパティー (詳細)
EGL ソース形式のライブラリー・パーツ
命名規則
実行単位
使用宣言

フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.