Please feel free to forward this newsletter to as many friends as possible. I have a personal goal of reaching one million readers. I can achieve it with your help.
the Software View: What, me worrY2K? or How I stopped worrying and learned to love the Year-2000 problem. (Part V)
Welcome back, gentle readers. For those of you with Web access and a Netscape Navigator browser, please click here:
http://www.softwareview.com/
Scroll down the page and you will notice a link entitled, "Daily view weblog". The daily news page is also known as a "web log". It is en vogue and the fashion of these days to call it that. Click on the link, click "reload" on your browser or clear your browser cache to ensure that you always receive the freshest, hottest daily news concerning JavaTM, Linux, XML, and the software industry! The link never changes, but I will be updating the HTML file page behind it every day. Please, do take a gander at it every day.
Also, gentle readers, the Software View is an Associate Internet World Wide Web site of Amazon.com. I'd like to extend my sincere, heartfelt gratitude and thanks for your patronage. I'm offering links to books, et cetera that you can purchase from my web site. I'd greatly appreciate it if you would purchase software industry books from my web site. Help support my newsletter and web site by purchasing items from Amazon.com from my web site. Here is the URL (Uniform Resource Locator):
Click here
Now, dear readers, on with this week's episode of the Software View!
As you probably deduced, the real world just does not allow for simple, one-size-fits-all solutions. There are some excellent arguments for using the date-field expansion approach:
- There's usually more programming associated with the two-digits approach than with the four-digits year. You'll have to convert formats before doing simple comparisons or calculations.
- When storage is expanded, code should still be checked to ensure that the whole four-digits year is being processed, not just the YY part. Data structures and definitions must also be scanned, and sometimes modified, to store the extra two bytes within the code.
- Windowing processes continue to work even when deriving realistically incorrect output. With a four-digits system, invalid input data will trigger instantaneous notification.
- Routines for sorting and validating two-digits years will require additional modification to handle "windowed" derivations. Since extra code must be added to nearly every program to handle dates, the project size does not diminish - it may even increase.
- Data input and output to third parties may not match their data definitions, standards, formats, or conversion timing when two-digits dates and windowing are used.
- Some date ranges, such as those found in scientific data, span more than one hundred years. A windowing approach would be impractical in these cases.
- The logic approach usually adds processing cycles, millions of instructions per second (MIPS) and reduces throughput. Sometimes windowing-driven performance requirements minimize the resources saved by avoiding bridges and conversion.
- A logical date-derivation operation (window) developed for one date may not fit each type of date that the program handles, resulting in poor maintainability and proliferation of "base" dates.
- Fixed windows can leave logical time bombs in programs that are used beyond their life expectancy (a common scenario).
- Expanding all stored dates to four-digits years and correcting the code to match is certainly the cleanest solution, and it's the easiest to understand and manage.
- Zoned or packed-decimal dates in the YYYYDDD format take up the same amount of physical space as the YYMMDD format stored as numeric data.
- Four-digits dates must still be carefully reviewed to ensure data integrity. Sometimes the century digits aren't initialized; they could contain anything.
- For seldom-used archived data containing two-digits years, conversion programs will need to be written to ensure compliance with new programs.
- Expanding the date fields uses more storage, and some database designs aren't conducive to expansion. For example, you'll have problems if the date is also an index or key, or if expansion would overwrite adjacent data.
- When expanding files and databases, automatic population routines based upon windowing have to be written and run to fill the additional two bytes with valid data.
The range and repercussions of date-related problems make preparing for Year-2000 compliance a unique exercise, so there are no previous examples or case studies to emulate. The Year-2000 project forces an exploration of unfamiliar methods in all of the following areas:
- Cataloguing programs and identifying redundant or obsolete files and data.
- Scanning code and hardware to determine the scope of the problem.
- Converting programs to different languages, platforms, and versions.
- Changing systems-management programs, file resource management, performance monitoring, archiving, service subroutines, and communication utilities.
- Coordinating vendor compliance, upgrade and performance undertakings, and obligations.
- Revising and redesigning data formats and storage techniques.
- Redesigning or replacing hard-coded processes in equipment and devices (for example, point-of-sale equipment, automated teller machines, private branch exchanges, hand-held scanners, access-control terminals, remote-monitoring devices, etc.).
- Accommodating data import and export requirements outside the control of the enterprise.
- Revising user interfaces for both data-capturing and reporting processes (forms, reports, screens, etc.).
- Changing hardware, such as BIOS and CMOS, that can't store dates correctly.
- Purchasing and implementing new tools, methods, and systems.
INPUT AND DISPLAY ISSUES
Before getting down to the nuts and bolts of devising a Year-2000 solution, there are a few basic issues that must be taken into account. One of the most important of these, especially for organizations with an international presence, is the fact that dates are displayed differently across the globe. Some are in the format MMDDYY, while others are displayed as YYMMDD. In some European countries, they appear as DDMMYY. Within the same country, the format sometimes varies between corporations and government departments. Mixing formats already causes confusion, and the year of "00" will make it worse. Add to this the completely different dating systems sometimes used in Asia and the Near East, which must be adjusted for if they appear in some of an organization's records.
In other words, when designing a Year-2000 solution, it's not enough to ask only if the year should be preceded by "19" or "20". Programs and computers will also have to be smart enough to answer questions like "What is the correct interpretation of 020304?" It could be any of these:
- February 3, 2004.
- March 4, 2002.
- March 2, 2004.
During the years "01" through "12", there will be additional confusion - does 011201 denote the date of January 12, 2001 or December 1, 2001?
EMBEDDED DATES
One of the more ubiquitous contributors to the Year-2000 problem is embedded dates. These are hard-wired or constant identification data, field-layout masks, or components of larger alphanumeric fields. Embedded dates are difficult to detect, analyze, and convert: first, it may not be immediately obvious that these numbers contain dates; second, the dates within these numbers are probably essential to program functions.
DATE-STAMPING
Sometimes an embedded date (often with a time stamp, as well) is employed to uniquely identify a particular item or event, such as a telephone call logged to a digital list. This convention is commonly used in serial-number algorithms, such as account numbers, license numbers, and invoice numbers. Date-stamps are also attached to records of communications and transactions, as well as to records kept by backup and recovery programs. Errors in the format and processing of these date-stamps due to Year-2000 roll-over could have widespread implications.
Date-stamps often create problems when their formats change, such as when old dates aren't recognized by new recovery routines. If changes aren't made, the transactions or records could be processed out of sequence.
EVENT HORIZONS
The Year-2000 problem won't suddenly catch up with the world at midnight on December 31, 1999. Many business applications look ahead months or years to create expiration dates, due dates, and other future dates.
A Year-2000 event horizon is the date when a system could, or will, fail due to an inadequate or invalid date. Here are a few examples of how far ahead you can expect systems to fail, and when they should be converted. The following time line is a future chronicle of the slow collision ahead.
- The month of December of the year 1999: one month future projections will fail. "12/99" might be a programmer "signal" embedded within software applications. Back-up electrical generators will sell out from all retail outlets. Hoarding of food, money, supplies, and water will begin.
- December 2, 1999: thirty-day future projections will fail.
- December 31, 1999: sometimes programmers used this date as a "Never Expires" date (IBM tapes are marked 99365 - all of them could expire today). Black Friday: the largest one day sell-off in the stock market's history. You'll find long lines at automated teller machines. Technical support for most software applications might cease after today.
- The year of 2000: age calculations (compared to today's date).
- January 1, 2000: black Saturday. Computer passwords expire and lock system administrators out of their systems. Non-compliant systems (fire alarms, heating systems, power grids, telephone routing and billing, medical care, the military, air traffic control, the Internet and the World Wide Web, and financial exchanges) all fail. Incorrect bills are sent out. Manual paperwork begins. Unemployment drops. Supply chains begin disruption. The first Year-2000 casualties occur. Year-2000 litigation begins.
- January 3, 2000: Monday. The first business day of the Year-2000 in the United States of America.
- January 4, 2000: Tuesday. The first business day of the Year-2000 in the United Kingdom and the European Union.
- January 8, 2000: Saturday. The first "We have survived!" party is thrown.
- February 1, 2000: the second "We have survived!" party is thrown.
- February 29, 2000: Tuesday. Some major software application packages don't know this date exists. Some PDP-11 computers won't boot after this date.
- March 1, 2000: some leap-year errors might not have appeared yesterday.
- January 1, 2001: the third millennium and the twenty-first century start.
- February 29, 2001: this date doesn't exist.
- The year of 2002: the transition to the Euro currency unit is completed within the contiguous European Union.
- January 1, 2002: the Burroughs Unisys A Series computer system date and time will fail.
- The year of 2005: some really old versions of Unix (in other words, 16-bit BSD) will fail this year.
- The year of 2009: the Federal Aviation Administration finally finishes its Year-2000 preparations (in the United States of America).
- January 1, 2020: systems that are still using the year of 1920 as a pivot year will fail.
- January 1, 2020: the Apple Macintosh (System 6.0.4 and greater) Date and Time Control Panel can no longer set the current date.
- December 23, 2023: Sunday. This date signals the end of the world according to the Mayan calendar.
- January 1, 2030: systems that are still using the year of 1930 as a pivot year will fail.
- February 6, 2036: 232 seconds from January 1, 1900.
- January 19, 2038: all Unix-based computer operating systems will fail because it will then be 231 seconds from January 1, 1970.
- February 6, 2040: at the time of 06:28:16, old Apple Macintoshs' long word seconds from January 1, 1904 will overflow.
- September 17, 2042: IBM's mainframe 370 time-of-day clock will overflow.
- January 1, 2044: for MS-DOS, 26 years from 1980, setting the most significant bit (MSB). Signed variables using this will return a negative date.
- January 1, 2046: the Amiga computer's operating system date will fail.
- June 8, 2046: Some Unix password aging fails. 642 weeks from the year of 1970.
- December 31, 2049: Microsoft Project 95 reaches its date and time limit.
- December 31, 2078: Microsoft Excel 7.0 reaches its date and time limit.
- June 6, 2079: 216 days from January 1, 1900.
- January 1, 2080: MS-DOS file dates, which are displayed with two-digit years, are now ambiguous.
- January 1, 2100: Y2.1K, most current personal computer BIOSes run out of dates; the MS-DOS "DIR" command renders the file-date years 2100 through 2107 as "99".
- February 7, 2106: for Unix operating systems, 232 seconds from January 1, 1970; date and time overflows at 06:28:16.
- January 1, 2108: for MS-DOS, 27 years elapse from 1980. The file date and time will overflow.
- November 28, 2738: the approximate day of A.D. 1 million.
- November 28, 4338: the COBOL-85 integer day 1,000,000 exceeds the six-digit field 9999. HTTP caching fails.
- January 1, 10000: Year-10,000 problem, four-digit years will fail.
- January 1, 29602: Microsoft's Windows NT File System (NTFS) will fail.
- The year of 29940: the new Apple Macintoshes' signed 64-bit time will fail (has been valid since 30,081 B.C.).
- July 31, 31086: the internal Digital Equipment Corporation VMS date and time will fail at 02:48:05.47.
- The year of 60056: Windows-32 64-bit date and time will fail (was started from January 1, 1601).
EMBEDDED SYSTEMS
Embedded systems show up for monitoring and controlling in places as diverse as power stations, water plants, phone switches, and burglar alarms. One commonly cited problem is associated with gadgets that monitor periodic maintenance. When the clock strikes twelve on New Year's Eve, in the Year-2000, these devices might think it has been ninety-nine years since their last maintenance, realize that it's too long a period for safe operation, and shut down. That wouldn't be good, especially if it's the device that monitors your intravenous fluids.
Embedded systems differ from embedded dates. They often appear as firmware on read-only memory (ROM) and EPROM, which hold the programs for starting or running greater systems. They may also be present within compiled Dynamic Link Libraries (DLL's), where date handling is abstracted from the internal workings and hidden from the programmer. It's difficult to locate the source code or original programmer, so problems with embedded systems can be especially serious.
ARCHIVING SYSTEMS
Most organizations store data for a minimum of seven years, as dictated by the Internal Revenue Service (IRS) rules and other statutory reasons. Existing archives must be recoverable after a Year-2000 update.
Stored data must be available for auditing and historical inquiry purposes, as well as for emergency backups. It's vital that archiving systems be inspected early in the project, since existing material may need reformatting. If a system writes an expiration date of 12/12/00 on a tape, it's possible that this tape will be recycled (and reformatted) when the system deduces that the data has expired, or that the tape has never been used at all!
This problem will be compounded by each new archival cycle, so Year-2000 strategists must ensure the synchronized conversion of both systems and archived data.
To be continued ...
Sincerely,
Mark Kuharich
Join my free e-mail newsletter called the Software View by clicking here or by sending an e-mail to thesoftwareview-owner@west-point.org