2015年9月19日土曜日

データステップ外で関数を使えるようにする「%SYSFUNC」その2




その1」 のおまけ。
%SYSFUNCで、PUT関数とかINPUT関数を使ったらエラーでたんだけど。。」という質問をもらう事があります。



試してみる。

proc format;
   value  FMT_
   1="aa"
   2="bb"
   ;
run;

%put %sysfunc( put(2,FMT_) );

ログ
ERROR: %SYSFUNC または %QSYSFUNC マクロ関数で参照されている PUT 関数がありません。



確かにエラーが出ます。
実は%SYSFUNCでは、PUT / INPUT関数がサポートされていません。
代わりに、PUTN / PUTC / INPUTN / INPUTC関数 がサポートされてるので、これらで代用できます。

%put %sysfunc( putn(2,FMT_) );

ログ
bb



PUTN関数などは、SASYAMAさんが解説をされています。

データステップでは 「putn(2, "FMT_")」 というように書きますが、%SYSFUNCでは文字列を引用符(クオーテーション)で囲む必要がないので、「putn(2, FMT_)」 と書きます(前回の記事参照)




おまけ

%SYSFUNC関数の小技

0 件のコメント:

コメントを投稿