今回はCALL SYMPUTについて解説します。
/*その1*/
data data1;
kyo = today();
run;
![](https://how-to-business.com/wp-content/uploads/2021/10/18277846eaa4a4f7d0c0ff838cdcd673.png)
- today()は本日の日付をSAS日付で取得する。
/*その2*/
data data1;
kyo = put(today(),yymmdd10.);
run;
![](https://how-to-business.com/wp-content/uploads/2021/10/41a82cfa5c6d608b3f84ed81f45c85fd.png)
- today()は本日の日付をSAS日付で取得する。
- putにより、today()の値をyymmdd10.形式にしてkyoに代入する。
/*その3*/
%let kyo=2021-10-15;
%put &kyo.;
![](https://how-to-business.com/wp-content/uploads/2021/10/9d00a252b02ab8b0fb8ba9a36ae2d740.png)
- %letでkyoに「2021-10-15」が代入される。
/*その4*/
%let kyo = put(today(),yymmdd10.);
%put &kyo.;
![](https://how-to-business.com/wp-content/uploads/2021/10/6f12076a81c3bed347970391690bd0f8.png)
- その2とその3を合わせて、マクロ変数「kyo」に「put(today(),yymmdd10.)」を代入したいが、関数が計算されずに文字列として代入されてしまっている。
- 関数はデータセットの中でしか使えない。
/*その5*/
data _NULL_;
call symput("kyo",put(today(),yymmdd10.));
run;
%put &kyo.;
![](https://how-to-business.com/wp-content/uploads/2021/10/7ec729c139c7cceecfdcc48d83ce6bb8.png)
- マクロ変数への代入で関数を使いたい場合はCALL SYMPUTを使う。
- kyoに「2021-10-15」が代入される。