The following stories are true. Im telling you this up front because its hard to imagine that they could actually happen.
A couple of winters ago, we were hit by a pretty heavy snowstorm where I live. It made driving very difficult and walking almost impossible. My brother-in-law, however, didnt think that 2 inches of ice should keep him from his morning cup of coffee at the restaurant with the boys, so out he went at 5:00 in the morning. He no more than stepped out of his truck in the parking lot when he slipped and fell, breaking his leg in the process. Since it was still dark outside, no one discovered him for quite a while. By the time the paramedics arrived, hed lain there so long that his pants had frozen to the ground. On the way to the hospital, the paramedics noticed an awful lot of smoke coming into the cabin of the ambulance. They stopped, got my brother-in-law out, and watched as the ambulance became engulfed in billowing clouds of smoke! I have a mental image of this poor guy strapped to a gurney, alongside the interstate, in knee-deep snow, and his only hope of getting some relief for his broken leg quickly turning into a smoldering ruin. Now thats a great example of how things can go from bad to worse!
A Slip of the Finger
In our AS/400 world, things can go south just as quickly. Recently, on the Midrange Computing Discussion Forums (www.midrangecomputing.com/forums), someone posted a plea for help. It seems that this fellow had just taken a position in an AS/400 shop and was attempting to use Select Command (SLTCMD) to prompt for all commands beginning with CVT*. Were not sure what happened next. Was it a ringing telephone that distracted him? Was it a coworker popping in to ask a question? Or was it just a momentary lapse of concentration? Whatever it was, because of a slight misplacement of a finger on the keyboard, SLTCMD CVT* became DLTCMD CVT*. In the space of a moment, all of the AS/400 commands beginning with the letters CVT, such as Convert Date (CVTDAT), were gone. That was bad. Things got worse when he went to look for the latest recovery tape and discovered that a system backup hadnt been run since the AS/400 was installed. At that point, this guy must have felt a terrible sinking in his gut. What a horrible experience! Unfortunately, hes not alone.
Details, Details...
When I was just starting out as a programmer, I worked for a trucking company. One of my first projects was implementing canned software that allowed clerks to record driver logs. To provide some file-maintenance-cleanup functionality to this package, I wrote a program that would save a range of logbook data to tape and then clear those records from the database. You can guess what happened. I tested the software on a Friday afternoon, and it worked so well that I put it into production and scheduled it to run that very night. I figured wed be safe if any problems came up, since we also ran a backup on Friday nights. This fact might have saved me if Id scheduled my job to run after the backup rather than before.
I came in the next day to see how it went. Upon displaying the logbook file, I found that about 250,000 records had been removed. I wasnt extremely familiar with the database and how big it should be, so this sounded about right to me. Ha! I then displayed the tape and discovered that the file saved on it was extremely small. At that point, I began to worry. I looked at my program and realized that my hardcoded library names were wrong. I had forgotten to change the test library name for the save. After performing a flawless save of the test file, my program, doing what I had told it to do, deleted a quarter of a million records from the production file. Aargh! That was bad. Things got worse on the following Monday, when I had to face five data-entry clerks and tell them that they were in for some major rekeying. That was one of the hardest things Ive ever had to do.
The Moral of the Story
So whats the moral of these stories? The moral is that paying attention to detail and always being prepared should be the highest priorities in your shop. Accidents and mistakes can happen at any time, but, with proper precautions and good backups, their effects can be minimized. If Id taken a little more time double-checking my code, I would have seen that Id hardcoded a test library on the Save command and averted a very embarrassing situation. If the fellow who deleted all the CVT* commands had been paying closer attention while typing and if he hadnt signed on as the security officer while doing it, his story might have had a happier ending, too. And if my brother-in-law had just stayed home to drink his coffee, he wouldnt have found himself stranded on a snow-covered interstate with a broken leg. Stop and think before making an irreversible move in your shop. Otherwise, you may find yourself telling the story of how your situation went from bad to worse!
By the way, (just so I don't leave you hanging on all these events), I was able to recover all but one week's worth of data that I'd lost from a previous backup tape, so the clerks didn't lynch me. The fellow who deleted all the CVT* commands received a lot of great advice on the MC Forums and ended up restoring the missing CVT* commands from a save file that one of the Forum members sent him. And my brother-in-law? Well, he walks with a limp now but still meets the boys for coffee every morning before the sun comes up. Some folks will never learn!
LATEST COMMENTS
MC Press Online