本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。


マイクロソフト西暦 2000 年対応情報開示リソース センター ホーム

よく寄せられる質問

製品ガイド
(日本語)


西暦 2000 年問題に対するマイクロソフトの考え方

技術文書(ホワイト ペーパー)

そのほかの情報
マイクロソフト西暦 2000 年対応情報開示リソース センター


Visual Basic 3.0 16-bit Win

 

開発製品:

Visual Basic

バージョン:

3.0 16-bit Win

デザイン時: 非対応

このツールを使って 「マイクロソフト西暦 2000 年対応」 に準拠するアプリケーションを構築できますか

はい

言語:

English, French, German, Italian, Spanish

対応期間: 2000 年 1 月 1 日 2 桁の年を利用する場合

発売日:

1993

必要なソフトウェア: 以下を参照

依存する製品: MS-DOS, Windows 3.1, Windows NT 4 Service Pack 4 および対応ソフトウェアアップデート, Windows NT 3.51 Service Pack 5 および対応ソフトウェアアップデート, Windows 95 OSR2, Windows 98 および対応ソフトウェアアップデート

依存するクロック:

システムクロック, Visual Basic runtime, (OLE) Automation Libraries

カテゴリ: 開発製品


この情報は次の製品に適用されます
Microsoft Visual Basic 3.0 および 2.0 の Standard Edition および Professional Edition
Windows バージョン 1.0 の Microsoft Visual Basic プログラミング システム

既知の問題:
VB 3.0、2.0、1.0:

Visual Basic 3.0 以前のバージョンでは、下 2 桁の西暦はすべて 1900 年代に変換されます。

KB #Q162718 を参照してください。


Visual Basic バージョン 1、2、3 での西暦 2000 年対応の VB アプリケーションの作成
マイクロソフトでは、Visual Basic 3.0 以前のバージョンは西暦 2000 年問題に非対応として分類されていますが、以下に説明するガイドラインに従うことにより、開発者は西暦 2000 年に完全に対応するアプリケーションを作成することができます。Visual Basic 3.0 以前のバージョンでは、渡された下 2 桁の日付 (45 年 7 月 3 日など) は、1900 年代と解釈されます。多くの場合、4 桁の日付フィールドに変換することでアプリケーションを簡単に変更して、西暦 2000 年に対応するように再コンパイルできます。

下 2 桁の西暦の変換
------------------------------------------------------------------
Visual Basic のすべてのバージョンで 1999 年 (4 桁の日付形式) 以降の日付を処理することができますが、下 2 桁の日付 (45 年 7 月 3 日などの日付) が渡されるとその日付に対応する世紀を Visual Basic が判断することになります。
バージョン 3.0 以前のすべての Visual Basic for Windows ( Visual Basic for MS-DOS や QuickBasic などの前身を含みます) では、下 2 桁の西暦は常に1900 年代に解釈されていました。各バージョンのランタイム ライブラリにこの規定を実装するコードが組み込まれており、オペレーティング システムのバージョンや、現在のシステムの日付で表示される世紀に依存しませんでした。

Visual Basic 3.0 から 4.0 にバージョンアップする間に、Visual Basic for Applications および OLE オートメーションという 2 つの新しいテクノロジが追加されました。
このテクノロジが追加される前は、Visual Basic のランタイム ライブラリには 2 桁の西暦を 4 桁に変換するコードが含まれていました。しかし、OLE オートメーションによって、ほかのアプリケーションからさまざまな機能へアクセスできるようになったため、Visual Basic for Applications では 2 桁の西暦を 4 桁に変換するコードを実装する必要がなくなりました。このコードがなくても、OLE オートメーション ライブラリから呼び出すことが可能になったのです。

Visual Basic 4.0 は、OLE オートメーションの相互運用性を念頭において開発されており、ほとんどの場合、下 2 桁の西暦から 4 桁の西暦への変換を OLE オートメーション ライブラリに依存し始めました。例外は Visual Basic ランタイム ライブラリに実装されていた DateSerial 関数ですが、これは、当時の OLE オートメーション ライブラリでは Visual Basic に必要な機能に対応できなかったためです。
Visual Basic 4.0 の開発時に新しい規則が設定されました。下 2 桁の西暦はシステムの日付で表されている世紀に変換されるため、暦年 ("00/1/1" という日付) は現在の世紀と解釈されていました。この新しい規則は、Visual Basic 4.0 および Visual Basic for Applications で使用する OLE オートメーション ライブラリにも適用されました。また、Visual Basic 4.0 ランタイム ライブラリの DateSerial 関数にも、この規則が適用されています。
マイクロソフトは、OleAut32.dll のバージョン 2.20.4049 の OLE オートメーション (現在は単にオートメーションと呼びます) ライブラリの既定の規則に変更を加えました。この変更は 32 ビット版のアプリケーションに対してのみ加えられ、オートメーション ライブラリに依存している 16 ビット版のアプリケーションには影響はありません。この変更により、00 ~ 29 の下 2 桁の西暦は 2000 年代と解釈され、たとえば 17 と入力した場合は 2017 に変換されます。一方、30 ~ 99 は 1900 年代と解釈され、72 は 1972 に変換されます。この新しいオートメーション ライブラリでは、Visual Basic が DateSerial 関数に要求していた機能を提供できるようになりました。したがって、Visual Basic 5.0 やその後のバージョンでは、ランタイム ライブラリの DateSerial 関数にこの規則は適用されていません。
このアップデート版のオートメーション ライブラリは、Internet Explorer Version 3.0 以上、Windows NT 3.51 Service Pack 5、Windows NT 4.0、Windows 95 OSR 2、Office 97、Visual Basic 5.0 およびそのほかの製品に含まれています。

