z/OS System Resources
Started task fails during initialization
When Started task fails during initialization, 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 Started task fails during initialization. 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.
