Year 2000 technical summary
3   OS Issues << >>


   
3.0 Contents

  3.0     Contents  
  3.1     OS Issues  
  3.2     MS-DOS  
     3.2.1     Versions of MS-DOS  
     3.2.2     MS-DOS API  
     3.2.3     MS-DOS V5.X/V6.X  
  3.3     Microsoft Windows  
     3.3.1     Win16 API  
     3.3.2     Win32s  
     3.3.3     Win32 API  
     3.3.4     Windows 3.1  
     3.3.5     Windows 3.11  
     3.3.6     Recommendation for MS-Windows 3.1/3.11  
  3.4     Windows 95  
     3.4.1     Versions of Windows 95  
     3.4.2     Recommendation for Windows 95  
  3.5     Windows 98  
     3.5.1     Recommendation for Windows 98  
  3.6     Windows NT  
     3.6.1     Windows NT 3.51  
     3.6.2     Windows NT 4.0  
     3.6.3     Recommendation for Windows NT  
  3.7     Mac OS  
  3.8     UNIX  
   
3.1 OS Issues

 

As mentioned in the introductory chapter, the PC RTC is quite often not Y2K compliant. That usually doesn't matter, the BIOS takes care of that on most PCs, or it can be remedied using a software fix. The RTC is the source of the date for the BIOS, and the BIOS is the source of the date for the operating system. Even given a non-compliant BIOS, and a non-compliant RTC the OS can still figure out the date in most circumstances. Better still, there are real solutions to maintaining the correct data and time across a network of computers, such as XNTP, see Chapter 7 (Solutions) for more information.

This chapter discusses the broad implications of Y2K on the popular OSes, most of the specifics can be found in the appendices (see list below). For convenience, MS-Windows prior to Windows 95 is considered an OS.

See also:

 
   
3.2 MS-DOS

  The internal date representation of MS-DOS stores the year in a signed 8-bit notation as an offset from 1980. There is no inherent problem with the operating system support of post Y2K dates, at least for the time being.