詳しくは技術サポート情報 Q162718 を参照してください。

Visual Basic を使用する開発者に与える影響
--------------------------------------------------------------
Visual Basic の 3.0 以前のバージョンでは、下 2 桁の西暦はすべて 1900 年代に変換されます。
Visual Basic 4.0 (16 ビット) では、2 桁の西暦はすべてシステムで表示されている現在の日付の世紀に変換されます。Visual Basic では、使用する関数によって日付が変換されます。この場合、16 ビット版オートメーション ライブラリまたはランタイム ライブラリのいずれかの既定に基づきます。
16 ビット版オートメーション ライブラリでの既定は、Visual Basic 4.0 のリリース後変更されていないため、どの日付関数を使用しても動作は同じです。

Visual Basic 4.0 (32 ビット版) は、オートメーション ライブラリの既定に基づいて下 2 桁の西暦を 4 桁の西暦に変換します。ただし、DateSerial 関数を使用する場合を除きます。この関数は、下 2 桁の西暦をシステムの日付で表わされている現在の世紀に変換します。Visual Basic 4.0 に付属の 32 ビット版のオートメーション ライブラリ (OleAut32.dll バージョン 2.10) は、すべての下 2 桁の西暦をシステムの日付で表わされている現在の西暦に変換しました。新しい 32 ビット版オートメーションライブラリ (OleAut32.dll バージョン 2.20 以上) では、下 2 桁の西暦が 30 ~ 99 の場合には 1900 年代に変換され、00 ~ 29 の場合には 2000 年代に変換されます。
Visual Basic 5.0 では、オートメーションライブラリの既定に基づいて、すべての日付関数の下 2 桁の西暦が 4 桁に変換されます。Visual Basic 5.0 に付属のバージョン 2.20.4054 では、下 2 桁の西暦が 30 ~ 99 であれば 1900 年代に、00 ~ 29 であれば 2000 年代にそれぞれ変換されます。

規定を変更するには
------------------------------------
ユーザーは、Visual Basic に固有の既定の規則のほかに、独自の規則を使用することができます。たとえば、00 ~ 49 の下 2 桁の西暦を入力した場合に 2000 ~ 2049 年に変換したり、50 ~ 99 を 1950 ~ 1999 年に変換することができます。
この場合、ユーザーから日付文字列の入力を受け取ると、文字列の形式が検査され、西暦に入力された桁数が確認されます。このサンプル アプリケーションの例の場合、45 年 1 月 11 日は 1945 年ではなく 2045 年になります。アプリケーションのコード内で、適切な 4 桁の西暦を表わす文字列に変更され、その 4 桁の日付文字列が日付変数に変換されます。

コードの例
-----------
以下のコードでは、ユーザーが cmdConvertDate をクリックすると、txtDate というテキストボックスに入力されたデータが評価されます。日付に下 2 桁の西暦が含まれている場合は、サンプルの規則に従って 4 桁の西暦に変換されます。次にコードは、最初に入力された日付、サンプルの規則に従ってコードにより変換された 4 桁の西暦、および Visual Basic に固有の既定により変換された 4 桁の西暦を表示します。 最後に、txtDate に表示された日付は、適切な 4 桁の西暦が付加されて、確定した日付に変換されます。
このコードでは、yy/mm/dd の形式で日付を入力する必要がありますが、これ以外の形式にも簡単に変更できます。

Private Sub cmdConvertDate_Click()
Dim strYear As String
Dim intSlash As Integer
If IsDate(txtDate) or txtDate = "00/2/29" Then
'Find first date separator.
intSlash = InStr(txtDate, "/")
If intSlash > 0 Then
'Find second date separator.
intSlash = InStr(intSlash + 1, txtDate, "/")
If intSlash > 0 Then
'Extract the year from the date.
strYear = Mid(txtDate, intSlash + 1)
If Len(strYear) = 2 Then
If CInt(strYear) < 50 Then
' Less than 50: year = 20XX.
strYear = "20" & strYear
Else
' Greater than 50: year = 19XX.
strYear = "19" & strYear
End If
End If
MsgBox "入力された日付: " & txtDate
MsgBox "年 (ユーザー規則): " & strYear
MsgBox "年 (VB の規定): " & Year(txtDate)
Else
MsgBox "予期しない日付形式です"
End If
Else
MsgBox "予期しない日付形式です"
End If
Else
MsgBox "無効な日付です"
End If
' Clarify date in txtDate.
txtDate.Text = Left(txtDate.Text, intSlash) & strYear
End Sub

 

