2018年8月17日金曜日

「%IF-%THEN / %ELSE」がマクロの外でも使えるようになってる!



「The SAS Dummy」さんの書かれた記事みて、テンション上がりました。
https://blogs.sas.com/content/sasdummy/2018/07/05/if-then-else-sas-programs/



「SAS9.4メンテナンスリリース5」から%IFがマクロの外でも使えるようになってます!

 %let x=1;

 %if &x=1 %then %do;
       %put NOTE: マクロ変数xの値は1です;
 %end;

ログ
 NOTE: マクロ変数xの値は1です

動いたーー!!


今まで%IFはマクロ内でしか使えなくて「%MACRO」と「%MEND」で囲ってましたが、プログラムがちょっと長くなって、いつもテンション下がってたんですよね。




制限事項

現状の「メンテナンスリリース5」では、マクロ外の%IFに2つ制限があるみたいです。


① %THENと%ELSEの後は、「%DO」と「%END」で囲まないとダメ。

例)
%if 条件 %then
   %do;
          実行したい文
   %end;
%else
   %do;
          実行したい文
   %end;



② %IF文はネストして書くことはできない。

例)NGの書き方
%if 条件 %then %do;
     %if 条件 %then %do;
              実行したい文
     %end;
%end;




この制限も次期バージョンとかで改善されてるといいですね。
あとは、%DOもマクロ外で使えるようにしてほしいなぁ


0 件のコメント:

コメントを投稿