by steve-myers » Thu Sep 13, 2012 10:15 pm
x37 ABENDs refer to the end of volume function, and that covers a multitude of sins, ranging from I/O errors to space problems.
Now a reasonable person might ask, "I/O errors!!!??? What does that have to do with end of volume?" The answer is sort of convoluted. Output tape end of volume is initiated by an I/O error when the end of tape marker is detected while writing an output record. There is still some physical tape left, so the output record completes writing, and then end of volume is called to analyze the I/O error. If this analysis indicates end of volume it writes a tape mark, trailing labels and another tape mark. End of volume then rewinds and unloads the tape and asks for another tape. A similar sequence is done for input; the I/O error this time is for a tape mark. Input end of volume either arranges for the end of data portion of your program to be entered if the labels indicate end of dataset, or, much like output, gets the next volume. In any event, end of volume gets to check all I/O errors that are not "real" I/O errors that the lower level I/O error analysis corrects before the I/O error is returned to the application.
I was unwilling to actually lookup the 837 code before; that's utpalpal07's responsibility. I finally did look it up just now. It appears to me there was some issue in the volume switch, which I didn't really understand, and which utpapal07 will have to investigate himself.