z/OS message

IEC070I: VSAM end-of-volume error

IEC070I means VSAM hit an error during end-of-volume processing, the step that extends a VSAM data set or moves it on to another volume. The return code at the start of the message says what went wrong, and IBM explains those codes under message IEC161I.

Other names for this code

Also written as IEC070I, IEC070I VSAM, VSAM end of volume error, IEC070I extend failed.

What it means

A VSAM data set gets more space through end-of-volume processing. When a component fills its current space, VSAM asks for a new extent on the same volume or space on another volume, then updates the catalog and the VSAM volume data set (VVDS) to record it. End-of-volume processing also runs when a read needs to move from one volume to the next. If any of that fails, VSAM writes IEC070I.

The message format is IEC070I rc[(sfi)]-ccc,jjj,sss,ddname,dev,volser,xxx,dsname,cat, the same layout as IEC161I. rc is the return code. sfi is extra information from another component, and IBM notes it appears for return codes 032 and 034 when a catalog LOCATE request failed. ccc is a problem determination code for IBM support. The rest are the job name, the step name (procedure step and calling step run together), the DD name, the device number and volume serial if they apply, the cluster name, the name of the data set being processed and the catalog name. Missing fields are left as empty commas.

IEC070I doesn't have its own list of return codes. IBM's entry for it sends you to IEC161I for the meaning of each code. For example, IEC161I return code 032 covers a catalog record that couldn't be found during end of volume, such as the volume serial or the new extents after an extend. Return code 211 covers an end-of-volume failure reported by SMS, with an SMS reason code in the sfi.

VSAM doesn't end the step with a system abend for this. The request that needed the space, usually a write, fails, and the program gets an error back. What happens next depends on how the program handles it.

Common causes

  • The data set needed another extent or volume and SMS or DADSM couldn't supply it, for example because the volumes in the storage group are full. The SMS reason code in the sfi names the cause.
  • The data set reached the most extents or volumes it is allowed to have.
  • The catalog entry couldn't be found or read while the new space was being recorded, for example because the catalog's volume was unavailable (return code 032 or 034).
  • The catalog and the VVDS on the volume are out of step, so recording the new extent failed.

How to find the problem

  1. In SDSF, find IEC070I in the job log. Note the return code, any value in brackets after it, the cluster name, the component name and the catalog name.
  2. Look up the return code under IEC161I in z/OS MVS System Messages for your release.
  3. If the sfi has an SMS reason code, look up the IGD message with that number, for example 17206 means IGD17206I. If it has a catalog return and reason code, look them up under IDC3009I.
  4. Run LISTCAT ENTRIES('PROD.PAYROLL.KSDS') ALL and check the number of extents, the secondary space amount and the volumes for the data and index components.
  5. Check the program's own messages for the write that failed. They show which record it was trying to add.

How to fix it

  • If the data set ran out of room, ask the storage team to add space to the storage group or allow more volumes, or reorganize the cluster into a bigger allocation with IDCAMS REPRO or EXPORT and IMPORT.
  • If the cluster has reached its extent limit, define it again with larger primary and secondary amounts and reload it.
  • For a catalog problem, make sure the catalog is available, then run IDCAMS VERIFY against the cluster before using it again.
  • For a catalog and VVDS mismatch, have the storage team run IDCAMS DIAGNOSE and repair whichever side is wrong.

IBM documentation

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

Report a correction to WND Software.

Questions

Is IEC070I an abend?

No. VSAM reports the failure to the program that asked for the space. The program then decides whether to stop, and many batch programs end with their own return code or user abend.

Where are the IEC070I return codes explained?

IBM explains them under message IEC161I. Look up the same return code there.

Is IEC070I the VSAM version of B37?

In practice it often is, because the most common reason for an end-of-volume failure is that the data set couldn't get more space. The return code and any SMS reason code tell you for sure.