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