2017年7月31日月曜日

My Favorite SAS Functions (10) CALL SYMPUTX



最後はコールルーチンになりますが、CALL SYMPUTXを紹介します。



構文

  CALL SYMPUTX(  "マクロ変数名" , 変数名  )


・指定した変数の両脇の半角スペースを取り除いたうえで、マクロ変数に格納する。

・数値変数を指定した場合、bestフォーマットを使って文字変換される。
(bestフォーマットに変換した値なので、元の変数値とは異なる (丸め処理が行われる) 場合があることにご注意ください)






それでは、CALL SYMPUTXを使わない場合と、使った場合を比較してみましょう。
以下は、数値変数 X の値をマクロ変数 Y に格納する例です。


Before
data _null_;
   X = 123456;
   call symput("Y", trim(left(put(X,best.))));
run;

%put "&Y";

ログ
"123456"

CALL SYMPUTの中で、「trim(left(put(X,best.)))」 として、
bestフォーマットで文字変換してから余計な両脇の半角スペースを取り除く処理をしていますが、なんて面倒なんだって感じですね。


以下、CALL SYMPUTX を使うとスッキリとした文になります。

After
data _null_;
   X = 123456;
   call symputx("Y",X);
run;

%put "&Y";

ログ
"123456"



📝ちなみに

CALL SYMPUT / SYMPUTX は以下記事で紹介済みですが、数値が丸められる話や、「ローカル・グローバルマクロ変数」の概念によってミスしがちな話など、詳しい挙動を書いているので是非こちらも参照下さい。



以上、過去記事の焼き直しみたいな記事が続いてしまいましたが、
それだけ便利かつアイディア次第で色々できる関数たちなので再度紹介してきました。

色々使い方考えるの楽しいので、SASプログラムを楽しむ人達が増えるといいなぁ。



記事一覧

1.CATS関数
10.CALL SYMPUTX

0 件のコメント:

コメントを投稿