製品の保守 :西暦
2000 年問題とは関係なく、マイクロソフトでは、常に最新のサービス パックまたはサービスリリースをインストールすることをお客様に推奨しております。その一方、さまざまな理由で、お客様が最新のリリースに変更できない場合があることも理解しております。お客様の西暦
2000 年問題への対応作業を支援するため、マイクロソフトでは、Windows 98
を 西暦
2001 年 1
月 1 日まで
"対応"
ソフトウェアとしてサポートする計画です。また、今後リリースされる新しいサービスパックも西暦
2000 年問題に対応しており、それには西暦
2000 年対応以外の内容も含まれる場合もあります。西暦
2000 年問題をアップグレードの機会として位置付けることをできるだけ避けるための措置です。
更新情報
マイクロソフトでは、西暦 2000
年対応を継続してテストしておりますが、(1999
年 4 月時点) Windows 98
について問題があることが判明し、 これらの問題を解決したソフトウェアのアップデートが用意されています。
Windows 98 西暦 2000
年対応修正プログラムは、1998
年 12 月に提供を開始しており、これらの修正も含めた修正版を継続して提供いたします。
WINDOWS 98 西暦 2000
年問題修正プログラムのインストール
Windows 98 ユーザーの場合
[ スタート] メニューの
[Windows Update] をクリックします。これは、Windows Update
サイトとリンクされています。お使いの Windows 98
システムへの西暦 2000
年問題修正プログラムのインストールを要求するプロンプトが表示されます。
上記以外のユーザーの場合
Windows 98 の詳細については、Windows 98 Web
サイトを参照してください。
Windows 98 の個々の西暦 2000
年問題対応アップデートをダウンロードするためには、Windows 98:
ダウンロード を参照してください。
マイクロソフトから 2000
年リソース センター CD
を入手するには、お近くのマイクロソフトにお問い合わせください。 地域の連絡先の情報については、Microsoft Internationalを確認してください。
解決済みの問題
Outlook Express の問題 (Q234680 、Q234681 、J048678 を参照してください。)
Outlook Express (OE) 4.01 SP1 または SP2
で、IMAP メール メッセージまたはニュース メッセージを、送信日に下
2 桁の西暦を使用して受信している場合、特定の条件下で日付が間違って解釈されることがあります。下
2 桁の西暦の数字が「99」以外であると、OE
は世紀の値を現在の世紀であると見なします。たとえば、現在の西暦が
2000 年のときに「97」という
2 桁の西暦のメッセージを受信した場合、その年は
2097 年と解釈されます。ただし、これ以外のロジックが適用される特別なケースもあります。 「99」という
2 桁の西暦でメッセージを受信し、現在の年が
100 の倍数 (2000
年) である場合は、その年は現在の年に
98 を加算した年 (2098
年) と解釈されます。
この問題に対するソフトウェア アップデートが提供されています。ソフトウェア アップデートは
Outlook Express 4.01 SP1 用と
Outlook Express 4.01 SP2 用と別々に用意してあります。このソフトウェア アップデートは、ここからダウンロードできます。
西暦 2000 年問題修正プログラム
2 (1999 年 6
月リリース) で解決される問題
OLE オートメーション。Microsoft Automation
ライブラリは 2 桁の西暦を解釈するルーチンを含んでおり、これによりアプリケーションは日付を誤解のない、4
桁形式に変換することができます。Windows 98
では、2 桁の西暦年の現在のカットオフは
2029 です。つまり、30
で始まる 2 桁の年は
1900 年と解釈されます。したがって、[コントロール パネル]
の [地域]
の [日付]
タブの世紀の設定に関係なく、30/1/1
は 1930/1/1 に変換されます。
DOS Xcopy 。標準となっている
"yy-mm-dd" の 2
桁の西暦の形式は、正しく処理されません。コントロール パネルの
[地域]
の [日付]
のタブで "yy-mm-dd"
形式が設定されている場合、xcopy
は 00 を西暦
2000 年とは解釈しません。
MQRT.DLL ( Q230050
を参照してください。) Microsoft Message Queue (MSMQ)
は、Personal Web Server
の一部としてインストールされ、外部および内部の
2 種類のデジタル証明に対応しています。内部証明とは
MSMQ がサポートするコンセプトで、認証されたメッセージを送るために、MSMQ
アプリケーションで証明を割り当てることが可能になります。MSMQ 1.0
の内部証明の要求を作成するコードは、新規作成された証明の有効期限を
10 年間に設定するよう要求します。問題が発生するのは、MSMQ
が 2000、2004、2008
年などのうるう年の 2
月 29 日にそのような証明を作成しようとした場合です。MSMQ
は、現在の日付に 10
年を加算して有効期限を計算しますが、この場合は
2010 年 2
月 29 日という結果になるため、要求は失敗します。2010
年はうるう年ではないので、これは無効な日付です。
これまでに解決済みの問題 (1998
年 12 月にリリースされた西暦
2000 年問題修正プログラム)
マイクロソフトでは、現在の西暦 2000
年問題修正プログラムを適用した
Windows 98 に関して次のような問題を確認したため、アップデートを提供しています。
MICROSOFT VIRTUAL MACHINE 。Sun Microsystems
の Java Development Kit (バージョン
1.1.1 〜 1.1.5)
に基づく MICROSOFT VIRTUAL MACHINE
に、西暦 2000 年問題が報告されました。Java
で作成された java.txt.SimpleDateFormat
クラス ライブラリを使用するアプリケーションでは、4
桁の西暦が正しく解釈されないことがあります。メモ : Windows 98
製品版および Windows 98 2000
年問題修正プログラムで提供される Microsoft Virtual Machine Version 2405 (2424)
に、2000 年問題が認識されています。 問題に関する詳細や推奨事項については、Microsoft Virtual Machine
西暦 2000 年対応製品ガイド を参照してください。
MSWALLET - Microsoft Wallet 2.1.1383 より前のバージョンでクレジットカード情報を入力する場合には、カードの有効期限に西暦 2000 年以降の年月日を入力しないと、情報が正しく解釈されません。たとえば、クレジット カードの有効期限を「5/01」と入力すると、入力した年の 5 月 1 日として解釈されます。
DIALER.EXE - ダイヤラー。通話の終了後、[通話の記録] ダイアログボックスに日付が正しく表示されません。システム日付を西暦 2000 年に調整すると、ログの日付は「100」、「101」、「102」などと表示されます。
COMCTL32.DLL - [ コントロール パネル] の [地域] で下 2 桁の西暦が設定されている場合、日付指定 (Date/Time Picker) 関数が正しい日付を表示しなくなります。日付が正しく表示されるようにするには、[地域のプロパティ] ダイアログ ボックスの [日付] タブで、4 桁の西暦を指定します。
TIMEDATE.CPL - コントロールパネルの [時刻と日付] - 日付が 2 月 29 日に設定されている場合に、[日付と時刻] タブで西暦を前に進めたり後に戻すと、うるう年以外の年にも 2 月 29 日が表示されます。
DOCPROP.DLL - Microsoft ワードパッドや Microsoft Word の文書のプロパティで、ユーザー設定の日付を指定する場合、西暦 2000 年を「00」として入力しても、有効なエントリとして受け付けられません。 2 桁の日付は、1900 年代と見なされます。
IO.SYS - RTC (Real Time Clock) の日付が午前 0 時 0 分に切り替わるときにシステムを再起動すると、システム クロックに間違った日付と時刻が表示されます。この問題に対処するには、システムをもう一度再起動します。
MSDADC.DLL - OLE DB では、次の 2000 年問題が Coercion Library で認識されています。
ADO
にコーディングされている場合に、
ADO Recordset に adDate、adDBDate、adFileTime、または adDBTimeStamp などの日付データ型が含まれており、
98/01/01 ではなく 98.01.01 のように日付書式の日付区切り文字としてスラッシュではなくピリオドが使われおり、
年が 60 未満に指定されると、
データ変換 msdadc.dll によって日付が時刻に変換されます。たとえば、01.01.01 (2001 年 1 月 1 日) は、01:01:01 (1899 年 12 月 30 日、午前 1 時 1 分 1 秒) に変換されます。
OLE DB に直接コーディングされている場合も、同じ結果になります。
変数 BSTR、VARIANT、または PROPVARIANT を次の日付データ型に変換する場合、
DBTYPE_DATE
DBTYPE_DBDATE
DBTYPE_DBTIME
DBTYPE_FILETIME
DBTYPE_DBTIMESTAMP
98/01/01 ではなく 98.01.01 のように日付形式の区切り文字としてスラッシュではなくピリオドが使われおり、
年が 60 未満に指定されると、
データ変換 msdadc.dll によって日付が時刻に変換されます。たとえば、01.01.01 (2001 年 1 月 1 日) は、01:01:01 (1899 年 12 月 30 日、午前 1 時 1 分 1 秒) に変換されます。
VDHCP.386 - Winipcfg/all - 2000 年 3 月 1 日以降に取得された IP リースは、実際の取得日の前日に取得されたものとして記録されます。システム日付は正しく表示されますが、DHCP クライアントは間違った日付を返します。
XCOPY32.MOD - リアルモードでオプション パラメータ /D:date を指定して xcopy を使用すると、xcopy は 80 から 99 を除き 2 桁で入力された年を受け付けません。メッセージ「無効な日付の指定です」が表示されます。また、プロテクト モードで Windows 内から xcopy を実行する場合にも、下 2 桁の西暦を使用できます。この場合、西暦の最初の 2 桁は、「19」として解釈されます。たとえば、「01/02/05」は 2001 年ではなく、1901 年 2 月 5 日 と解釈されます。
MFC40.DLL - 2000 年以降、COleDateTime 関数を使用するプログラムでは日付が誤って解釈される可能性があります。 2000 年以降にこの例を見るためには、[プログラム]-[アクセサリ]-[システムツール] から、[システム情報] (msinfo32.exe) を実行すると、ファイルを保存します。 この .nfo 拡張子のファイルを開き、[ファイル] メニューから [プロパティ] を選択します。 日付スタンプの日付が不適切に表示される場合があります。たとえば、2000/02/05 が、100/02/05 と表示される可能性があります。
日付に関する注意事項
JScript Date.getYear() および Date.setYear()。JSCRIPT Date.getYear() のメソッドは、1999 年までの対応期間内は下 2 桁の文字列の西暦を返し、2000 年以降の対応期間内は 4 桁の西暦を返します。Web 作成者は、4 桁の西暦だけを返すメソッド .getFullYear() を使用することもできます。 詳細については、 Microsoft Developer Network の記事を参照してください。
INTL.CPL。Windows 98 英語版以外で、ユーザーが和暦と西暦 (英語)、西暦 (日本語) を選択できる場合 (コントロール パネルの [地域] の設定) は、世紀の判定ウィンドウは各々に対して設定できます。Access などの Visual Basic を使用するアプリケーションでは、現在選択されているグレゴリオ暦とその設定が使用されず、既定のグレゴリオ暦に設定された世紀範囲が使用されることがあります。この問題は英語版の Windows 98 では起こりません。
これはカスタム日付を設定する時に注意すべき問題で、西暦 2000 年問題ではありません。この問題は、次のような方法で回避および解決できます。
[コントロール パネル] の [地域] で、あるグレゴリオ暦の世紀の範囲を変更する場合は、その他のグレゴリオ暦もすべてその世紀の範囲に合わせます。たとえば、あるカレンダーの世紀の範囲を 1930 〜 2029 から 1930 〜 2035 に変更した場合は、その他のグレゴリオ暦も同じ日付範囲に変更します。
日付の処理
保存 :
日付は、内部的には 4 桁の西暦で保存されます。ただし、MS-DOS ファイル システムの API は除きます。 MS-DOS Ò ファイル システムの API では、1980 年からのオフセットとして西暦が保存されます。 プログラムが MS-DOS Ò API から日付を取得する場合、プログラムでは 1980 が加えられることが必要です。
下 2 桁の西暦の処理:
MS-DOS Ò の DATE コマンドでは、2 桁の西暦、4 桁の西暦ともに使用できます。80 以下の 2 桁の値が入力された場合、DATE コマンドは、入力値を 20XX と見なします。
また、MS-DOS Ò ファイル システムの API では、1980 年からのオフセットとして西暦が返されます。このため、正しい日付を設定するには、返された値に 1980 を加算する必要があります。Win32 の API では、この問題はありません。
エクスプローラ (EXPLORER.EXE) では、既定で 2 桁の日付を表示します。これは、古いプログラムと互換性を確保するためです。4 桁の西暦を表示させるには、コントロール パネルの [地域] で 4 桁の形式を選択してください。
Internet Explorer
該当するすべての修正プログラムを適用し、Internet Explorer 4.01 Service Pack 2 以降のバージョンを使用することをお勧めします。 お使いの Internet Explorer のバージョンについては、 西暦 2000 年対応製品ガイドを参照してください。 使用している Internet Explorer のバージョンがわからない場合は、Q164539 を参照してください。
テスト時のガイドラインと推奨事項 :
Microsoft Jet Database Engine 3.5 と Microsoft Office 97
コンピュータの現在の日付が 2000 年以降の場合に、2000 年以前に作成されたレプリカ セットの 2 つのメンバの同期を試みると、同期メッセージが表示されます。これは、数式サービスによってレプリカの MSysExchangeLog テーブルの日付エントリが正しく処理されないためです。レプリカ セットが 2000 年より前に作成された場合、2000 年以降に行われた同期に関する情報は、MSysExchangeLog テーブルから削除されます。この情報が削除されると、MSysExchangeLog テーブルと MSysGenHistory テーブルの世代情報が一致しなくなるため、レプリカを同期できなくなります。この問題を解決するには、マイクロソフトの Web サイト http://officeupdate.microsoft.com/japan/から最新の Microsoft Office 97 Service Release をダウンロードしてください。
PC によっては、2000 年に達すると、システムの日付けを西暦 1980 年などの不正な日付にリセットするものがあります。この問題が発生するのは、コンピュータ ハードウェアと弊社以外の会社が作成した BIOS の基本部分に問題がある場合です。実際の作業には使用しない "テスト" マシンで確認を行うことをお勧めします。 詳細については、この製品ガイドのホワイト ペーパー セクションの記事「 BIOS およびリアル タイム クロックと Windows オペレーティング システムとの相互作用 」を参照してください。
|