変数名をいっきに指定する方法 [まとめ]の番外編的な内容になります。
さっそくですが、以下のプログラムを実行すると、どんな変数が作られるでしょうか?
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」とか長めに指定しといた方がいいかもです。