今回はCALL SYMPUTについて解説します。
/*その1*/
data data1;
kyo = today();
run;

- today()は本日の日付をSAS日付で取得する。
/*その2*/
data data1;
kyo = put(today(),yymmdd10.);
run;

- today()は本日の日付をSAS日付で取得する。
- putにより、today()の値をyymmdd10.形式にしてkyoに代入する。
/*その3*/
%let kyo=2021-10-15;
%put &kyo.;

- %letでkyoに「2021-10-15」が代入される。
/*その4*/
%let kyo = put(today(),yymmdd10.);
%put &kyo.;

- その2とその3を合わせて、マクロ変数「kyo」に「put(today(),yymmdd10.)」を代入したいが、関数が計算されずに文字列として代入されてしまっている。
- 関数はデータセットの中でしか使えない。
/*その5*/
data _NULL_;
call symput("kyo",put(today(),yymmdd10.));
run;
%put &kyo.;

- マクロ変数への代入で関数を使いたい場合はCALL SYMPUTを使う。
- kyoに「2021-10-15」が代入される。