Y2K 
What it is and is not

Norm Home
Email me
SiteMap

Consulting Soapbox Notes  NotesFor... Outline

What the Problem is...

   Y2K is a short way of referring to Year 2000: Year 2 times 1000(k). The problem is what is not known about the actions of a program when it uses a date after 12/31/1999. This is just the first case of automated data processing running squarely into the limits of a data format in a very broadly recognized way. There will be more of an even more significant effect in the future as we fail to deal with the basic problem. It it not unlike the woman arrested for not sending the child with the same name and address to school when she reached 6 years old, when the truth was she reached 106 years and only two digits were in the data. Programs are written to deal with a particular problem, often without a specification that deals with the limits of the data to be kept. Just ask Dilbert.

The action can be rather strange, and may not be directly related to a particular program, as a program may use the operating system for some process which uses a date such as in saving a file. A program may use some standard environment code, such as the run modules used by most Basic and C programs, which often also have error handling code which can be triggered by a failure of the module to handle the date, even though the program does nothing using a date in doing it's task. As a result, a program may run well, or may halt due to the error in the module triggering a halt command, or may use a date, and merely report the wrong day of the week. The result of an error may be your watch saying the wrong date. It can be severe, as when support for critical processes is automated.

The History

   Much of the program code currently in use now is old. I wrote programs in the 1980's that were expected to be used for five years for accounting which used many dates, and mass storage at that time cost about four mils ($0.004) per byte. This meant that a pay check with a start, end, and issue date cost 1.2 cents for storing the year for that check. That is $0.142 per employee per year for the check images alone, which adds up quickly, since this also involves a clear date, taxes paid, each benefit paid, etc. Since this expense was well in advance of any problem, and would be replaced long before it could be a problem, it was a reasonable management decision to use a two digit year date. The problem comes in other management decisions later to build on the existing system without the expense of changing all the files using that format, and the programs using that code. That would cost a lot to change years of giant files and an ever increasing number of related files and programs. Some production programs are still using code and file formats originally created in the 1960's. Finding and changing every place that the year is used in every program and file is a huge task. Just think of what changing all the dates on your checks (from your first check) would involve. Now think of everywhere you use dates. That is the starting gun. It WAS cheaper then. Now??? The expensive problems will not be the dramatic stop and wait for human intervention. It will be the subtle ones that are not found for a good while, needing many hours to correct the payroll or such. The biggie will be the file that nobody is really aware of, but has a significant role in the process.
 

The Hidden Part

  Watches used to be mechanical, wound, reset frequently, and cost at least a couple hours pay, and only told the hour, minute, and second. Clocks were larger. Now your TV, radio, phone answering machine, microwave oven, car, thermostat, washing machine, and a refrigerator magnet have a digital clock. You don't see the clock in the washing machine? How does it know to run for a specific length of time for a cycle? The digital clock is so cheap, it is less expensive than other options, so it is used in many places you would never have thought of, any time that time is used. It is expensive to design one, but very cheap to keep using that design, which includes the programming in it. To keep track of exactly what that clock chip does and does not do in each and every device it is used in is hard to imagine. Many of the devices using clock chips were designed without any thought of the year 2000, other than maybe it was the year the designer wanted to retire. After all, it is just a radio / microwave oven / coffee pot / washing machine / game boy / whatever. Or it controls the air conditioning in ER, or the vault time lock, or surveillance camera recorder. These are the very short term items. The big, and very important part, is how the date is stored in files. Software systems work based on file formats. You work from time and date to time and date. You are paid on that basis. The check is written for an amount on a date. Each process has at least one program and two files involved in the process.  A program can just copy data from one file selectively to another, without dealing with the data format so it has no problem, but the next program in the chain, using data from a Y2K compliant program is passed a date it can not use correctly.
 

Glitch?

   Is a glitch? Or is it a feature, Microsoft's favorite description of the action of a program that does not match your expectation. They will do exactly as they were designed to do, whether it is cruise through with everything going on unnoticed, or halting and requiring a restart, or never handling a date beyond their design, as Lotus 123 v1, which cannot handle 1995. That is the frustrating part: ever erase a file and wish it had not done what you told it to do?
A program may have an algorithm to handle a date range that exceeds two digits, which complicates matters yet more, for humans can live over 100 years. To make such a scheme work, more assumptions must be made, for what works for date of minimum retirement age will not work for date of birth (born 2040 or retire 1940?). It can take some time before these dates in files are used, and found to be a problem and fixed. The problems will dribble in, as infrequently used dates are used. It has helped industry in that it forced documenting many systems and fixing many programs that should have been maintained, and only got more difficult and expensive to update, now rather than later when the cost would not be "opportunity cost" but a company's survival.

We have more critical dates comming as a result of data formats. We must be aware of what data we need, keep, and the format it is kept in to avoid more expensive unpleasent suprises.


Copyright © 1998-2005  Norman Montgomery ; All rights reserved.