2000年問題の話 |     ✤ We Love Softbrain ✤ 

    ✤ We Love Softbrain ✤ 

        日々の仕事や、プライベートな趣味まで掲載しています。

image

おはようございますビックリマーク

ソフトブレインのシニアAですクローバー

 

今回は「たろう」さんと「社長」さんからご指名を頂きましたので、僭越ながら2000問題について一筆書かせて頂きました筋肉

 

ではどうぞ・・・


1900年代当時のコンピュータシステムでは、人が西暦年の下2桁を入力して、これをコンピュータシステムが4桁の西暦年に変換していたPC

つまり70と入力すれば1970年、80と入力すれば1980年に、90と入力すれば1990年に変換するようにプログラミングされているのだひらめき電球

2000年問題とは、上記の様なコンピュータシステムに西暦2000年の下2桁である00を入力した際、コンピュータシステムが正常な2000年に変換できず、異常な1900年に変換してしまい、結果としてコンピュータシステムが誤動作してしまう問題であるビックリマーク

私がコンピュータ業界に入った1982年当時、メモリ容量節約の意図で年の下2桁だけを保存したり、業界の慣わしによりお客様から指定されて下2桁にせざるを得ない場合などがあった。

開発に携わったシステムエンジニアの多くは、自分が開発しているシステムが20年も30年も40年も使用され、2000年を越えても使用されるとは考えていなかったあせる


2000年問題のもう1つの問題、それは2000年が閏年として処理できていないコンピュータシステムが存在したひらめき電球

閏年は4年に1度来ると単純ではない。次の条件を満たした年だけが閏年だ。
   ① 西暦年が4で割り切れる年は、閏年である
   ② ①であっても、100で割り切れる年は、閏年ではない
   ③ ②であっても、400で割り切れる年は、閏年である

これらのプログラミングがきちんとできていなければ、コンピュータシステムが2月29日を処理するときに異常な結果となる。


2000年問題と並んで、2038年問題がある。コンピュータシステムの内部で時間を表すとき、4バイト変数に格納して日時を計算しているひらめき電球

この変数は1970年1月1日からの秒数で成り立っているが、2038年1月にオーバーフローして負値になり、コンピュータシステムの誤動作につながる。

この問題はプログラム開発する際に時間を表すのは8バイト変数に格納して日時を計算するように変更しなければならなくなったあせる

ただ古いコンピュータシステムは4バイトのままだから、2038年まで使っていれば何らかの影響はでるだろうクローバー


コンピュータシステムが扱うものがインフラ(電気・ガス・水道・銀行・株式・鉄道・飛行機)など生活に重要なものであった場合に影響が大きくなるビックリマーク

そのため、私たちシステムエンジニアは今まで開発してきたシステムに対する責任として、修正を掛けなければならなかった。

いまでは当時の忙しさが懐かしい・・・


終わり・・・クローバー

 


SE道場では、プログラミングの極意や開発の苦労話等、様々な記事を投稿していますビックリマーク 

是非ご覧くださいクローバー 

 

1つ前の開発秘話は...