System abend

SE37: Out of space, no more volumes or extents

An SE37 abend means a data set ran out of room after using every volume, or every extent, it is allowed. A full PDS is the most common case. Message IEC032I with E37-04 or E37-08 says which limit was hit.

Also written as E37, SE37-04, E37-04, SE37-08, E37-08, abend E37, ABEND=SE37, x37 abend.

What it means

When a sequential data set fills one disk volume, it can carry on onto another, but only if it was given more than one volume to use. A partitioned data set (PDS) can't do that at all. It always lives on a single volume. SE37 means the data set needed to go further and those rules wouldn't let it. The system ends the step with system completion code E37.

CodeMessageWhat happened
SB37IEC030IThe data set asked for another extent and couldn't get one on its volume, and it had no other volume to move to
SD37IEC031IThe primary space filled and no secondary space was ever requested, so the data set couldn't ask for more
SE37IEC032IThe data set had already used every volume or extent it is allowed. A full PDS is the classic case

Message IEC032I carries a reason code after the E37.

  • 04 means the data set filled its current volume and had no more volumes to go to. That happens when the JCL allowed too few volumes, when a PDS fills its one volume (where it is also capped at 65,535 tracks), or when a PDS has used all 16 of its extents.
  • 08 means a sequential data set spread over several volumes filled one and couldn't get space on the next volume in its list. That volume was full, already held a data set with the same name, or had no room left in its VTOC.
  • 0C means an installation exit refused the request for more space. Ask your storage team.

Common causes

  • A PDS filled up. Every time a member is replaced, the old copy keeps its space until the library is compressed, so busy source and load libraries fill even when the member count stays the same.
  • A PDS reached its 16-extent limit.
  • A multi-volume sequential data set needed more volumes than the volume count allowed.
  • The next volume in the list was full, or already had a data set of the same name, often an uncataloged leftover from an earlier failed run.

How to find the problem

  1. Read IEC032I. It gives the reason code, the DD name, the last volume used and the data set name.
  2. If it's a PDS, check it in ISPF option 3.4 with the I line command. Compare the used space with the allocated space and note the number of extents.
  3. For reason 08, ask your storage administrator about the next volume. Check whether a data set with the same name already sits on it.
  4. For a sequential data set, check the volume count in the JCL, or the data class if the data set is SMS-managed.

How to fix it

  • Compress a full PDS with the Z line command in ISPF option 3.4, or with IEBCOPY using the same data set as input and output. Do it when nobody else is updating the library.
  • If a compress doesn't free enough space, allocate a bigger PDS and copy the members across.
  • Think about converting the library to a PDSE with DSNTYPE=LIBRARY. A PDSE reuses freed space without compressing and can have up to 123 extents on a volume.
  • For a sequential data set, raise the volume count, for example VOL=(,,,5), or ask for larger SPACE amounts so it fits on fewer volumes.
  • For reason 08, remove the leftover data set from the next volume, or let SMS choose the volumes. For reason 0C, take the message to your storage team.

What it looks like

IEC032I E37-04,IFG0554P,SRCLOAD1,STEP010,SYSUT2,0A73,DEV004,TEST.PAYROLL.COBOL
IEA995I SYMPTOM DUMP OUTPUT
  SYSTEM COMPLETION CODE=E37  REASON CODE=00000004
IEF450I SRCLOAD1 STEP010 - ABEND=SE37 U0000 REASON=00000004

Questions

How do I fix SE37 when saving a member in ISPF?

The library is full. Compress it with the Z line command in ISPF option 3.4, then save again. If it fills again soon, reallocate it bigger or convert it to a PDSE.

Is a full PDS directory the same as SE37?

No. Running out of directory blocks is a separate problem. ISPF reports that there is no directory space, and a batch job gets an SB14 abend. You need a new PDS with more directory blocks, or a PDSE.