あまりやらない処理ですが、業務で使うことがあったのでメモ。
データセット内の変数であってもcall symputルーチンによってマクロ変数に入れることができます。
例1
コード
data test_1;
aaa = "xxx";
call symput("val", aaa);
run;
%put &val.;
変数をcall symputによってマクロ変数に入れ、その値をログ出力しています。
他の例も同様です。
結果

ログ

例2
コード
data test_2;
bbb = 123;
call symput("val", strip(put(bbb, best.)));
run;
%put &val.;
数値の場合も文字へ変換することで同様に処理できます。
結果

ログ

例3
コード
data test_3;
set sashelp.class;
call symput("val", name);
run;
%put &val.;
オブザベーションが複数あるデータセットの場合、当然ながら最後のオブザベーションが対象となります。意図した結果にならない場合は事前に必要なオブザベーションをwhere等で限定する必要があります。
結果

ログ


コメント