外部ルーチンをリターンコードなしで呼び出します。
カテゴリ: | 外部ルーチン |
操作: | SAS Serverがロックダウン状態の場合、CALL MODULEルーチンは実行されません。詳細については、SAS Processing Restrictions for Servers in a Locked-Down State (SAS言語リファレンス: 解説編)およびSAS Processing Restrictions for Servers in a Locked-Down State (z/OS版SAS)を参照してください。 |
ヒント: | 外部モジュールとロードモジュールは同義語です。ロードモジュールという用語は、通常z/OS環境で使用されます。外部モジュールという用語は、通常UNIX環境およびWindows環境で使用されます。 |
使用する外部モジュールの名前を指定します。moduleは、共有ライブラリとルーチン名またはカンマで区切られた序数の値として指定できます。SASCBTBL属性テーブルでルーチンにMODULE属性を指定していたなら、そのルーチンの名前が固有(すなわち、属性ファイル内に同じ名前を持つ他のルーチンがない)のものである限りは、共有ライブラリ名を指定する必要はありません。詳細については、The SASCBTBL Attribute Table (UNIX版SAS)を参照してください。
要求されたルーチンに渡す引数を指定します。引数には適切な属性を使用してください。(すなわち、数値属性には数値引数を、文字属性には文字引数)
コントロール文字列です(省略可能)。最初の文字はアスタリスク(*)で、その後に次の文字の任意の組み合わせを指定する必要があります。
I | 共有ライブラリルーチンが呼び出される前と後に、すべての引数を16進数表記で、MODULE関数と要求された共有ライブラリルーチンに出力します。このオプションは、不正な引数や属性テーブルによって発生した問題を診断するために使用できます。Iオプションを指定すると、Eオプションがそこに含まれます。 |
E | 詳細なエラーメッセージが出力されます。Eオプション(またはこれより優先されるIオプション)がない場合、MODULE関数が生成するエラーメッセージは"関数の無効な引数,"のみになります。この情報では、通常、エラーの原因を確定するには不十分です。 |
Sx | 区切り文字としてxを使い、フィールド定義を分離します。それから、引数のリスト上のxを、それ自身の文字引数として指定できます。この引数は引数リストの区切り文字として機能します。このリスト上の引数は単一の構造体として集められます。SASCBTBL属性テーブルでエントリを供給しない場合にのみ、このオプションを使用してください。SASCBTBL属性テーブルで、このモジュールにエントリを供給する場合は、このテーブル内のARGステートメントのFDSTARTオプションを使用し、構造定義を分離します。 |
H | MODULEルーチン、属性ファイル形式および推奨されるSAS出力/入力形式の構文についての、手短な役立つ情報を提供します。 |
A | SASCBTBLが利用可能な場合でも、テーブル属性を使用しません。 |
Z | IGZERREを呼び出しません。詳細については、IBM z/OSオペレーティングシステムの付属文書を参照してください。 |
B | その行の下に引数をコピーします。詳細については、IBM z/OSオペレーティングシステムの付属文書を参照してください。 |
T | 属性情報をログに出力します。 |
filename sascbtbl temp; data _null_; file sascbtbl; input; put _infile_; datalines4; routine xyz minarg=2 maxarg=2; arg 1 char format=$3. fdstart; arg 2 num format=ib4.; ;;;;
data _null_; x='abc'; y=1; call module('xyz', x, y); run;
'abc'
が含まれ、その次に配置バイト、その次にIB4.出力形式からの値1(ビックエンディアン環境では'00000001'x、リトルエンディアン環境では'01000000'x)が続きます。XYZルーチンで配置が想定されていない場合は、数値は読み違えられます。
filename sascbtbl temp; data _null_; file sascbtbl; input; put _infile_; datalines4; routine xyz minarg=2 maxarg=2; arg 1 char format=$3. fdstart; arg 2 num format=ibunaln4.; ;;;;
'abc'
を含む集合構造のアドレスを与えられます。そのすぐ後に1の値が続き、間に配置バイトは入りません。
routine xyz minarg=2 maxarg=2; arg 1 input num byvalue format=ib4.; arg 2 output char format=$char10.;
data _null_; call module('xyz', 1, x); run;
routine changi module=trymod returns=long; arg 1 input num format=ib4. byvalue; arg 2 update num format=ib4.;
proc iml; x1=J(4, 5, 0); do i=1 to 4; do j=1 to 5; x1[i,j]=i*10+j+3; end; end; y1=x1; x2=x1; y2=y1; rc=modulein('*i', 'changi', 6, x2);
routine Beep minarg=2 maxarg=2 stackpop=called callseq=byvalue module=kernel32; arg 1 num format=pib4.; arg 2 num format=pib4.;
filename sascbtbl 'myatttbl.dat'; data _null_; rc=modulen("*e", "Beep", 1380, 1000); run;