2019年7月24日水曜日

ARRAYステートメントでのLENGTH指定





配列に定義した新たな変数に変数長(LENGTH)を割り当てたい場合は、以下のような感じで書きますが、、

data test;
    length a b c $10.;
    array ar(3) a b c;
run;




ARRAYステートメントで直接定義することも可能(※)

data test;
    array ar(3) $10. a b c;
run;




※ 注意点

SASの挙動として当たり前な話ではありますが、
データステップ内で変数に対して変数長が設定された後、途中で変数長を変えることは出来ません。


NG例①

以下のように、ARRAYステートメントで変数長を設定後、LENGTHステートメントで変数長を変えることは無理。

data test;
    array ar(3) $10. a b c;
    length a b c $20.;
run;

以下、PROC CONTENTSでの確認結果。










NG例②

逆もしかり、
LENGTHステートメントで変数長を設定後に、ARRAYステートメントで変数長を変えることは無理。
注目したいのが、例①ではログにWARNINGが出たのに対し、以下のようにARRAYステートメントで変数長を後出しした場合、WARNINGが出ません。

data test;
    length a b c $5.;
    array ar(3) $10. a b c;
run;









0 件のコメント:

コメントを投稿