データセットオプションの意図的な空指定

どうってことないことかもしれませんが。

data Q1;
 X=1;Y=2;Z=3;
run;

のデータセットに

data A1(drop= rename=());
 set Q1;
run;

を実行すると、問題なく実行されます。

(drop= rename=())の部分は完全に意味のない空指定として無視されます。

それがどうした?といった感じなんですが、マクロ化する時なんかに
この性質を知っていると書きやすいです。


%macro ma(dr,rn);
 data A1(drop=&dr rename=(&rn));
  set Q1;
 run;
%mend;

とのようなマクロを作った時、
何も操作を加えず、データセットQ1をA1として作成したい場合は

%ma(,)

でOKです。僕はずっと、こけると思ってました。

それで例えば

%ma(X Y,%str(Z=A))

で実行すれば

変数X Yが落ちて、ZがAにリネームされます。


ただし、注意点として

data A2(where=());
 set Q1;
run;

は駄目です、エラーになります。これ、通るようにならないかなぁ。





0 件のコメント:

コメントを投稿