/*********************************************************************** Typing eXercise TX Version 3.02 の「2000 年問題」対応パッチ 岩瀬順一・すのもの ***********************************************************************/ 拙作タイピング練習プログラム TX Version 3.02 に、「2000 年問題」に関連 するバグがあることがわかりました。2000 年以降もお使いになられる場合は、 お手数ですが以下のように御修正ください。 (1999 年 09 月 13 日) 本文書は、改変しない限り自由に再配布してくださって構いません。 【症状】 練習結果の記録ファイル(デフォルトでは tx.scr, tx.usr)が存在する状態で 2000 年以降に練習を行なおうとすると TX: コンピュータのクロックが正しくありません. というメッセージが出て直ちに終了してしまい、練習ができません。 その tx.scr, tx.usr が 1999 年末までに練習を始めたものであっても、2000 年以降に練習を始めたものであっても同じです。 (2000 年以降に新たに練習を始めることはできますが、いったん終了して しまうと上に書いたように練習の続きはできません。また、tx.scr に 書き込まれる年月日の年は「西暦 - 1900」なので 2000 年が「100」となって しまいます。) 【修正法】 score.c を以下のように修正し、コンパイルし直してください。 98 行目から 99 行目の sprintf(tmpstr[1], "19%02d-%02d-%02d %02d:%02d:%02d", tp->tm_year, tp->tm_mon + 1, tp->tm_mday, を sprintf(tmpstr[1], "%4d-%02d-%02d %02d:%02d:%02d", tp->tm_year + 1900, tp->tm_mon + 1, tp->tm_mday, と改める。 391 行目の timeptr->tm_year, timeptr->tm_mon + 1, timeptr->tm_mday, を timeptr->tm_year % 100, timeptr->tm_mon + 1, timeptr->tm_mday, と改める。 【付】 以前のプログラムで練習した記録ファイル tx.scr, tx.usr がある場合、上の ように修正したプログラムで練習の続きができます。 (例えば 1999 年度の冬学期の授業用にすでに元のプログラムを配布して しまった場合、1999 年のうちに ftp などを教えておけば「2000 年以降も続き をやりたい人はどこそこから新しいプログラムを各自でダウンロードしなさい」 として切り抜けることができると思われます。) 【それでも残っているバグ】 プログラム check でスコアファイルに改ざんがないか調べる際、実際には 改ざんがないのに「5 行目で日時が逆転しています.」のようなメッセージが 出ることがあります。これはスコアファイルの各行で年を西暦の下二ケタで 表わしているためです。 これを直すにはスコアファイルの書式を変えなければなりませんので、今回は 見送ることにしました。 このバグは 2000 年以降に新たに練習を始めた場合にも起こることがあります。 これは最初の練習日時を unix の生まれた年である 70 年と比べているためで、 この場合は「3 行目で日時が逆転しています.」と必ず 3 行目で逆転となります。 こちらは比較的容易に解決できそうですが、ついでに見送ることにしました。 【連絡先】 岩瀬順一 電子メール 郵政省メール 920-1192 金沢市角間町 金沢大学理学部数学科 Web ページ(いわゆる「ホームページ」) http://www5a.biglobe.ne.jp/~iwase47/ すのもの 電子メール Web ページ(いわゆる「ホームページ」) http://www5a.biglobe.ne.jp/~sunomono/ (付:メールアドレス内の「@」を「◎」に変更した。2005-01-30)