前のページ|次のページ

MODULE関数

外部のダイナミックリンクライブラリ(DLL)に存在する特定のルーチンまたはモジュールを呼び出します。

カテゴリ: 外部ルーチン
注意:
必ず、正しい引数と属性を使用してください。
DLL関数に不正な引数または属性を使用すると、SASソフトウェアやお使いのオペレーティングシステムに障害が発生することがあります。

構文

必須引数

module

使用する外部モジュールの名前です。DLL名とルーチン名またはカンマで区切られた序数の値として指定できます。モジュールは、ダイナミックリンクライブラリ(DLL)に格納され、外部的に呼び出し可能である必要があります。たとえば、値'KERNEL32,GetProfileString'では、KERNEL32.DLLのロードとGetProfileStringルーチンの呼び出しを指定します。DLL名では大文字と小文字を区別しませんが、ルーチン名は、そのルーチンの実装言語の制限に基づいています。したがってルーチン名では大文字と小文字を区別します。

DLLが序数値の命名をサポートしている場合、'XYZ,30'などのように、DLL名の後に10進数を入力して命名することができます。
SASCBTBL属性テーブルでルーチンにMODULE属性を指定した場合は、そのルーチンの名前が一意(すなわち、属性ファイル内に同じ名前を持つ他のルーチンがない)のものである限り、DLL名を指定する必要はありません。
moduleを定数としてではなく、SAS文字式として指定できます。ただし、ほとんどの場合は、定数として渡します。

argument

要求されたルーチンに渡す引数です。引数には適切な属性を使用してください(数値属性には数値引数、文字属性には文字引数)。

オプション引数

control-string

オプションのコントロール文字列です。最初の文字はアスタリスク(*)で、その後に次の文字の任意の組み合わせを指定する必要があります。

I DLLルーチンが呼び出される前と後に、すべての引数を16進数表記で、MODULE関数と要求されたDLLルーチンに出力します。このオプションは、不正な引数や属性テーブルによって発生した問題を診断するために使用できます。Iオプションを指定すると、Eオプションが暗黙的に指定されます。
E エラーメッセージの詳細を出力します。Eオプション(またはこれより優先されるIオプション)がない場合、MODULE関数が生成するエラーメッセージは"Invalid argument to function,"のみになります。この情報では、通常、エラーの原因を特定するには不十分です。
Sx 区切り文字としてxを使い、フィールド定義を分離します。それから、引数のリスト上のxを、それ自身の文字引数として指定できます。この引数は引数リストの区切り文字として機能します。このリスト上の引数は単一の構造体として集められます。SASCBTBL属性テーブルでエントリを供給しない場合にのみ、このオプションを使用してください。SASCBTBL属性テーブルで、このモジュールにエントリを入力する場合は、このテーブル内のARGステートメントのFDSTARTオプションを使用し、構造を分離します。
H MODULEルーチン、属性ファイル形式および推奨されるSAS出力/入力形式の構文についての、手短な役立つ情報を提供します。
たとえば、制御文字列'*IS/'では、パラメータリストを出力し、文字列'/'を引数リスト内で区切り文字として扱うことを指定します。

詳細

MODULE関数では、ルーチンmoduleが実行されます。このルーチンは、arg-1からarg-nまでの指定された引数とともに、外部(SASの外側)ダイナミックリンクライブラリに存在します。
MODULE CALLルーチンでは、値は返されません。MODULEN関数とMODULEC関数では、それぞれ数値numまたは文字値charが返されます。どのルーチンを使用するかは、実行するDLL関数の予測戻り値によって変わります。
MODULEI、MODULEICおよびMODULEINは、MODULE関数の特殊なバージョンです。これらにより、ベクトル引数と行列引数が許可されます。これらの戻り値はスカラーのままです。これらの関数はPROC IMLからのみ呼び出せます。
名前の違いをを除いて、すべての6つのルーチンの構文は同じものです。
MODULE関数は、arg-1からarg-nまでの情報と、分割ファイル内で定義されたルーチンの記述および引数属性テーブルを使用してパラメータリストを作成します。MODULEルーチンを呼び出す前に、SASCBTBLのファイル参照名を定義して、この外部ファイルを示してください。ファイルの作成時にファイルに任意の名前を付けることができます。
SAS変数と出力形式をMODULE関数の引数として使用し、これらの引数がDLLルーチンへ渡される前に確実に正しく変換されるようにすることができます。
CALL MODULEI、MODULEINおよびMODULEICでは、ベクトル引数および行列引数が許容されます。これらの引数は、IMLプロシジャ内で使用できます。詳細については、SAS/IML Studio:User's Guideを参照してください。

関連項目:

前のページ|次のページ|ページの先頭へ