製品ガイドに戻る

カテゴリの記号について:
* ユーザーが必要な操作を行うことで対応できる製品。
修正プログラムのロードや文書の参照など、指示された操作を行う必要があります。

# マイクロソフトの対応基準に対して許容範囲の差異がある製品。
製品の主要な機能 (データ保全性など) や安定性 (信頼性など) に影響を与えない程度に限られます。

+ 頒布予定の修正プログラムで対応できる製品。
修正プログラムが公開された時点で、できるだけ早期の対応が必要です。

注意:上記の対応状況分類では、必要な対応操作が行われることを前提としています。


  2000年対応状況の開示

マイクロソフトおよび西暦 2000 年問題に関する情報(本書記載の情報の他、西暦 2000 年テスト、評価、対応情況、対応スケジュール、目標、その他に関する、過去、現在および将来の全ての情報を含みますが、これらに限られません。 以下、これらを総称して「マイクロソフト西暦 2000 年ステートメント」といいます。)の送信または伝達は全て、ここに米国の「西暦 2000 年問題に関する情報および対応開示に関する法律」に定義されているところの「西暦 2000 年対応情報開示」として提供されます。 また、かかる情報は、 http://www.asia.microsoft.com/japan/year2k/ のマイクロソフトの西暦 2000 年Webサイト(以下「Y2K Webサイト」といいます。)にて参照可能です。 「マイクロソフト西暦 2000 年ステートメント」は、それぞれ、この使用条件、Y2K Webサイト記載の条件並びに「西暦 2000 年問題に関する情報および対応開示に関する法律」の条項に従い、お客様の西暦 2000 年問題に対応するための技術計画を支援させていただく目的でのみ提供されています。 各「マイクロソフト西暦 2000 年ステートメント」には、入手可能な最新情報が含まれますが、それらは逐次更新されます。 従って、マイクロソフトは、お客様が定期的に、Y2K Webサイトを確認して、「マイクロソフト西暦 2000 年ステートメント」の変更を確認されることをお勧めします。 「マイクロソフト西暦 2000 年ステートメント」は、全て、“現状ベース”で提供されるものであり、いかなる保証も伴うものではありません。 従って、マイクロソフトは、商品性の保証および特定目的への適合性を含めて、明示的にも黙示的にもいかなる保証もいたしません。 さらに、マイクロソフトは、いかなる「マイクロソフト西暦 2000 年ステートメント」の使用またはその使用結果についても、その正確性、真実性、信頼性等、いかなる保証もしくは表明も行いません。 マイクロソフトまたはその権限ある代理人による、口頭もしくは書面による一切の情報もしくはアドバイスは、何らの保証を意味するものでもなく、かつ上記の保証の拒絶の範囲を狭めるものではありません。 マイクロソフトおよびその供給者は、いかなる場合においても、「マイクロソフト西暦 2000 年ステートメント」に関連して生じた、直接損害、間接損害、偶発損害、派生損害、事業利益の逸失、懲罰的損害、または特別損害を含むすべての損害について、たとえかかる損害の発生の可能性を知らされていた場合であっても、一切責任を負いません。 派生損害または偶発損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。 各「マイクロソフト西暦 2000 年ステートメント」に含まれる情報は、Y2K Webサイトで参照可能であり、マイクロソフト西暦 2000 年対応状況(YEAR 2000 COMPLIANCE STATEMENT)、マイクロソフトが、その西暦 2000 年製品ガイドにおいて、製品の分類に使用している対応基準に関する説明(DESCRIPTION OF THE CATEGORIES OF COMPLIANCE)およびテスト基準(THE MICROSOFT YEAR 2000 TEST CRITERIA)等、と併せてお読みいただくことを意図して提供されているものです。

マイクロソフトが、西暦 2000 年問題関連の修正版、西暦 2000 年診断ツールまたは修正サービスの提供において、お客様に提供することのある、すべての「マイクロソフト西暦 2000 年ステートメント」は、米国の「西暦 2000 年問題に関する情報及び対応開示に関する法律(112 STAT.2386)」の適用を条件として提供されるものです。 何らかの争いが生じた場合には、かかるステートメントの使用に関するお客様の権利は、お客様との契約書または料金表において、別段の合意がなされていない限り、この法律により制限されます。


  最終更新日 1999 年 7 月 10 日
  ©1999 Microsoft Corporation. All rights reserved. Terms of Use.
本サイトは西暦 2000 年 対応開示 (Year2000 Readiness Disclosure) に該当するものであり、本サイトに含まれている情報は本サイトに記載されている条件および西暦 2000 年問題に関する情報及び対応開示に関する米国の法律 (Year2000 Informationand Readiness Disclosure Act) に基づき提供されるものです。
inserted by FC2 system