さて、普段は知ってても知らなくても、どーでもいいようなことばっかり書いているこのブログですが、今回ばかりは全てのSASプログラマーにとって極めて深刻な問題について取り上げます。
姿勢を正して、真剣に読んでください。
data A1;
X=mdy(1,1,20000);
Y=mdy(1,1,20001);
format X WORDDATE32.;
run;
をやると結果はどうなるでしょう?
mdy関数を知らない方は、SAS忘備録の記事
「日付値を簡単に作るMDY関数の紹介」
をよんでください
WORDDATEフォーマットは
「 January 1 2014」みたいな形式です。
ただ、mdy関数もフォーマットも、この深刻な問題の根本にはあまり関係ないです。
結果は
です。
関数の指定は何も間違っていないのに、何故欠損なのか?
実はSASは日付として、西暦2万年12月31日にあたる範囲までしか、サポートしてないからです。
2万1年目はないんです。
今後、現在のバージョンのSASで作られたシステムを使い続けると、西暦2万1年の1月1日を
迎えた途端、全てのSASのtoday関数などが欠損になります。
それによって世界が大混乱するわけですね。
これがSASの西暦2万1年問題です。
today関数が欠損を返しても、ミサイルとか発射されないように、エラー分岐に気を付けてください。
やっぱり、どーでもよかった
0 件のコメント:
コメントを投稿