2010年問題



 2011年1月1日は旧暦では十一月(霜月)二十七日です。月の満ち欠けがひと月で、月の出ない新月の日が一日(ついたち:朔)ですから、満月の十五夜は15日。月の形と日付が一致してます。ただし12ヶ月がちょうど1年にはなりません。何年かに1回閏月で調整します。

 まあ、太陽と月を組み込んだ大胆な暦なのです。現在のように機械式の時計がいつも手元になかったから、月の満ち欠けが正確な時計だったわけですので、太陰太陽暦はあたりまえだったのでしょう。そうそう旧暦という呼び方はわが国だけで、ヨーロッパ、中東、東アジアと世界中それぞれの地域でそれぞれの太陰太陽暦があるのだそうです。2011年旧暦の正月(一月一日)は新暦の2月3日、新春ですね。

 コンピュータの暦はどうなってるでしょう。2000年問題は年を西暦の下2桁で記録しているのが原因でした。パソコンはある基準日からの日数で記録しています。当時からそうでした。

 試してみましょう。エクセルのセルに2011/02/03/≠ニ入力します。セルの表示は2011/2/3≠ニなりました。このセルの書式設定を見ると日付≠ナす。これを数値≠ノしてセルに戻ると40577≠ノなっていますね。ある基準日から40577日目ということです。では、セルに1≠入力して書式設定を日付にするとセルは1900/1/1≠ネります。つまりエクセルの基準日は1900年1月1日なのです。ここから何日目かを記録していて、表示するときは暦の日付に計算し直しているのです。太陰暦でも太陽暦でも太陰太陽暦でも1日は同じですから、どの暦でも表現できます。あ、エクセルには太陽暦しかない・・・?

 いずれの表現であっても記録は数値ですから、日付どうしで日数の計算ができます。あるセルに誕生日を、別のセルに本日の日付をいれて、本日のセルから誕生日のセルを引けば、これまで生きてきた日数が得られます(書式を数値にしてください)。

 日数の計算は簡単ですが、月の場合は厄介です。1年が12ヶ月と決まっている太陽暦でもです。例えば12月31日の1ヵ月後は1月31日、ではその1ヵ月後は2月28日? それとも3月3日(31日後)? 保険の契約ではけっこうな問題になるところです。

 ウィンドウズ・セブン(Win7)では、アクセス97(Ac97)というマイクロソフトのアプリケーションが使えなくなってしまいました。当社はこのアプリを使って業務用のソフトウェアを製作して提供してきました。そろそろAc97が動くウィンドウズは中古パソコンを探さなければならなくなりそうです。

 昨年、新たにアクセス2010(Ac10)が売り出されました。Ac10を互換モードとやらに設定すればアクセス97が開くようです。やれやれ、無事にAc97で作ったソフトが動いたと思いきや、エラーになってダメでした。エラーになった個所を調べると、暦の何ヵ月後を計算する個所です。何も旧暦の計算をしているわけではありません。月については簡便な太陽暦です。アクセスに組み込まれている関数を使っているのですが、これが言う事を聞きません。Ac10でプログラムを作ってこの関数をテストすると通常モードでは問題なし、互換モードではダメ・・・ 結局、自前の関数をプログラムして置き換えました。

 え? Ac10に切替えてしまえば良いではないかって? そうもいかないのです。アクセスというのはデータベースのアプリで、いくつものパソコンからお互いのデータを参照したり、書込んだりします(だからデータベース)。全部のパソコンをWin7にするなんて、そんな“もったいない”ことはできません。使えなくなったパソコンから順次Win7に置き換えていきますから、全部置き換わるには何年もかかるでしょう。その間、Ac97とAc10が共存するのです。それまではAc10は互換モードでしっかり働いてもらわないと・・・

 注意報で日付を取り上げたのは2000年問題のときでした。それから干支も一回りしようというのに、当社では2010年問題なのです。

 なに! 半角文字を全角文字に変換する関数でも問題を起してる!? なんてこったい。




旧暦では閏月が入って1年が13ヶ月の年があります。来年は三月の次に閏三月、春が長いですよ。


アクセスの基準日は1899/12/31。それ以前の日付はマイナスで記録しています。エクセルは1900/1/1以前は日付として記録できないようです。


正常に動かない関数:DateAdd DateDiff DatePart StrConv InStr
まだ、あるかもしれません… 説明書にも、ヘルプにも、マイクロソフト社のホームページにも、何ら注意書きがありません。
まだまだ怪現象はあるんですよ。いきなり互換モードで開くとせっかく書いたプログラム(モジュール)が破壊されます。怖いですねぇ。(この件とInStrはホームページにあり)

これはもう商品の欠陥だ! とマイクロソフトに電話したら、金を払わないと答えないと、にべも無し。

そうだ、消費者団体、いや消費者庁に訴えてみるか? でも日米同盟だからあきらめろって言われそうだなぁ…



↑頁先頭へ