旧・無印吉澤

昔はてなダイアリーに書いていた記事のアーカイブです

【スクープ】コンピュータの“西暦2038年問題”発生、早くも日本を揺るがす(ITPro)

http://itpro.nikkeibp.co.jp/free/NC/NEWS/20040202/139212/

いわゆるコンピュータの“西暦2038年問題”といわれる事象が日本で発生し、日常生活に影響を与えたことが明らかになった。2038年問題による日常生活への影響が確認されたのは、世界でもほぼ初めて。

(略)

UNIX環境では、システム内部の時刻をグリニッジ標準時GMT)1970年1月1日0時0分0秒からの経過秒数で保持している。経過秒数で表す時刻データに、4バイトの符号付き整数を使っている場合には、2038年1月19日を過ぎると、本来数字の正負を判断するために使う部分まで時刻を表示するために使わざるを得なくなる。その結果、正しい時刻を認識できなくなるのである。

ふむ。確かに今年は2004年で、ちょうど1970年と2038年の間だしなぁ……。えっ? ということは、int型の場合よりも更に1ビット少ない30ビットで日付管理してるシステムがあるのかっ!(なんだってー?!)と思ったら、

この問題が起きた銀行はいずれも日本IBMのソフトを使っていたが、このソフトの内部に、時刻の2倍に足し合わせる処理があり、ちょうど1970年と2038年1月19日の2分の1を超えた2004年1月11日の朝から、2038年問題が顕在化して、システムが正常に稼動しなくなった。

というオチだったみたいです。しょぼ。ていうか、それは2038年問題じゃなくて単なるバグ*1だよ……。銀行員は(に)騙されるな!

*1:はてなのサイトを見て回ってたら「2つの日付の間(平均値)を求めたかったんじゃないのか?」という意見あり。それなら、確かにそうプログラムしちゃう気持ちは分かるけど……。