2015年10月13日火曜日

比較演算子のアルファベット表記と、ちょっとした小技





IF / WHEREステートメントで用いる比較演算子は、アルファベット2文字で書くことができます。

 比較演算子  別の書き方  意味 
 = EQ equal to
 ^= NE not equal to
 > GT greater than
 < LT less than
 >= GE greater than or equal to
 <= LE less than or equal to


たとえば 「if A=1」 は 「if A eq 1」 とも書けます。

海外のSASプログラムを見てると、このアルファベット2文字を使ってる事が結構あります。

各自が好きな書き方でプログラミングを楽しめるのが一番だと思いますが。。
まわりのSASプログラマに聞いてみたら、この書き方は結構受けが悪かったです。




ちょっとした小技

受け悪いって方にも、使えるかもしれないテクニックを紹介。
以下をご覧ください。

%macro SAMPLE( WH );
     data DT1;
          set SASHELP.CLASS;
          where &WH;
     run;
%mend;

%SAMPLE( AGE = 13 );

ログ
 ERROR: キーワードパラメータAGEは、マクロに定義されていません。


詳細は割愛しますが、
%SAMPLE( AGE = 13 )」 で 「AGE = 13」 という引数を指定したわけですが、引数にイコール「=」があると、キーワードパラメータというものとして解釈され、今回の意図とは異なる動きをしてエラーとなってしまいました。


通常の解決方法として、%STR関数等で 「=」 の効力を無効化してやります。

%SAMPLE( %str(AGE = 13) );



そして、もうひとつの解決方法。

%SAMPLE( AGE eq 13 );




アルファベット表記に変えてしまえば、「=」 を使わなくて済むというわけです。



0 件のコメント:

コメントを投稿