以下をご覧ください。
data DT1; length A 8.; run; ログ |
ログにNOTEとして 「変数Aは初期化されていません」 と出ます。
これは「変数が作成されたのになにも値が与えられていない」ときに出てくるログです。
上の例では「変数Aを定義して作成したのに、なにも値が与えられていない」ということですね。
このように初期化されていない変数は、変数の枠だけ作られて、中身は欠損値になります。
ERRORとかWARNINGじゃないし放っとくか、となるかもしれませんが、このメッセージが役に立つ場合もあります。
たとえば、以下のプログラムを実行して、ログを見てみると、、
data DT2; length AAABBB 8.; AAABB = 1; run; ログ NOTE: 変数AAABBBは初期化されていません。 |
あれ?「length AAABBB 8.」で属性定義した後、ちゃんと「AAABB = 1」で値をセットしてるのに、、、
しかしプログラムをよく見ると、
length AAABBB 8.; AAABB = 1; |
このように変数名のタイプミスをしてしまった時などに、この初期化メッセージが気づかせてくれる事があるので、侮れません。
ていうか、私自身、結構やってしまうミスなので、いつも助けられてます。
ちなみに「属性定義だけして、中身は欠損値でいいんだけど、、初期化メッセージが出るのはヤダ。。」といった場合は、欠損値を与える事の出来る CALL MISSING が便利です。
data DT3; length A 8. B C $10.; call missing( A, B, C ); run; |
続く(VARINITCHKオプションで、「変数○○は初期化されていません」をWARNINGやERRORにする。)
0 件のコメント:
コメントを投稿