2016年4月21日木曜日

INオペレータは 「X in (A B C)」 のようにカンマが無くてもOK


以下をご覧ください。

data DT1;
   set SASHELP.CLASS;
   where AGE in (13, 14, 15);
run;

「AGEが13, 14, 15のいずれか」 という条件になります。
この書き方は以下のようにカンマを入れなくても動きます。

data DT1;
   set SASHELP.CLASS;
   where AGE in (13 14 15);
run;



カンマを入れない方がプログラムがスッキリして見える気がします。
あと役にたつ例として、単純な例ですが以下のようなマクロがあったとします。

%macro TEST( IN );

   proc means data=SASHELP.CLASS;
       var AGE;
       where AGE in (&IN);
   run;

%mend;


「where AGE in (&IN)」 で INの中身をマクロ変数として指定するようにしています。
「where AGE in (13,14,15)」と展開したい場合、以下のように%STR関数を使ってカンマをクオートする必要がありますが、、
%TEST(%str(13,14,15));



カンマを省略すれば以下のような単純な書き方で済みます。
%TEST(13 14 15);



必要に応じて使い分けてみましょう。

0 件のコメント:

コメントを投稿