Leap Day Error in Carrier Access Billing System (CABS) (Missouri)greenspun.com : LUSENET : Grassroots Information Coordination Center (GICC) : One Thread
Our thanks to Gill Wagner for allowing us to repost his personal story from firstname.lastname@example.org
Well, I find myself in a very unusual position. I am sitting at a client I had more than six years ago, while I was a contract programmer at another firm. The client is a telephone company in mid-Missouri.
Way back when, I converted their system from an IBM 36 to an AS/400. At the time, I also convinced them to let me take care of the Y2K issue. In addition, I designed and wrote a carrier access billing system (CABS) that was also year-2000 compliant.
Yesterday they called me to see if I could help them out. They couldn't get bills to print because CABS wouldn't accept 2/29/2000 as a valid date. They called me, because they had exhausted their attempts to fix the problem, and I'm the one who wrote the majority of the code.
The situation is this. If they don't get their bills out within five days, they lose $300,000 (regulatory requirements, you see).
Well, here I sit, amazed at my own stupidity. Despite the fact that I knew about the 400-year rule, I still screwed up a routine that validates the dates they enter on screen. I have no idea how this particular routine error wasn't found in testing, but it wasn't.
The good news is that their date validation routine is a single program that does nothing else, and is called from every program that needs a date checked. So, I made one change to one line of code and fixed their entire system.
So, here is a real-world case of a leap-year problem that would have done major financial damage, had it not been solved in time. I just thank my lucky stars that I chose to put the routine in a separate program.
Otherwise, I'd have never gotten done in time.
-- Steve Davis (Columbia, MD) (Steve@davislogic.com), January 06, 2000