z/OS message

IEC032I: E37 abend, no more space on any volume

IEC032I means a program writing to disk or tape ran out of space on every volume it was allowed to use, and z/OS ended the step with system abend E37. Return code 04 is the usual one, and a partitioned data set that filled its single volume is a classic case.

Other names for this code

Also written as IEC032I E37-04, E37-04, abend E37, SE37, IEC032I, E37 abend, system abend E37.

What it means

IEC032I is written when an output operation needs more space and z/OS can't find any more on the volumes the data set may use. The step ends with abend E37 unless a DCB abend exit chooses to ignore the error. IEF450I follows with ABEND=SE37.

The message gives the abend and return code, the module that found the problem, the job name, step name and DD name, the device number, the volume serial, a DADSM extend diagnostic code if one is available, and the data set name with any member.

Return code 04 means the output data set used all the space available on its volumes and no more volumes were available. That happens when too few volumes were requested. It also happens to data sets that can live on only one volume, such as a partitioned data set (PDS) or a VIO data set, when that one volume's worth is used up. A basic-format data set can't go beyond 65,535 tracks on a volume, and a PDS can't have more than 16 extents.

Return code 08 applies to a sequential data set spread over several disk volumes. It filled the current volume, and z/OS couldn't get space on the next volume in the list. That volume may be full, its VTOC or VTOC index may be full, or a data set with the same name may already be on it. The volume serial in the message is the last volume the data set used.

Return code 0C means an installation exit for the IGGPRE00_EXIT preprocessing exit point turned the extend request down. That is a local rule, so your storage team owns it.

Common causes

  • A PDS filled up. Every time a member is replaced, the old copy stays in the library as dead space, so a busy source or load library fills even when its member count doesn't grow.
  • A PDS reached 16 extents and can't take another one.
  • A sequential output data set needed more volumes than the JCL or data class allowed.
  • A multi-volume data set moved to its next volume and found no space there, or found an old data set with the same name (return code 08).
  • A VIO data set (a temporary data set kept in storage) grew too large.
  • An installation exit refused the extend (return code 0C).

How to find the problem

  1. In SDSF, open JESYSMSG and find IEC032I. Note the return code, the DD name, the volume serial and the data set name.
  2. Look up the data set in ISPF option 3.4 with the I line command. For a PDS, compare tracks used with tracks allocated and check the number of extents.
  3. For return code 08, check the volumes listed on the DD statement or assigned by SMS. Look at free space on the next volume, and check whether a data set with the same name is already there.
  4. For a temporary data set, check the UNIT name. If it points to VIO, the data set wasn't on real disk at all.
  5. For return code 0C, give the message to your storage administrators. They know which exit is installed and what it checks.

How to fix it

  • Compress the PDS to reclaim dead space. Use IEBCOPY with the same data set as input and output, or the Z line command in ISPF option 3.4. Take a backup first and make sure nobody else has the library open.
  • If the library is still too small after a compress, allocate a bigger one and copy the members across. Converting it to a PDSE also helps, because a PDSE reuses freed space by itself.
  • Give a sequential data set more volumes with a volume count, such as VOL=(,,,5), or ask for a data class with a larger volume count.
  • For return code 08, remove the old data set from the next volume or ask for different volumes.
  • For a temporary data set, use a UNIT name that points to real disk if it outgrows VIO.

IBM documentation

IBM documentation: IEC032I. Use the documentation for your installed release.

Report a correction to WND Software.

Questions

Why does my PDS get E37 when I only replaced members?

A PDS doesn't reuse the space of a replaced or deleted member. That space stays dead until you compress the library, so it fills up over time even if the member count stays the same.

Does a PDSE get E37?

It can still run out of space if it reaches its size limit, but it reclaims space from replaced members by itself. It doesn't need compressing.

Is E37 the same as B37?

They overlap. Both mean a data set couldn't get more space. E37 tends to point at the volume limit, and B37 at failing to get another extent. The return code in the IEC message tells you more than the abend code alone.