I test in an environment that really limits disk space. The production environment uses a lot of tapes. So, if I use a tape for input, but create a disk file for easier testing, I am continually having to cut cut cut my test sample to be able to run a test of 2 or 3 jobs all the way through without blowing up on space
is there a way to code a synad routine so that it only handles something like B37 (running out of space), and returns to the system for everything else?
I would like to just test if I am in the test system, and if I am, capture the B37, and just do normal EOD processing.
That way, I could reduce my files easily without having to add jobs to strip off so many records from a tape file to create an small input file.
So, basically, I am wondering if I can check for B37, handle that error, and ignore the rest - hand those back to the system.?
Joined: 30 Nov 2013 Posts: 891 Location: The Universe
The first problem with your theory is a SYNAD routine is not entered for a B37 ABEND. It is only entered for a real I/O error; a B37 is not a real I/O error.
You might have a chance of implementing your proposal by using an ESTAE exit and recovery routine. The exit routine would test for a system B37 ABEND and "schedule" your normal end of job as a recovery routine, otherwise let the ABEND continue.
I do hope you're an Assembler programmer and know how to distinguish a B37 ABEND from a user 2871 ABEND. Since you seem to know so little about SYNAD I suspect you don't really know enough to get this scheme to work.
If you look at the 2nd row, and the explanation there, it is for the condition:
Space Not Found for Adding a Record: The space allocated to the data set is already filled. In locate mode, a buffer segment address is not provided. In move mode, data is not moved.
Assembler program. 1 input, usually tape. It will be a great many short. Tapes hold a lot of data. I want to just be able to create a subset of data, but not have to write new JCL for every production job I test.