2019年10月16日水曜日

マクロの実行を中止する「%RETURNステートメント」




  • 「%RETURNステートメント」でマクロの実行を中止します。
  • 「%RETURN」が書かれたところから中止される。
  • 「親マクロ」の中に「子マクロ」を入れたネスト構造のマクロで、「子マクロ」の中のみに%RETURNを指定した場合は「子マクロ」のみ中止される。




私はよく以下のような感じで使ってます。


例

%macro test( in_ds=, out_ds= );
 
   * 引数チェック ;
   %if %sysfunc( exist( &in_ds ) ) = 0 %then %do;
      %put WARNING: データセット &in_ds が存在しないか利用不可. マクロTESTを中止します;
      %return;
   %end;

   * 引数チェックをクリアしたあとの処理 ;  
   data &out_ds;
      set &in_ds;
   run;

%mend;
%test( in_ds=work.aaa, out_ds=bbb )


ログ
WARNING: データセット work.aaa が存在しないか利用不可. マクロTESTを中止します



最初にマクロの引数がちゃんと正しく設定されてるか確認して、正しくない場合、

  • WARNING等のメッセージを出す
  • %RETURNでマクロを中止させる

みたいな流れです。


0 件のコメント:

コメントを投稿