When an Easytrieve batch job ends abnormally, you need a disciplined way to read the evidence. Beginners often open the wrong dataset first: a JES SYSOUT dump, a SNAP dump data set, the compile listing, or the business report DD. Each artifact answers a different question. This tutorial teaches dump analysis in the Easytrieve sense—reading Error Analysis output, optional ABEXIT dumps, DEBUG trace information, and SYSPRINT messages—while clearly separating those product diagnostics from z/OS operating-system abend dumps. You will learn what to enable during test, what to expect on SYSPRINT, how statement numbers tie back to source, and when to escalate to systems support. The guidance stays conservative: dump formats, dataset names, and tool availability depend on your Easytrieve release, JCL standards, and site security rules.
Mainframe troubleshooting vocabulary overloads the word dump. In Easytrieve work, three ideas often appear together but must stay separate in your notebook. First, Easytrieve runtime diagnostics on SYSPRINT explain what the product thought went wrong—file status, data exceptions, report writer errors, and messages tied to your source. Second, when ABEXIT is coded on the PARM statement, Easytrieve can emit an Error Analysis report and optionally request a dump through ABEXIT SNAP. Third, z/OS may also capture an operating-system dump when a severe error occurs. That system dump is valuable to systems programming but is not a substitute for reading Easytrieve's own report.
Treat Easytrieve diagnostics as the application transcript. Treat z/OS dumps as the machine room recording. A payroll programmer fixing invalid packed decimal data should live in SYSPRINT, the listing, and the Error Analysis report long before attempting low-level storage analysis. Conversely, repeated S0C4 failures with no clear Easytrieve message may need systems help even after you read SYSPRINT carefully.
| Artifact | Who produces it | Typical developer use |
|---|---|---|
| SYSPRINT messages | Easytrieve runtime and JES | First read for file errors, counts, DISPLAY traces, return-code context |
| Error Analysis report | Easytrieve ABEXIT processing | Structured abend summary with program identity and error description |
| ABEXIT SNAP dump | Easytrieve-requested dump (site-dependent routing) | Deep inspection when report and listing are insufficient; often escalated |
| z/OS abend / system dump | Operating system | Systems programming analysis of address space and MVS control blocks |
Easytrieve does not silently produce an Error Analysis report on every failure. Broadcom ties that report to ABEXIT on the PARM statement used at compile or according to your installation's options table. ABEXIT SNAP asks for a dump in addition to the report. ABEXIT NOSNAP asks for the report without a dump. Test JCL commonly carries explicit DEBUG options; production may inherit defaults that are lighter for performance. Always compare test and production PARM behavior before copying a failing job's diagnostics expectations into a high-volume schedule.
123456789PARM LINK(PAYAUD) ABEXIT(SNAP) DEBUG(STATE,FLOW) FLOWSIZ(20) FILE PERSNL FB(150 1800) EMPNO 5 5 N GROSS 40 7 P 2 JOB INPUT PERSNL IF GROSS > LIMIT DISPLAY 'OVER LIMIT' EMPNO GROSS END-IF TOTAL = TOTAL + GROSS
In this pattern, ABEXIT SNAP enables Error Analysis and a dump request if the step terminates abnormally. DEBUG STATE records the current statement number at failure time. DEBUG FLOW keeps a rolling history of executed statement numbers; FLOWSIZ controls how many entries are retained. These options add runtime cost, which is acceptable in unit test but may be disabled after diagnosis is complete.
When ABEXIT processing runs, the Error Analysis report is the structured centerpiece of Easytrieve dump analysis. It identifies the program name, describes the error that caused termination, and may reference statement numbers or flow information when DEBUG options were active. Read it immediately after checking whether the step abended and before editing source. Copy the program name, error text, and any statement numbers into your incident notes so comparisons across reruns stay factual.
Correlate statement numbers with the compile listing, not with your unexpanded source member line count if macros are involved. The listing shows the statement numbers Easytrieve executed. Search the listing for the reported number, then read the surrounding logic for file operations, arithmetic on packed fields, or report procedures that might fail only on certain input keys.
When DEBUG FLOW is active, abend processing may list recently executed statement numbers, sometimes associated with message EZABX016 in Broadcom documentation. The newest entries appear first, giving you a short stack of where execution traveled before failure. FLOW is not a step-by-step trace of every field value; it is a map of statement numbers. Pair FLOW output with DISPLAY traces you may have coded to see both where execution went and what data looked like at key branches.
Even without ABEXIT, SYSPRINT is the default transcript for runtime behavior. File open messages, record counts, report writer notices, sort diagnostics, and DISPLAY output appear there when JCL routes SYSPRINT to a spool class or data set. Many failures that feel like dump problems are visible as plain text on SYSPRINT: missing DD names, invalid DCB attributes, empty files treated as errors, or completion codes that do not match business expectations.
123456//AUDRUN EXEC PGM=PAYAUD //STEPLIB DD DSN=DEV.APP.LOADLIB,DISP=SHR // DD DSN=DEV.EZT.CBAALOAD,DISP=SHR //PERSNL DD DSN=DEV.HR.PERSONNEL.TEST,DISP=SHR //SYSPRINT DD SYSOUT=* //AUDRPT DD SYSOUT=*
SYSPRINT DD SYSOUT=* routes diagnostics to the default output class. Keep diagnostic SYSOUT separate from business report DDs when possible so abend evidence is not buried inside a thousand-page report. If your shop purges spool quickly, capture SYSPRINT or the Error Analysis section before rerunning the job.
ABEXIT SNAP requests a dump in addition to the Error Analysis report. Where that dump lands is not universal. Some sites write dump data sets referenced in the JCL, others rely on spool, vendor tools, or automated fault-management products. Dataset naming, authorization, and retention are site policies. This tutorial does not prescribe a single DD name or data set pattern because those details vary. Your run book should document the expected dump destination for Easytrieve test jobs and who may open it.
If you receive a dump data set you cannot open with familiar ISPF tools, stop and escalate. Raw dumps may require IPCS, vendor analyzers, or a support contract. Attempting to guess storage offsets without training risks incorrect conclusions. The Error Analysis report and compile listing solve most application defects without raw dump interpretation.
Severe errors—protection exceptions, some module resolution failures, region shortages—may produce z/OS messages and system dumps alongside Easytrieve output. JES messages and the job log show abend codes such as S0C7 or S0C4. Those codes describe the machine-level exception, while Easytrieve messages describe how the product surfaced the problem. For S0C7 in a packed decimal add, you may see both a data exception and an Easytrieve diagnostic referencing invalid numeric data. Record both the z/OS abend code and the Easytrieve text.
Do not conflate opening a system dump with completing Easytrieve dump analysis. Application developers typically finish their work once they identify the offending statement and input record pattern. Systems programmers use system dumps to investigate loader problems, authorized program facility issues, or repeated failures across unrelated applications. Know your site boundary.
Before an abend occurs, DISPLAY statements are often the fastest way to capture intermediate values on SYSPRINT. After an abend, any DISPLAY output that printed before failure remains in the spool transcript. DISPLAY HEX helps inspect packed and binary fields when readable DISPLAY lines show garbage characters. That hexadecimal view is a field-level inspection technique, not the same as an ABEXIT SNAP storage dump. Use DISPLAY for targeted tracing; use ABEXIT and Error Analysis when you need product-level failure documentation.
1234IF INVALID-FLAG = 'Y' DISPLAY 'BAD RECORD' EMPNO DISPLAY HEX GROSS END-IF
This pattern labels the logical problem, prints a readable key, and dumps the suspect packed field in hexadecimal. If the job later abends, SYSPRINT may contain these lines immediately above the Error Analysis report, giving you a before-and-after story without opening a raw dump.
Mature shops document which DEBUG and ABEXIT settings are allowed in each environment. Development and QA often run ABEXIT SNAP, DEBUG STATE, and limited FLOW sizes. Production frequently relies on ABEXIT NOSNAP or site defaults to avoid dump volume and CPU overhead. When promoting a program, verify that production JCL does not accidentally inherit test PARM options from a copied proc. Change-control reviewers should treat diagnostic PARM as sensitive configuration, not as comment text.
Imagine your Easytrieve program is a toy train on a track. When the train crashes, three adults might write notes. The train driver writes what the train was doing—that is SYSPRINT and DISPLAY messages. The Easytrieve safety officer writes a short report about which part broke—that is the Error Analysis report. The building manager might also take a big photograph of the whole room—that is a z/OS system dump. You fix the train by reading the driver's notes and the safety report first. You ask the building manager for help only when the crash is bigger than a broken wheel on one car.
ABEXIT NOSNAP requests the Error Analysis report without asking for a storage dump, which is often enough when SYSPRINT and the listing identify the defect. DEBUG STATE saves the statement number executing at failure time so abend messages can point to a specific line in the compile listing. Together they give structured failure text plus a statement anchor without the storage and routing overhead of SNAP.
Start with JESJCL and step completion codes to confirm which step failed and whether allocation succeeded. Read SYSPRINT next for runtime messages and any DISPLAY traces. Open the Error Analysis report if present. Finally, use the compile listing from the same build to map statement numbers to source and field definitions. Only then consider ABEXIT SNAP dump data sets or z/OS dumps if policy and skill level allow.
A missing DD statement for an input file produces allocation or open errors on SYSPRINT and in JES messages before meaningful record processing. The fix is JCL correction, not source changes. No dump interpretation is required because the failure is environmental.
DEBUG FLOW shows which statement numbers executed recently, helping you narrow which section of logic was active. DISPLAY HEX shows the actual bytes of a field such as a packed decimal amount, helping you see corrupt data. FLOW answers where am I in the program; HEX answers what do the bytes look like for this field.
Example escalation: Job PAYTEST on job ID JOB12345 abended in step AUDRUN with S0C7. SYSPRINT Error Analysis references statement 42; listing shows an add on packed field GROSS. ABEXIT SNAP produced dump data set DEV.PAY.DUMP.G00V001 which I cannot analyze with standard ISPF browse. Please advise whether this dump should be opened with IPCS or forwarded to vendor support.
Dump analysis in the Easytrieve context means reading product diagnostics after an abnormal termination: the Error Analysis report, optional ABEXIT dump output, DEBUG FLOW or STATE information, and any DISPLAY traces on SYSPRINT. The goal is to find which statement or data condition failed, not to decode every byte of a z/OS system dump unless your site routes that work to systems programming.
The Error Analysis report is generated by Easytrieve when ABEXIT is specified. It identifies the program, describes the error, and may include statement-flow information. A z/OS abend dump is an operating-system diagnostic capture of address spaces, control blocks, and storage at failure time. Both may exist for one failure, but they answer different questions and are opened with different tools.
You still receive runtime messages on SYSPRINT without ABEXIT, and DISPLAY statements you coded remain visible. ABEXIT adds the structured Error Analysis report and optional dump request. Many test jobs use ABEXIT SNAP; production jobs often use lighter settings per site standards.
Broadcom documents EZABX016 as showing recently executed statement numbers, newest first, when flow tracing was active. It helps correlate an abend with source statement numbers in the compile listing. Exact message text and availability can vary by product maintenance level.
Application developers usually start with SYSPRINT, the compile listing, and the Error Analysis report. If ABEXIT SNAP produced a dump dataset or spool data set, your site may require a systems programmer or a designated support team to interpret storage dumps. Follow local run-book escalation rather than assuming every developer opens raw dumps.
1. The primary Easytrieve-produced diagnostic for an abnormal termination is usually:
2. ABEXIT SNAP compared with ABEXIT NOSNAP means:
3. An z/OS system dump (for example from a hardware or MVS failure) is:
4. DEBUG FLOW on the PARM statement helps dump analysis by:
5. The first place to read after an Easytrieve execute step fails is usually: