Source: http://unix.cc.wmich.edu/rea/Y2K/FAQ.html
Date: 31 Mar 1999
Frequently Asked Questions (FAQ)
About the Y2K Problem
doug.white@acm.org
----------------------------------------------------------------------------
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:
1. Date mathematics. For years businesses have used date math to compute
things such as aging schedules, due dates, past due accounts, etc. Many
computer applications now support the use of date mathematics (Lotus
1-2-3, MS-Excel, MS-Access, etc.) These applications all work by using
a base year (often Jan. 01, 1900) as a starting point and then tracking
the date and time numerically from that point (how much time has
elapsed since Jan 01. 1900). Thus, a time might be stated as a
fractional component of the day integer (35927.63 = May 12, 1998, 3:08
pm based on MS-Excel). This means that to compute the difference
between Jan 01, 1998 and Jan 01, 1999 would result in 365 days.
Computing the difference in today and when a bill was incurred would
indicate how old a debt was (e. g. 45 days = past due). So, when the
year 2000 comes into play using a 6 digit date we end up with
situations like Jan 01, 00 - May 12, 1998. If this is misinterpreted by
a computer system as 1900 then the calculation will result in a large
negative number (in this case -35,926). This number may or may not be a
problem the computer application can deal with. It is possible that
this number will be made into the absolute value (the negative sign is
dropped if no space is reserved to hold it) which will cause even more
confusion. Imagine if your debt went from 22 days old to 35,926 days
old. The past due notice would give you a surprise.
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.
2. The second type of problem involves systems that check the date for
some purpose to determine if a valid date is being used. An example
might be a credit card expiration date. If the program that checks this
when the card is scanned is very simple it might just say is today
greater than the expiration date. Thus, 01/01/99 is greater than
01/01/00 which would result in your credit card being rejected. Another
example is a security system which checks to see if today is a valid
date before recording an entry or exit from a building. If the 00 date
is determined to be out of range or the computation is at fault the
system may simply shut down and lock all the doors.
----------------------------------------------------------------------------
Why did Programmers Do This?
Essentially, several reasons exist for this problem:
1. Saving Space in computer memory. Originally, computers had very small
amounts of memory available and the repeated use of two extra numbers
could make a significant difference on the amount of memory available
so in the interests of efficiency, the seemingly redundant thousands
and hundreds were dropped.
2. Preprinted forms. Designing computer output for old systems was quite
tedious and required that every variable be specifically defined. In
order to make it easy to print a two digit year after a preprinted 19
it was simpler to use two digit years in the program.
3. Unexpected Longevity. Since the year 2000 was a very distant date most
people didn't really think about this problem until recently. Thus, a
lot of programs were written in the traditional manner of using 2 digit
years on the date.
----------------------------------------------------------------------------
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:
1. http://www.firstsql.com/year2000/
2. http://www.sba.gov/y2k/
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.
----------------------------------------------------------------------------
[Image]
98-07-12 / Alan Rea
http://unix.cc.wmich.edu/rea/Y2K/FAQ.html