2017年8月23日水曜日

【NVALID関数】指定した文字が変数名として有効か調べる


NVALID関数 を使うと、
指定した文字値が、SAS変数名として有効かどうかをチェックすることが出来ます。



構文


  NVALID( var , type )


① var   … 変数名として有効かチェックする文字値、またはチェックする文字値が格納された変数を指定。
② type … 変数名の規則タイプを指定。 "v7" を指定すると以下の規則(通常のSAS変数名の規則)でチェックが可能。

・先頭が半角の「英字」 または 「アンダースコア」
・後続の文字が半角の「英数字」または「アンダースコア」
・32文字以下

③変数名として有効であれば「1」、無効であれば「0」を返します。






サンプルデータ作成
data DT1;
input X & $10.;
cards;
myvar
my var
onevar
1var
;
run;
 X 
  myvar  
  my var
  onevar
  1var


変数 X に格納された値が変数名として有効かどうか判定
data DT2;
   set DT1;
   Y = nvalid( X , "v7" );
run;
 X 
   Y   
  myvar  
   1 
  my var
   0 
  onevar
   1
  1var
   0 




実践例

この関数は、マクロで使うと便利です。

%macro TEST( VAR= );

     %if "%sysfunc(nvalid(&VAR,v7))" = "0" %then %do;
          %put %str(E)RROR: マクロ変数 VAR の値が有効な変数名ではありません;
          %put %str(E)RROR: マクロ TEST を停止します;
          %return;
     %end;

     data DT1;
         &VAR = 1;
     run;

%mend;

%TEST( VAR=MY VAR );

ログ
ERROR: マクロ変数 VAR の値が有効な変数名ではありません
ERROR: マクロ TEST を停止します

上の例では、
マクロ「TEST」の引数「VAR」には有効なSAS変数名を指定しなきゃいけないようにし、無効なSAS変数名が指定されたら、ERRORをログに出して、マクロを停止しています。



後、別の実践例として以前書いた変数定義書のチェックにもNVALIDが使えます。
http://sas-boubi.blogspot.jp/2014/09/blog-post.html

0 件のコメント:

コメントを投稿