今回は%SYSFUNC関数について、%LETステートメント中の挙動に着目して解説します。
/* substr */
%let a = substr(123456789, 2, 4);
data data1;
Id1=&a.;
output;
run;
- substrにより、2345を切り取ろうとしている。
- データステップの外でsubstr関数を使うと動きがおかしい。(?)
/* %sysfunc_substr */
%let a = %sysfunc(substr(123456789, 2, 4));
data data1;
Id1=&a.;
output;
run;
- substrにより、2345を切り取る。
- %sysfuncにより、関数をデータステップの外で使える。⇒substrの動きが正常になった。
/* %sysfunc_date() */
%let a = %sysfunc(date(),yymmddn8.);
data data1;
Id1=&a.;
output;
run;
- %sysfuncにより、関数をデータステップの外で使える。
- %sysfuncはSAS日付値⇒日付形式への変換の役割も兼ねている(?)
/* put */
%let a = put(date(),yymmddn8.);
data data1;
Id1=&a.;
output;
run;
- putにより、date()をyymmddn8.形式にする。
- データステップの外でもput関数が使えている(?)