マクロ変数の存在確認

[OS] ALL
[リリース] SAS9以降
[キーワード] macro variable, existence, function, SYMEXIST, SYMGLOBAL, SYMLOCAL

[質問]

マクロ変数が存在するかどうかを確認する方法はありますか。

[回答]

SAS9から新たに下記の関数が追加されました。
これらの関数を使用することで、マクロ変数の存在チェックや、グローバルマクロ変数・ローカルマクロ変数の区別を簡単に確認できます。

SYMEXIST関数 マクロ変数が存在するかどうかを確認します
SYMGLOBL関数 そのマクロ変数がグローバルマクロ変数であるかどうかを確認します
SYMLOCAL関数 そのマクロ変数がローカルマクロ変数であるかどうかを確認します

以下に、各関数の使用例を示します。


   OPTIONS NOMPRINT;
   DATA sample;
     INPUT char $ @@;
   CARDS;
   x y z
   ;
   RUN;
   %GLOBAL x;
   %MACRO test;
     %LOCAL y;
       DATA _NULL_;
         SET sample;
           IF SYMEXIST(char) = 0
             THEN PUT char "は存在しません";
             ELSE IF SYMGLOBL(char)
               THEN PUT char "はグローバルマクロ変数です";
               ELSE IF SYMLOCAL(char)
                 THEN PUT char "はローカルマクロ変数です";
       RUN;
   %MEND test;
   %test;