2015年4月20日月曜日

変数名は「A001 - A100」や「A0000001 - A100」という指定も出来る。


変数名をいっきに指定する方法 [まとめ]の番外編的な内容になります。


さっそくですが、以下のプログラムを実行すると、どんな変数が作られるでしょうか?
data DT2;
   length  A001 - A100 8. ;
run;


正解は、「A001, A002, A003 ・・・ A100」といった変数が作られます。


では、次の例はどうでしょう?
data DT3;
   length  A0000001 - A100 8.;
run;


実はこれも「A001, A002, A003 ・・・ A100」という変数ができます。
「A0000001」とゼロを沢山指定しても、余分なゼロは取り除かれ、最後に指定した変数「A100」のケタ数に揃えてくれます。

役に立ちそうな一例として、以下のようなマクロも簡単につくれてしまいます。

%macro MAC( DS, NUMBER );

   data &DS;
      length A0000001 - A&NUMBER 8.;
   run;

%mend;

%MAC( DT4, 12 );
%MAC( DT5, 123 );


マクロ実行文「%MAC( DT4, 12 )」では、変数A01~A12が作成されます。
マクロ実行文「%MAC( DT5, 123 )」では、変数A001~A123が作成されます。

このように変数の数によって、臨機応変にゼロを挿入した変数名を作ることが出来ます。


ひとつ気をつけるところが、次のように書くと、
data DT1;
   length  A01 - A123 8.;
run;


出来る変数は「A01・・・ A99, A100 ・・・ A123」となります。

最初の指定変数「A01」が最後の指定変数「A123」よりもゼロの数が少ないような場合は、変数名のケタがそろわない状態でつくられてしまうので、ケタをそろえたいのであれば、最初の指定変数を「A0000001」とか長めに指定しといた方がいいかもです。

0 件のコメント:

コメントを投稿