オートメーション ライブラリと西暦 2000 年
製品のコード効率アップと TCO 削減のために、マイクロソフトでは社内の開発者に対し日付の処理に共通のオートメーション ライブラリを使用することを推奨してきました。これまでもお客様の変化するニーズを反映し、機能の追加を行うために、オートメーション ライブラリにはアップデートが繰り返されてきました。このライブラリのアップデート バージョンは、Microsoft Office、Microsoft Visual Studio、Microsoft Internet Explorer などの主要製品にインストールされます。
オートメーション ライブラリがインストールされているかどうかを調べる方法
Windows 95 または Windows NT 3.51 以降を実行している場合は、オートメーション ライブラリが使用されています。
オートメーション ライブラリの構成ファイル
オートメーション ライブラリは次の 4 つのファイルで構成されます。
- oleaut32.dll
- olepro32.dll
- asycfilt.dll
- stdole2.tlb
これらのファイルは、オペレーティング システムまたはアプリケーションによってインストールされます。
オートメーション ライブラリの西暦 2000 年問題への影響
オートメーション ライブラリは 2 桁の西暦を解釈するルーチンを含んでおり、これによりアプリケーションは日付を誤解のない、連続した日付に変換することができます。したがって、おそらく多くのアプリケーションで日付の処理にオートメーション ライブラリが使用されています。
過去数年に、オートメーション ライブラリは日付処理方法に関して 3 回アップデートされています。
ライブラリ (OLEAUT32.DLL) のバージョン |
下 2 桁の西暦のカットオフ |
2.20.. 4049
より前 |
1999 |
Version
2.20..4049
〜 2.29..xxxx (2.29..xxxx を含む) |
2029 |
Versions 2.30..xxxx 以降 |
ユーザーが指定 |
上記のカットオフは、オートメーション ライブラリが下 2 桁の西暦の日付を絶対日付に変換する場合の日付の処理方法を示します。2.20.4049 以降のバージョンでは、入力された下 2 桁の西暦は 1930 〜 2029 年の範囲にあると見なされます。バージョン 2.30.xxxx からは、オペレーティング システムのコントロール パネルで上のデフォルト範囲が変更できない場合にこの範囲が使用されます。そのため「ユーザーが指定」となっています。
オートメーション ライブラリが日付を文字列として出力する場合、日付は、使用中のオートメーション ライブラリのバージョンによって異なる形式にフォーマットされます。2.20.4049 以降では、1930 年以前あるいは 2000 年以降の日付は、年フィールドに 4 桁の西暦の日付として出力されます。これは、オペレーティング システムのコントロール パネルで下 2 桁の西暦が指定されている場合にも当てはまります。2.30.xxxx からは、コントロール パネルの設定が下 2 桁の西暦になっている場合、1930 〜 2029 年の日付は下 2 桁の西暦で出力されます。
次に例を示します。かっこ内の日付はオートメーション ライブラリの入力と出力を表します。
2.20.4049 〜 2.30.xxxx
「30/1/1」は 1930 年 1 月 1 日 と解釈され、1930 年 1 月 1 日は「30/1/1」として出力されます。
「29/1/1」は 2029 年 1 月 1 日 と解釈され、2029 年 1 月 1 日は「2029/1/1」として出力されます。
「00/1/1」は 2000 年 1 月 1 日 と解釈され、2000 年 1 月 1 日は「2000/1/1」として出力されます。
「99/1/1」は 1999 年 1 月 1 日 と解釈され、1999 年 1 月 1 日は「99/1/1」として出力されます。
2.30.xxxx
「30/1/1」は 1930 年 1 月 1 日 と解釈され、1930 年 1 月 1 日は「30/1/1」として出力されます。
「29/1/1」は 2029 年 1 月 1 日 と解釈され、2029 年 1 月 1 日は「29/1/1」として出力されます。
「00/1/1」は 2000 年 1 月 1 日 と解釈され、2000 年 1 月 1 日は「00/1/1」として出力されます。
「99/1/1」は 1999 年 1 月 1 日 と解釈され、1999 年 1 月 1 日は「99/1/1」として出力されます。
オートメーション ライブラリのバージョン確認方法
[スタート] ボタンをクリックし、[検索] を選択して [ファイルやフォルダ] をクリックします。[名前と場所] タブの [名前] フィールドに「oleaut32.dll」と入力します (かぎかっこは除く)。[探す場所] フィールドでオペレーティング システムのあるドライブ (通常 C:) を選択します。[検索開始] をクリックします。ファイルが下のボックスに表示されたら、ファイルを右クリックして [プロパティ] を選択します。次に、右側の [バージョン情報] タブをクリックします。
オートメーション ライブラリを使用するアプリケーションの例
Microsoft Office 95 以降
Microsoft Visual Studio (Visual C++、Visual Basic、Visual Interdev およびカスタム アプリケーションを含む)
Microsoft Windows 95、Windows 98、Windows NT Workstation、Windows NT Server
Microsoft Internet Explorer
組織内で複数のバージョンのオートメーション ライブラリが使用されている場合の問題
異なるユーザーが異なったバージョンのオートメーション ライブラリを使用することで発生する西暦 2000 年問題がいくつかあります。これらの問題はすべて、下 2 桁の西暦で入力された年の解釈に関係しています。アプリケーションで日付を入力する場合、4 桁の年を使えば問題はありませんが、ユーザーやソフトウェアによって下 2 桁の西暦が入力された場合は、日付が別のマシンでは別の世紀に入力されてしまう可能性があります。たとえば、日付を入力する部門で Service Pack がインストールされていない Windows NT 3.51 と Windows NT 4.0 Workstation の両方でカスタム アプリケーションが使用されているとします。この状況でユーザーが 10/1/1 などの日付を入力すると、NT 3.51 マシンでは 1910 年 1 月 1 日、NT 4.0 マシンでは 2010 年 1 月 1 日として日付が記録される可能性があります。Service Pack の最新版、または Microsoft Office 97 や Internet Explorer 4.0 などの新しいアプリケーションをインストールすると、一貫した日付処理が保証されます。
Windows 95 および Windows 98 の西暦 2000 年問題情報とアップデートについては、次の Web サイトを参照してください。
http://computingcentral.msn.com/guide/year2000/msy2k/productinfo/windows.asp
Windows NT の西暦 2000 年問題情報とアップデートについては、次の Web サイトを参照してください。
product.htm