Dating back to the early days of commercial computing, the Year 2000 problem has been caused by programmers and database administrators specifying dates by using two digits to represent the day, two for the month, and two for the year. One common form is DDMMYY, where 5th January 1972 would be expressed as 050172. In the most common COBOL data form, this would save two characters per date. At this time, some mainframes only had 64Kbytes (65,535 characters) of main memory, and disk storage of around ten megabytes. Today, a desktop PC may have 1000 times greater capacity than this.
At the time, this seemed a reasonable tradeoff, since the year 2000 was over forty years into the future. Those involved felt that the programs would be replaced long before the millenium. However, as the years passed, many programs and databases continued to be designed with the old two digit year form. These and the older programs, many of which are decades old, probably haven't been modified to handle the year 2000.
Let's look at an example of a hypothetical Human Resources program which it compares dates stored in the two digit year form:
||Years with company
||98 - 87 = 11 years
||01 - 87 = -86 years
Imagine the problems with overdue payment computations, loan interest calculations, sorting by date, and many other areas. Another related issue is one of leap year calculation.
Here is the proper way to determine whether or not a given year is a leap year:
- if the year is divisible by 4, it is a leap year, except:
- if the year is divisible by 100, it is not a leap year, except:
- if the year is divisible by 400, it is a leap year.
- if the year is divisible by 4000, it is not a leap year.
This means that the year 2000, being evenly divisible by 400, is a leap year. Applications that don't apply the third rule above will incorrectly assume that 2000 is not a leap year.
Hardware and firmware problems
Some PCs have a problem that causes the date to be reset to 1980 when the year 2000 arrives.
It is recommended that the manufacturer of the hardware be contacted to determine if a given model of computer is susceptible to problems after the year 2000, and what should be done about this.
Centra Technology does not recommend resetting the clocks on computers for testing of Year 2000 compliance. This should only be attempted on machines with no valuable data or programs present, since setting the date forward may cause loss of data and other problems.