この資料は以下のエディションについて説明したものです。
Enterprise、Professional および Standard Edition
このツールで「マイクロソフト西暦 2000 年対応」に準拠するアプリケーションを構築できますか ?
可能
メモ : ただし、適切なソフトウェアの修正プログラムおよびサービスパックが適用されていることを前提とします。
必要なソフトウェア
- Visual Studio 6.0 Service Pack 3。
- Windows NT 4.0 環境の場合、Service Pack 4 および西暦 2000 年対応プログラム アップデート。
- Microsoft SQL Server 6.5 Service Pack 5。
- Internet Explorer 4.01 Service Pack 1、Comctl32.dll のアップデート、および Outlook Express 4.01 西暦 2000 年問題の修整プログラム。
- Microsoft Data Access Components Version 2.0 Service Pack 2。
- Microsoft Virtual Machine (VM) Version 2436 または 3165 以降。
日付の処理
Visual C++
6.0
では、以下のデータ型が使用されます。
データ型 |
範囲 |
time_t |
1970 年 1 月 1 日から 2038 年 1 月 18 日まで |
DATE VARIANT |
100 年 1 月 1 日から 9999 年 12 月 31 日まで |
struct FILETIME |
1601 年から 58,457,005 年まで (64ビット値) 100ナノ秒間隔 |
struct tm |
1900 年 1 月 1 日から 2147483647 年 12 月 31 日まで |
struct SYSTEMTIME |
符号のない 16 ビット値による西暦 0 年以降の年 |
SQL_DATE & SQL_TIMESTAMP (ODBC) |
1970 年 1 月 1 日から 9999 年 12 月 31 日まで |
既知の問題
この製品に収録されている日付指定 (Date/Time Picker) および月間予定表 (Month Calendar) コモン コントロール (Comctl32.dll) は、2000 年を含むうるう年の日付を直接入力することができません。この問題は以下の手順により回避できます。1) ドロップ ダウン カレンダーを使用する、または 2) 西暦の下 2 桁を 「00」 に設定し、フォーカスを別のコントロールに移動する。次に、日付指定および月間予定表コントロールにフォーカスを戻し、月/日に 2/29 を入力する。
Visual Basic 版の日付指定 (Date/Time Picker) および月間予定表 (Month Calendar) コントロールにはこの問題はありません。comctl32.dll
の最新バージョンでは、うるう年の日付の直接入力が可能です。
Visual C++ で出荷されている 2 つのサンプルで問題が見つかりました。 2 つのサンプルは、addins/bldrec と mfc/advanced/chkbook です。 Visual C++ 6.0 に収録されていたサンプルが MSDN ライブラリ 2000 年 1 月版でアップデートされます。bldrec の問題は、ログ ファイルのレコードが 2 桁の西暦で作成されるということです。chkbook の問題は、日付を 4 桁の西暦を処理するための領域がない文字列として保存されるため、日付が 2 桁の西暦で作成されることです。
バージョン 4.0 以降6.00.8397.0 より前の C ランタイム ライブラリには、夏時間の補正機能に障害があります。このライブラリを利用するアプリケーションでは、オペレーティングシステムで表示される正しい時刻よりも現在の時刻が 1 時間遅れているかのように動作する可能性があります。この問題は、2001 年 4 月 1 日〜 2001 年 4 月 8 日までの 1 週間継続しますが、これらのアプリケーションが夏時間に移行した後はオペレーティング システムの時刻に同期します。これは西暦 2000 年問題ではなく、夏時間に関する問題です。 この現象は、1973 年、1979 年、1984 年、1990 年、2001 年、2007 年、2012 年、2018 年、2029 年、および 2035 年に発生します。これらの年で共通なのは、4 月 1 日が日曜日ということです。この問題は Visual Studio 6.0 Service Pack 3にて解決されており、Windows のアップデートモジュールとしても提供される予定です。
メモ : Visual C++ 製品の CD-ROM に含まれている InstallShield のバージョンの対応ステータスについては、InstallShield の Web ページhttp://www.installshield.com/products/y2k/ を参照してください。
下 2 桁の西暦の処理
日付指定 (Date/Time Picker) および月間予定表 (Month Calendar) コモン コントロールについては Knowledge Base
Q223292 を、SQL デバッグ/Visual Database Tools についてはそれぞれの製品ガイドを参照してください。
西暦 2000 年に対応したアプリケーションを開発するための望ましい方法 (Windows NT 4.0 の場合)
- Windows NT 4.0 は、Visual C++ 6.0 CD-ROM にも収録されている Service Pack 3 以降のアップデートおよび西暦 2000 年問題のアップデートが必要です。
- Microsoft SQL Server 6.5 Service Pack 5a をインストールしてください。
- comctl32.dll を最新版にアップデートします
(x86
プラットフォーム用、Alpha プラットフォーム用)。日付指定 (Date/Time Picker) および月間予定表 (Month Calendar) における、うるう年の日付の問題が解決されます。
- Microsoft Data Access Components (MDAC) のアップデートをインストールします。 詳細は
MDAC
の製品ガイドをご覧ください。
- Microsoft Virtual Machine (VM) Version 2436 または 3165 以降をインストールします。詳細は
Microsoft Virtual Machine
の製品ガイドをご覧ください。
プログラム開発における一般的な西暦2000年問題について
ガイドラインと推奨事項
以下のホワイトペーパーをご覧ください。
「Cランタイム ライブラリと西暦2038年問題」「ANSI TimeおよびVisual C++ ライブラリ」「Visual C++ と西暦2000年」「CTime」「オートメーションライブラリと西暦 2000 年」
|