|
|
SYMPUT関数の使用
[OS]ALL
[リリース] 5.18, 6.07, 6.08, 6.09, 6.10
[キーワード] base, datastep, %put, run, statement, macro, variable, call, symput, doublequote
[質問]以下のDATAステップでSYMPUTルーチンで作成したマクロ変数が、思ったように参照できません。なぜでしょうか。
data _null_;
set sasuser.class;
retain max 0;
if max<weight then do;
call symput('NUM',trim(put(height,best.)));
%put &NUM;
end;
run;
[回答]DATAステップの実行は、次の3つのステップに分かれます。
ステップ1からステップ2に移るタイミングは、RUNまたは別のPROCおよびDATAステートメントを読み込んだときです。
一方、%PUTステートメントは、そのステートメントを読み込んだ時点で実行されます。
質問のプログラム例で%PUTステートメントが実行されるのは、RUNステートメントの読み込み前、すなわち上記のステップ1です。
data _null_;
set sasuser.class;
retain max 0;
if max<weight then do;
call symput('NUM',trim(put(height,best.)));
end;
run;
%put &NUM;
つまり、RUNステートメントと%PUTステートメントを入れ変えるだけです。
|
|||||