Some of the commands which are part of MS-DOS (external and internal do however have some problems with input, output and sorting of dates. Mostly this arise from the interpretation of 2 digit years in the range [00-79].

 
   
3.2.1 Versions of MS-DOS

  Microsoft have made no details available for versions of MS-DOS prior to V5.0 (and are unlikely to do so).

To determine the version and revision of your MS-DOS system, run the command "VER /R" from a DOS prompt, the (undocumented) command line switch /R shows the revision.

See Appendix A (MS-DOS and MS-Windows Y2K Issues) for a detailed list of issues.

 
   
3.2.2 MS-DOS API

  The MS-DOS API includes functions for accessing the date/time, and file system functions which use date/time stamps. The year is always encoded in a 7 or 8 bit quantity, as the offset in years from 1980. There are no inherent Y2K problems with this scheme. No date rollover problems should occur until after 2107[3.1].
[3.1] 1980+127, 127 is the largest value of 7 bit unsigned integer
   
3.2.3 MS-DOS V5.X/V6.X

  Microsoft have stated that all English versions of MS-DOS V5.x and V6.X are "compliant with minor issues". See Appendix A §A.1 (MS-DOS and MS-Windows Y2K Issues, MS-DOS V5.x/V6.x) for detailed information.  
   
3.3 Microsoft Windows

  See the following sub-sections:  
   
3.3.1 Win16 API

  The Win16 API is the software interface available to programs running under 16 bit Windows 3.x.  
   
3.3.2 Win32s

  The Win32s API is an extension to the Win16 API which allows a application to use some Win32 API functionality.  
   
3.3.3 Win32 API

  The Win32 API is the software interface to the OS available to programs running in a native 32 bit version of Windows. This includes Windows 95, Windows 98 or any version of Windows NT.

The date and time related storage structures under Win32 are:

FILETIME date structure
a 64 bit quantity storing the time since the epoch 1601-01-01 00:00:00Z (in 100ns intervals). No inherent Y2K problem.
SYSTEMTIME
The time/date API. The year is returned in a 16 bit unsigned quantity (range [0-65535]). No inherent Y2K problem.
Eventlog
The system evnt log stores the event time since the epoch 1970-01-01 00:00:00Z (in 1s intervals). No inherent Y2K problem (although there will be a problem post 2100).
There is no known inherent Y2K problem with the Win32 API, however any and every application is free to misuses dates in any manner.
 
   
3.3.4 Windows 3.1

  Microsoft describe Windows V3.1 as "compliant with minor issues". There are 2 main problems, the File Manager has trouble displaying post Y2K dates, and the Control Panel Date/Time applet is not aware of the leap day 2000-02-29.

Of course, Windows V3.1 will inherit any Y2K problems from the underlying version of MS-DOS.

See Appendix A (MS-DOS and MS-Windows Y2K Issues).

 
   
3.3.5 Windows 3.11

  Windows for Workgroups was available as a retail version, and effectively as a set of file upgrades to the original V3.1 (although the version number did not change).  
   
3.3.6 Recommendation for MS-Windows 3.1/3.11

  Change the MS-Windows date formats use 4 digit years, rather than 2 digit years. Start the "Control Panel", "International". Click "Change" in the "Date Format" section, Check the "Century (1990 vs. 90) in the "Short Date Format" box, and select "1999" rather than "99" in the year drop down menu of the "Long Date Format" section. These settings get stored in the WIN.INI file.  
 
NOTE
This will only affect the default date format provided by Windows 3.X to properly written applications. It won't eliminate Y2K problems under Windows, but it will cause properly written Windows applications to display dates according to your preference. It's entirely possible that an application will fail to use the date format you specify.
 
   
3.4 Windows 95

  Microsoft describe Windows 95 as "compliant with minor issues".
Largely Y2K ok, there are 2 different patches available from Microsoft.
The first addresses 2 (and only 2) of the non-compliance issues:
  1. updated COMMAND.COM
    (to fix the DATE command which has trouble accepting 2 digit years in the range [00-79])
  2. updated WINFILE.EXE File Manager
    (which has trouble displaying and sorting certain dates.
 
  The second[3.2] is a complete patch which addresses all known issues, see Appendix F §F.1.1 (Vendors, Microsoft) for download and a local mirror. This patch is a superset of the previous patch.
[3.2] released 1999-04-15
   
3.4.1 Versions of Windows 95

  Microsoft detail 5 different versions of Windows 95. There are however only 3 different version numbers distinct version numbers assigned by Microsoft.

To determine the version of your Windows 95 system use the VER /R command from a DOS command prompt, the (undocumented) command line switch /R shows the revision.
Alternatively, right click on the "My Computer" icon on the desktop, choose "Properties". The version should be display on the "General" tab, probably on the top right.

The OSR 2.x releases of Windows 95 are not available to end users directly, it is provided only to OEMs and can be purchased only with a new PC.

See Appendix B (Windows 95/98 Y2K Issues) for a detailed list of issues.

 
   
3.4.2 Recommendation for Windows 95

  Apply the Y2K patch from Microsoft (Vendors|Microsoft). Also, ensure the Windows 95 date formats use 4 digit years, rather than 2 digit years. Start the "Control Panel", "Regional Settings", click on the "Date" tab. You can choose several long and short date formats from the drop down menu buttons, or enter your own. For example use:
  • dd/MM/yyyy or yyyyMMdd for the short format (You'll need to type these in directly, since these options aren't offered in the drop down menu. Press F1 for help.)
  • dd MMMM yyyy for the long format.
These settings get stored in the WIN.INI file, and any changes should be visible straight away (in the date field of an explorer window for example).
 
 
NOTE
This will only affect the default date format provided by Windows 95 to properly written applications. It won't eliminate Y2K problems under Windows 95, but it will cause properly written Windows applications to display dates according to your preference. It's entirely possible that an application will fail to use the date format you specify.
 
   
3.5 Windows 98

  Microsoft describe Windows 98 as "compliant with minor issues".

Largely Y2K ok, there is a large patch available from Microsoft (VEndors|Microsoft) which addresses several of the compliance issues. It is part of the automatic Windows 98 update service, and can be downloaded from their web site.

See Appendix B (Windows 95/98 Y2K Issues) for a detailed list of issues.

 
   
3.5.1 Recommendation for Windows 98

  Apply the Y2K patch from Microsoft (Vendors|Microsoft). Also, ensure the Windows 98 date formats use 4 digit years, rather than 2 digit years. Start the "Control Panel", "Regional Settings", click on the "Date" tab. You can choose several long and short date formats from the drop down menu buttons, or enter your own. For example use:
  • dd/MM/yyyy or yyyyMMdd for the short format (You'll need to type these in directly, since these options aren't offered in the drop down menu. Press F1 for help.)
  • dd MMMM yyyy for the long format.
These settings get stored in the WIN.INI file, and any changes should be visible straight away (in the date field of an explorer window for example).
 
 
NOTE
This will only affect the default date format provided by Windows 98 to properly written applications. It won't eliminate Y2K problems under Windows 98, but it will cause properly written Windows applications to display dates according to your preference. It's entirely possible that an application will fail to use the date format you specify.
 
   
3.6 Windows NT

  See Appendix C (Windows NT Y2K Issues) for a detailed list of issues. The following versions of Windows NT are discussed here:

Windows NT uses the Win32 API, §3.3.3 (Win32 API) for date, time and filesystem functions.

Allegedly, Windows NT 5.0 (or Windows 2000) will be fully Y2K compliant as shipped.

 
   
3.6.1 Windows NT 3.51

  Microsoft describe Windows NT 3.51 as "compliant", when the necessary service packs and patches have been applied. See Appendix C §C.2 (Windows NT Y2K Issues, Windows NT V3.51 (English)) for details of the problems, service packs and hot fixes.  
   
3.6.2 Windows NT 4.0

  Microsoft describe Windows NT 4.0 as "compliant", when the necessary service packs and patches have been applied. See Appendix C §C.3 (Windows NT Y2K Issues, Windows NT V4.0 (English)) for details of the problems, service packs and hot fixes.  
   
3.6.3 Recommendation for Windows NT

  Apply the Y2K service packs and hot fixes as recommended by Microsoft (Vendors|Microsoft).  
   
3.7 Mac OS

  According to Apple, all Macs are Y2K compliant in hardware and software. However, some applications may have problems with certain date functions if they use only 2 digit years. The StringToDate API call assumes that the century of a 2 digit year is the current century. This means the meaning of a 2 digit date may change after the end of 1999.  
   
3.8 UNIX

  UNIXes typically store time in seconds since the UNIX epoch, which in this case is 19700101 00:00:00Z. For 32bit UNIXes, that means overflow at 2^31-1 seconds [3.3], on 2038-01-19. 64bit UNIXes should last somewhat longer.
[3.3] the largest value for a signed 32-bit integer
  This suggests that most UNIX OS have no inherent Y2K date problems, though a UNIX such as FreeBSD or Linux running on a PC may be vulnerable to RTC problems. Applications are, as always, an entirely seperate issue.

See Appendix D (UNIX Y2K Issues) for specific information on Y2K and UNIX variations.

 

 

CONTENTS << PREV ^TOP^ NEXT >> INDEX