NVALID関数 を使うと、
指定した文字値が、SAS変数名として有効かどうかをチェックすることが出来ます。
NVALID( var , type ) |
① var … 変数名として有効かチェックする文字値、またはチェックする文字値が格納された変数を指定。
② type … 変数名の規則タイプを指定。 "v7" を指定すると以下の規則(通常のSAS変数名の規則)でチェックが可能。
・先頭が半角の「英字」 または 「アンダースコア」
・後続の文字が半角の「英数字」または「アンダースコア」
・32文字以下
③変数名として有効であれば「1」、無効であれば「0」を返します。
・後続の文字が半角の「英数字」または「アンダースコア」
・32文字以下
③変数名として有効であれば「1」、無効であれば「0」を返します。
サンプルデータ作成
data DT1;
input X & $10.; cards; myvar my var onevar 1var ; run;
|
変数 X に格納された値が変数名として有効かどうか判定
data DT2;
set DT1; Y = nvalid( X , "v7" ); run;
|
この関数は、マクロで使うと便利です。
%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 件のコメント:
コメントを投稿