System abend

S737: End-of-volume or concatenation error

An S737 abend means an error occurred during end-of-volume processing, while moving to the next volume, to the next data set in a concatenation, or to a new disk extent. Message IEC027I gives the return code. 737-24 is a missing member in a concatenated DD.

Other names for this code

Also written as 737, S737-24, S737-40, S737-04, abend 737, system abend 737, 737-24, IEC027I 737.

What it means

End-of-volume (EOV) processing runs whenever a sequential data set reaches the end of what's on the current volume. On input it switches to the next volume, or to the next data set in a DD concatenation. On output to disk it gets the next secondary extent. If something goes wrong there, the system issues message IEC027I and ends the step with system completion code 737.

The return codes you'll see most are these.

  • 737-24 means a concatenated DD named a member of a partitioned data set, and the member isn't there. OPEN checks only the first data set in a concatenation, where a missing member gives 013-18. Members on later DD statements are looked up when EOV reaches them, so the same mistake shows up as 737-24.
  • 737-40 means the next data set in a concatenation couldn't be found on its volume or in the catalog, or its format-1 DSCB couldn't be read.
  • 737-04 means the format-1 DSCB for the data set wasn't on the first volume, or couldn't be read.
  • 737-08, 737-0C, 737-10, 737-14 and 737-1C are disk I/O errors while reading labels or DSCBs, or while writing a file mark.
  • 737-44 and 737-45 mean a program using EXCP, or BSAM with NOTE and POINT, reached more than 65,535 tracks on one volume of a large format data set without BLOCKTOKENSIZE=LARGE on its DCBE.

Other return codes cover JES3, installation exits, FEOV and compressed data sets. IEC027I lists them for your release.

Common causes

  • A DD concatenation names a member in the second or a later library that doesn't exist, for example a control-card concatenation in a PROC after someone renamed a member (737-24).
  • A later data set in a concatenation is cataloged on a volume where it doesn't exist, or an uncataloged one has the wrong VOL=SER (737-40). The same problem on the first data set gives S213 at OPEN instead.
  • A disk I/O error or a damaged VTOC entry while reading labels or DSCBs (737-04 to 737-1C).
  • An older assembler or vendor program using EXCP or BSAM NOTE and POINT reads a large format data set that grew past 65,535 tracks on one volume (737-44, 737-45).

How to find the problem

  1. Find IEC027I in the job log. It has the form IEC027I 737-rc,mod,jobname,stepname,ddname,dev,volser,dsname(member). If the DD name has a number after it, the failure is in a later DD of a concatenation, and the data set name tells you which one.
  2. For 737-24, open the library named in the message in ISPF and check whether the member exists. Look at the substituted JCL (IEFC653I lines) to see the member name after symbols were resolved.
  3. For 737-40 or 737-04, run LISTCAT ENTRIES('dsname') ALL to see which volume the catalog points at, then list that volume's data sets in ISPF option 3.4.
  4. For I/O errors, look for IOS000I just before IEC027I in the system log.

How to fix it

  • For 737-24, correct the member name or create the member, then rerun the step.
  • For 737-40, fix the catalog entry or the VOL=SER for the missing data set, or take it out of the concatenation.
  • For 737-44 and 737-45, change the program to use BLOCKTOKENSIZE=LARGE on its DCBE and handle large format data sets. If the data set has no more than 65,535 tracks on the volume, IBM's other option is to open it for INPUT (BSAM or EXCP) or UPDAT (BSAM).
  • For I/O errors, rerun the step. If the error repeats, have the storage team check the volume.

IBM documentation

IBM z/OS: 737. Use the documentation for your installed release.

Report a correction to WND Software.

Questions

Why didn't the missing member give S013-18?

OPEN checks only the first data set in a concatenation. Members named on later DD statements are found when end-of-volume processing switches to them, so a missing one there ends the step with 737-24.

Can S737 happen on output?

Yes. EOV also runs when an output disk data set needs a new extent, and errors at that point can give 737. Running out of space gives B37, D37 or E37 instead.