あまりやらない処理ですが、業務で使うことがあったのでメモ。
データセット内の変数であっても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等で限定する必要があります。
結果

ログ

コメント