変数をマクロ変数に入れる

スポンサーリンク

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

結果
ログ

コメント