Description of Y2K Problem
The Year 2000 problem (Y2K, Millennium Bug, Millennium Virus) came about due to programming practices involving the use of 6 digit dates (dd/mm/yy) vs. 8 digit dates (dd/mm/yyyy). This results in the possibility of a date such as 31 being misinterpreted (is it 1931 or 2031?). Thus, any computer program which deals with 6 digit dates is susceptible to the Y2K problem.
The Y2K problem involves two key date issues:
In old COBOL (a programming language that is still in widespread use) dealing with date math is even more complicated. Dates in COBOL are typically stored in three different locations (a month, a day, and a year). The year is often stored as 2 digits to save space and simplify output problems with pre-printed forms. In some cases, COBOL programs were written with 4 digit dates and 1900 is subtracted from the date to generate the form (1981 - 1900 = 81) so that the form can look like 1981 when it is generated. This will cause a problem since 2001 - 1900 = 101 instead of 01. In other cases where a 6 digit date was used, the problem is even worse since there is no clear indication of which date we are talking with. Imagine COBOL program that deals with county records to record births and deaths. If all the dates are stored as 6 digits soon you will have records which say something like 09/03/63. Now suppose, I live to be a hundred years old, my birth is recorded as 09/03/63 and if I die on my birthday 100 years later my death would also be 09/03/63. A casual observer might interpret this as me dying at birth or who knows what.
Thus, the main problem of Y2K is the problem of incorrect results when date mathematics are conducted. Most companies are working to correct these problems in their COBOL programs and most current microcomputer applications already have built in fixes.
Why did Programmers Do This?
Essentially, several reasons exist for this problem:
What is COBOL and why does it exist?
COBOL is a computer programming language developed by the CODASYL committee (Conference on Data Systems Languages) in 1959. COBOL became the business programming language of choice for large scale applications throughout the 60's 70's and 80's. Millions and millions of lines of COBOL programs were written and these systems (often called legacy systems) are still in use today since it is expensive and difficult to replace an accounting system or payroll system in a large corporation. The old adage, "If it ain't broke, don't fix it" has also played a roll in the continuation of COBOL as a programming language nearly 40 years after its original inception.
Where is the problem?
Any computer program which deals with dates is susceptible to this problem. Thus, if you use dates in any of your applications at home or work, you should make sure the applications you are using or the programs you are writing are compliant with 8 digit dates or have some other mechanism built in to deal with the year 2000. If you fail to do this your business may suddenly find all of its records our of order or important information could be lost due to problems dealing with data that is out of range.
Will this problem dramatically affect my life?
Not likely, most companies are taking steps to deal with this problem. There will likely be isolated incidences of problems (like a credit card rejected) that will quickly be identified and corrected by the institution. At home, if you make sure all of your applications and programs utilize 8 digit dates then you should experience no problems with your personal applications.
What are Logic Devices [PLD]?
Logic devices and programmable logic devices are technical terms used to refer to the many semiconducter based "chips" that are used to manage various devices (anything from a simple coffee maker to a giant production machine). These devices are usually programmed using Assembler programming language and it is estimated that literally 10s of billions of these things exist around the world.
Why are people concerned about PLDs in conjunction with Y2K?
Many people believe that a large number of devices that utilize PLDS will fail when the year 2000 rolls around since PLDS may contain date sensitive code. In particular programmable devices like VCRS, Coffee Makers, Security Systems, etc. are susceptable to this type of problem. If the PLD is date sensitive and was not set up to deal with 8 digit dates (discussed earlier), then a number of different things may happen, 1) the device may simply fail to operate; 2) the device may report the incorrect day of the week (if it thinks the year is 1900); 3) The device may fail to operate as expected (coffee maker doesn't come on in the morning). Thus, there is the potential for a lot of problems with this type of thing but I don't think any of it is earth shattering (although if my coffee maker stops working there is going to be a serious problem).
The other side of this coin is that PLD devices are used in large production systems that manage things like power plants and food processing machinery (literally everything these days has a PLD in it somewhere). Many speculate that electricity will fail and all sorts of problems will ensue. My thought is that if the power company is not producing electricity then it is not making any money. While I have not worked in the power industry, my feeling is that they are testing these systems and making corrections so again, there may be some isolated power outages, but as soon as the power fails they can start repairing that system.
What can I do about PLDs?
Well, the easiest thing to do is to set the dates on the various devices in your house that are programmable (security system, coffee maker, etc.) to dates after the year 2000 and see what happens. If any problems ensue then you can figure out what to do next (contact the manufacturer or replace the device). Mostly I would check out your mission critical systems. I checked out the coffee maker and the security system and both worked fine.
How to be sure:
Assess your personal work. Are there applications or programs that use dates in computation or for reference purposes? If you have such applications you may want to investigate to determine if those applications and programs use 6 or 8 digit dates. If you are using 6 digit dates, then you should convert them to 8 digit dates or at least test the application to determine if there is a problem (try entering some dates in the future). Be sure and back up your original files before you try any of this.
Additional Information
There are a great many web sites and consulting firms dedicated to solving this problem commercially. Here are two links:
In addition, if your small business or community organization is interested in a presentation on the Y2K problem and its impacts feel free to contact doug.white@acm.org.
http://unix.cc.wmich.edu/rea/Y2K/FAQ.html