At first glance, it looked like a straightforward COBOL batch program.
It read a sequential file from beginning to end. For each
record, it performed a random lookup in a KSDS file. If a matching record
existed, it updated the record. If no match was found, it inserted a new record
into the KSDS file.
Hidden deep within the program was a critical flaw: after
every write operation, the program never checked the file status code to verify
whether the write had succeeded.
Everything worked perfectly—until the KSDS file reached its
maximum size limit of 4 GB.
Once that limit was reached, every attempt to add a new
record failed. The system dutifully generated the message:
IEC070I 034(004)-220
However, because the program never validated the write
status, it continued processing records as if every insert had been successful.
The result?
New records were silently discarded while the batch job
completed normally, giving everyone the illusion that everything was working as
intended.
The issue remained undetected for months, quietly
preventing new data from being added to the KSDS file until someone finally
traced the missing records back to the unnoticed write failures.
Key Takeaway : Never assume a file operation succeeds.
After every file read, write, rewrite, delete, or
open operation:
✅ Check the file status code.
✅
Handle error conditions appropriately.
✅
Log and escalate failures when necessary.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.