Analysis: Millennial Morals

Glenn Ericson

Often, for one reason or another, we're in the position of betting that adequate coverage has been planned for a project. Other times we make concessions and compromises to finish on time and within budget. Asked for an estimate and project scope we tend to overlook some areas as a byproduct of our optimistic views. In that vein, Y2K projects offered the opportunity to learn more about your project management and estimating skills, as well as about your company's current pitfalls and future requirements.

The forecast was for September 9, 1999 to be a routine day. All dates such as the symbolic 999999 represent those special-value "non-date-dates" that are programmed to trigger an event or action. For most this was true, and for the record this was not a Year 2000 problem or issue, except for several aspects.

Maybe you fixed the Year 2000 problem but failed to consider or missed the special non-date value code for proper actions. The database should be examined for such occurrences and whether the Year 2000 changes did or did not alter the data.
Moral: Know thy data.

Or you elected to risk the fact that these special dates were only used as print fields and wouldn't matter if they were disturbed in your database. Humans can adjust to the new flag representation for those special happenings. Careful operators, data entry operators, and end users do not look kindly upon surprises. Surprise during a period of turmoil is even worse.
Moral: Know thy people.

Everyone's different and it's exactly these differences that make standards difficult. For example, assume there's a distributor where all future orders have historically been held by entering December 31, 1999 as their ship date. In a few months it will be an extremely busy December 31, 1999. The application checks for entry of an accurate date so mythical numbers like 999999 do not work. In a few short months how do you hold an order? If the staff continues in their prior habits or if excessive concurrent change is imposed, expect failures if the methodology remains.
Moral: Know thy process and nuances

The AS/400 has Year 2000 corrections in the operating system to handle permanent expiration dates. In the past records stated as 12-31-99 would be marked "permanent retention." On the people side, for those of you who as a matter of habit write expiration dates a month or two in the future, this established industry practice may cause some aggravation as we approach December 1999.

December 31, 1999 is the most common date by far used to signal "hold" or "infinity." The problem is that, in this scenario, infinity is arriving in 74 days (from this issue date) and when we get there everything will be current and released. Some imaginative IT professionals generated other dates beyond December 31, 1999, but before January 1, 2000--dates such as a mythical December 32, Julian 99366, or Julian 99999. Those who are creative-date-deprived will be awestruck with Julian formats that contain 633 non-date dates each year.

Computers have no problem confusing any symbolic dates with the real thing, unless you unambiguously added code in the program to check for and process these magic numbers separately. That is not a Year 2000 problem. When there are changes to date routines you have to make sure these special case symbolic numbers continue to work in a meaningful manner. In addition, you should be looking for latent effects.
Recommendation: It would be better to use "Standard Date Routines" and check the database for unexpected "trash entries" in date fields.

When we get to January 1, the computer might think that the 999999 date was 1999 and if your system is Y2K-ready, it will think that date is in the past and it will do whatever it was programmed to do when it encounters a past date. It doesn't matter to the computer that your date does not exist if you don't check for that condition in the new environment. Often the hardest part of programming is handling the exception conditions.

The final moral and recommendation: If you can't win the game, find out how to change the rules. If that is not possible then get out of your comfort zone and stack the odds in your favor.