Simple Mainframe Universe
Home Tutorials Interview Q&A Quiz Mainframe Memes Contact us About us

z/OS System Resources


Volume is full or unavailable

When Volume is full or unavailable, think resources first: something is held, full, miscataloged, or different between systems. IEC and IGD messages name the exact failing resource.

What it means

  • Most system-level failures are resource failures — an enqueue held by another job, a full volume, or a stale catalog entry.
  • IEC messages (like IEC141I) carry a return code after the dash that names the precise cause — read the full text.
  • A program that fails on one LPAR but works on another is almost always an environment difference, not a code bug.

Common causes

  • Dataset enqueue: another job or TSO user holds DISP=OLD on the data set.
  • Catalog entry points to the wrong volume, or is stale after a restore.
  • SMS storage, management, or data class differs between test and production.
  • Volume full: no space left for new allocations (IEC070I or IGD allocation messages).
  • Started-task JCL missing from the PROCLIB concatenation, or a required DD deleted.
  • LNKLST or APF differences between LPARs load a different (older) module.

How to diagnose

  • Run D GRS,ENQ (or check the SDSF ENC panel) to see who holds the enqueue on the data set.
  • LISTCAT ENT('hlq.dsn') ALL — verify volumes and catalog status, then compare with the JCL.
  • Read the full IEC message text: the code after the dash (for example in IEC141I 013-20) names the cause.
  • Use D SMS,STORGRP and D U,VOL(volser) for SMS class and volume-space problems.
  • For one-LPAR-only failures, compare D PROG,APF output and the LNKLST data sets between the two systems.
  • For started tasks, check the MSTR/JESMSGLG output and the PROCLIB member the task started from.

How to fix it

  • Wait for — or cancel — the holder of the enqueue; never force it on a production data set without approval.
  • Correct the catalog entry with IDCAMS, or fix the volume reference in the JCL.
  • Align SMS classes across environments, or override with an explicit STORCLAS in the JCL.
  • Place the started-task PROCLIB member in a library in the active concatenation, then restart the task.

Example: System resource checks

D GRS,ENQ -- who holds the data set? LISTCAT ENT('APP.PROD.FILE') ALL D U,VOL(PROD01) -- volume space D PROG,APF -- APF-authorized libraries //STEP1 EXEC PGM=IEFBR14 //DD1 DD DSN=APP.PROD.FILE,DISP=SHR

DISP=SHR lets many readers share; DISP=OLD serializes access and causes waits.

Interview tip

  • Q: Your job waits 30 minutes on a data set every morning, like Volume is full or unavailable. How do you find out why?
  • A: I run D GRS,ENQ (or check SDSF ENC) to see which job or user holds the enqueue and with what disposition. If the nightly backup holds DISP=OLD, the fix is scheduling — move my job after the backup window, or change my step to DISP=SHR if it only reads.

Prevention checklist

  • Use DISP=SHR for read-only steps; reserve DISP=OLD for true updates.
  • Keep SMS classes identical across test and production.
  • Document LNKLST and APF differences between LPARs in the environment runbook.




© copyright mainframebug.com
Privacy Policy
MainframeBug Assistant