変数の存在チェック

[OS] ALL
[リリース] SAS System 8以降
[キーワード] Base, variable, exist, chek, function, VNAMEX

[質問]

データセットに特定の変数が含まれているかどうかをチェックする方法はありますか。

[回答]

VNAMEX関数を使用してチェックできます。

VNAMEX関数の書式は下記のとおりです。


  VNAMEX(変数名)

VNAMEX関数は、引数に指定した変数が存在する場合は変数名を返し、存在しない場合はブランクを返します。
下記に使用例を示します。


  /* サンプルデータ */ 
  DATA test;
    var1 = 1; 
  RUN;

  %MACRO test(dsname,varname); 

  /* マクロ変数 c1 を 0 に設定 */
    %LET c1=0;

    DATA _NULL_; 
      SET &dsname; 
            /* 指定した変数があればマクロ変数c1に1を格納 */
      IF VNAMEX("&varname") = '' then
        PUT "&varname は存在しません。";
      ELSE DO;
        PUT "&varname は存在します。";
        CALL SYMPUT('c1',1);
      END;
    RUN;

     /* マクロ変数 c1 が 1ならPRINTプロシジャを実行 */
    %IF &c1=1 %THEN %DO;
      PROC PRINT DATA=&dsname; 
      RUN;
    %END;

  %MEND;

  %test(test,var1)
  %test(test,var2)