Around 1990 it became clear that our installation needed some alternative to a universally-used, in-house date subroutine -- one which supported all sorts of date calculations, conversion between several different formats, offsets from dates, day of week adjustments, etc.  It had been extended and modified many times, and depending on the type of request the same field in a complex structured parameter block might be used as  input, output, or just ignored.   In other words, it was next to impossible to be sure there weren't some unintended behaviors that someone had learned to exploit, and it was equally certain there was no way to verify the unstructured code was even 100% accurate for pre-2000 dates.  Since it used two-digit years and base-1900  windowing, the old date routine would clearly fail for dates or date calculations crossing the year 2000 boundary.

Before 1990, I had encountered the B.G. Ohms article "Computer Processing of Dates Outside the Twentieth Century" in the IBM Systems Journal,  (Vol 25, No 2, 1986, pp 244), which suggested use of what the author called "Lilian date format" (days from Oct 15, 1582) to simplify date computations.  I used that as the base internal date format for a new structured date routine, which handled all sorts of date format conversions, date calculations, relative and absolute date windowing to convert two-digit to four-digit years, etc. and we started phasing out use of the old date routine to eliminate the most obvious common point of failure.

From 1997-1999 various tools and significant person-hours were used to locate two-digit year date usage in over 10,000 in-house application programs, which were then remediated with four-digit years and tested on a test system running with future dates.  There were some cases, mostly involving data entry, where it made sense to allow relative-to-current-year windowing to convert two-digit years to four digits, but absolute windowing was strongly discouraged and dates retained in external files were converted to four-digit years.

As others have noted, solving the immediate Y2K problem by merely changing two-digit years to use a different absolute-base windowing scheme was a questionable temporary solution, creating yet another, potentially more-costly problem in the future.

Our Y2K remediation efforts found and fixed many potential problems that would otherwise have made the first several months of 2000 chaotic.  As a result, the transition from 1999 to 2000 was uneventful with no significant problems.

There were no "hacks" of which I was aware from IBM to ease the transition, unless you count changing the definition of year values in SMF records from "00YY" to "01YY" for dates past 1999.   There were of course various PTFs to fix any issues with four-digit years in MVS and in IBM applications. I recall one notable PTF to fix an erroneous leap-year determination in ISPF that even turned up pre-Y2K in the early 1990's -- a good example of why date calculation code should avoid clever efficiency over obvious and verifiable algorithms.   There were some offerings from 3rd party vendors.  There were also a steady stream of "crackpot" easy-fix suggestions on newsgroups in the late 1990's from people not understanding the issues, and in 1999 from alarmists predicting failures of computer-based control devices that that had no logical reason to be using dates in any significant way.

The problem for us was not "how" to fix a single instance of the problem, but finding "where" to fix an unknown number of instances of the problem in 1000's of lines of in-house code and in associated data sets.
    JC Ewing

On 1/2/20 3:06 PM, Pommier, Rex wrote:
Hi Ron,

I think the rolling century was implemented at a lot of places.  IIRC, didn't 
DFSort have something like that as well as SAS?  The company I was at over Y2K 
went through and converted everything to 4 digit years.  I believe the one I'm 
with now did the same thing.

Rex

-----Original Message-----
From: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> On Behalf Of 
McCabe, Ron
Sent: Thursday, January 2, 2020 2:50 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: [External] Re: it was 20 years ago today

Question about how the year 2000 was handled as we just got hit by a major date 
problem.  I remember that one way to handle the date comparisons was to have 
all the years from 00-19 (or something greater than 19) have a high value so it 
would be greater than the 1990's.  Does anyone remember that?  Was it something 
IBM did although I don't recall putting on any patches for something like that 
so I'm thinking it was something we did.

Thanks,
Ron McCabe
Manager of Mainframe/Midrange Systems
Mutual of Enumclaw

...

--
Joel C. Ewing

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to