|
|
2000年問題が大きな社会話題として扱われたこともあり 多くの企業が2001年9月9日問題対応に関するページを作成したが、 マスコミはほとんどこの問題を取り上げなかった。また一方で 「秒数を10進9桁を上限とするプログラムを組むことなど考えられない」 「トラブルは起こらないのではないか」という技術者の意見もあった。
だが個々のプログラムのレベルでは実際に問題が発生してしまった。 確認されたものには「Yahoo Japan掲示板」「CVSup」 「gnus」が挙げられる。
これらの原因の多くは1970年からの秒数を文字列表現に直して ソートしたことによるものであった。文字列(辞書順)でソートすると 「1000000000」<「999999999」となり、項目が正しい順番で並ばなくなる。 これにより新たに作られた項目が一覧表示されない、所定の動作が 行われない、あるいは古い項目と勘違いされて削除されるなどの 不具合が起こる。
UNIXのlsコマンドは、ファイル名が数値であっても文字列と みなしてソートする。またCGIプログラミングで広く使われている Perlも、sortコマンドは「数値は文字列に変換してから ソートする」のがデフォルトとなっている。
このように文字列ソートがデフォルトになっていることに加え、 1970年からの秒数が9桁になったのは1973年だったことも プログラマが油断するひとつの要因にもなった。 今動いているほとんどのプログラムは1973年以降作られたもので ありこれまでずっと秒数は9桁だったために、うっかり文字列で ソートしても問題が起こらなかったのである (ちなみに10桁→11桁になるのは2286年という遥か先の話で、 それよりも先に2038年問題がやってくる)。
2001年9月9日問題は、社会的には2000年問題より扱いが 小さかったが、プログラマにとっては想定外のバグについてあらためて 考えさせられる事件だったと言える。