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

DevOps & Modernization Troubleshooting


Automated restart repeats a failed workload

Automated restart repeats a failed workload means the pipeline moved the wrong bits, or moved the right bits to the wrong place. Diff what was deployed against what was intended.

What it means

  • A mainframe deploy has three artifacts that must agree: the source, the compiler options, and the load module actually in the execution library.
  • Copybooks are shared dependencies - one changed copybook silently changes every program that includes it.
  • Working in test only proves the test artifacts agree, not that production does.

Common causes

  • Stale load module: the link-edit ran against an older object instead of the fresh compile.
  • Copybook changed in one library while an older copy remains in the compile concatenation.
  • Wrong compiler options, for example a test-only option, baked into the production module.
  • Promotion package built from the wrong source version or promoted to the wrong environment.
  • Link-edit resolving a routine from an earlier library in the concatenation instead of the new one.
  • Rollback restoring the load module but leaving new configuration or a new copybook layout in place.

How to diagnose

  • Compare timestamps: source member, object, and load module - the load module must be the newest.
  • Check the compiler listing to see exactly which library each copybook resolved from.
  • Review the binder map for where each external reference resolved.
  • In CICS use CEMT INQUIRE PROGRAM to confirm the loaded module matches what was promoted, then NEWCOPY or PHASEIN.
  • Diff the test and production library concatenations member by member.

How to fix it

  • Rebuild from the correct source with production compiler options and promote the fresh load module.
  • Sync copybooks across libraries before compiling, and recompile every dependent program.
  • Fix the library concatenation order so the intended library resolves first.
  • After deploying to CICS, NEWCOPY the program and verify with CEMT INQUIRE.
  • Roll back code and configuration together, and verify both afterwards.

Example: Rebuild with a listing that proves what was used

//BLD EXEC IGYWCL,PARM.COBOL='LIST,MAP', // PARM.LKED='LIST,XREF' //COBOL.SYSIN DD DSN=PROD.SOURCE(MYPROG),DISP=SHR //COBOL.SYSLIB DD DSN=PROD.COPYLIB,DISP=SHR //LKED.SYSLMOD DD DSN=PROD.LOADLIB(MYPROG),DISP=SHR

The LIST output proves which copybook versions the compile used; the XREF shows where each external reference resolved.

Interview tip

  • Q: Production abends but the same load module works in test, and the source matches. Automated restart repeats a failed workload - what do you suspect?
  • A: If source and load module agree, the difference is in what surrounds them: the copybook used at compile time, the compiler options, or the library concatenation at runtime. I compare the production compile listing with the test one and check where the link-edit resolved each external. Most times it is a stale copybook or a concatenation order difference.

Prevention checklist

  • Build promotion packages from version-controlled source with recorded compiler options, never by hand.
  • Recompile all dependents whenever a shared copybook changes.
  • Verify CICS NEWCOPY or PHASEIN completed after every online deploy.
  • Roll back configuration together with code, and verify both.




© copyright mainframebug.com
Privacy Policy
MainframeBug Assistant