When I worked for SIAC, the IT subsidiary of NYSE/AMEX, we used to keep an MVT Abend Dump around to use when interviewing prospective programmers and Systems Programmers.
We’d hand the dump to prospects and wait for their reaction. The guys who said, “The program bombed”, without looking deeper were immediately crossed off our list. We finally interviewed a guy who spent 10 minutes examining the code and scratching his head before admitting, “I can’t figure it out. It’s impossible. That failure couldn’t have been caused by that instruction”.
He was right. The Abend Condition Code indicated a particular type of failure at a particular memory address. The problem was that the instruction at that address could not possibly have caused that particular type of error. Looking at the dump would not reveal the cause of the failure. It took my boss and me (each with 20+ years of in-depth experience in the OS) two weeks to figure out what had gone wrong.
Turned out we had encountered an I/O error on SYS1.SVCLIB, which contains transient modules, non-resident parts of the OS. Among other actions, when an error occurs, a message is sent to the operator. The code to send that message resides partly in SYS1.SVCLIB. The address in question was the SVC Transient Area, part of memory dedicated to modules fetched for SYS1.SVCLIB. The content at the time of the dump was leftover code from some previous Transient Load and did not reflect the instruction that had really triggered the Abend. To figure it out, we had to set the Wait Bit in the Program Check PSW and come to a hard stop when the condition occurred. We then took a Stand Alone Dump and figured out the problem.
The OS dump had served its purpose – separating the sheep from the goats. 😀