TIP: Click on subject to list as thread! ANSI
echo: os2prog
to: Ian Moote
from: Jonathan de Boyne Pollard
date: 1999-11-25 09:28:13
subject: OS/2 kernel immunity from the Century Bug

 IM> Perhaps I should clarify my question here. [:) I'm far less concerned 
 IM> with RTC roll-over as I am with whether the O/S will be able to 
 IM> accurately report dates beyond 31 December 1999. [:) Do you know of 
 IM> _any_ versions of OS/2 which will have trouble doing that?

16-bit OS/2 (/i.e./ version 1.x) provides only a means for directly reading
the RTC hardware, Dos16GetDateTime().  It returns the date and time as a
broken-down structure, the members of which are either UCHARs or USHORTs.  The 
`Year' field, in particular, is a `USHORT' meaning that the data structure can 
cope with years up until the year 65535.

The 16-bit OS/2 kernel, therefore, can quite happily report dates up to the
limit imposed by the PC hardware and firmware (with the "windowing" fix that
is most commonly applied by BIOS manufacturers), which is 2079-12-31 .

32-bit OS/2 (/i.e./ version 2.0 and later) is similarly limited by the PC
hardware and firmware, but *it* reports dates as a 64-bit number, counting the 
seconds since the start of the POSIX Epoch (1970-01-01 00:00:00 GMT).  This is 
via the new (relatively speaking) 32-bit system API function
Dos32QuerySysInfo().  (The Dos32GetDateTime() function is still there, for
backwards compatibility and ease of porting 16-bit applications, but this is
really the wrong way to obtain the system time on 32-bit OS/2, since it hits
the clock hardware directly.) This means that in theory, were the hardware and 
firmware encumbrances not there, the 32-bit OS/2 kernel could report dates up
until the year 584,000,000,000 (roughly) to applications.

Operating system kernels are generally the wrong place to look for Year 2000
problems.  Kernels generally don't have much to do with dates and times, other 
than attaching them to files and reporting the current system date+time to
applications.  The main area where the Century Bug rears its ugly head is in
applications programs.  The version of Windows File Manager that ships with
OS/2 2.1, for example, uses two digits for a year when displaying file lists
and cannot handle displaying years after 1999 (it displays non-digit ASCII
characters in the year field).

 ¯ JdeBP ®

--- FleetStreet 1.22 NR
* Origin: JdeBP's point, using Squish (2:257/609.3)

SOURCE: echoes via The OS/2 BBS

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.