Easytrieve Compiler Errors Index

Compiler errors stop your Easytrieve program before it can run. The translator rejects source that violates language rules—an IF without END-IF, a field used but never DEFINE, a FILE layout that extends past record length, or a reserved word used as a field name after 11.6 migration. Messages appear in the compile listing with statement numbers, severity markers, and codes such as EZTC0170E or EZTC0644E. Beginners often fix the last error in a fifty-line burst when the first missing period caused the rest. This index teaches how Broadcom structures compile diagnostics, the major error families you will see in production shops, how to read listing markers, workflow from first error to clean compile, and how compiler options like STRICTQU change which messages appear. Pair with compiler listings and compilation tutorials when you need listing layout detail, not just message text.

Progress0 of 0 lessons

When Compiler Errors Occur

Errors fire during the compile step—EZTPA00 or equivalent—when the compiler parses Library, activities, REPORT blocks, SCREEN declarations, and embedded macros. No load module is produced for production link-edit until errors are cleared. Some sites run PARM SYNTAX for fast checks during edit; full COMPILE still enforces complete semantic rules. Condition code 8 or higher on the compile step usually means at least one error; WARNCC controls whether warnings alone return RC 4.

Message Code Structure

Broadcom Report Generator 11.6 uses EZTC prefix for many compiler messages, severity letter E for error and W for warning, four-digit sequence, and English text. Listings embed messages after the source line with statement number. Macro expansion renumbers statements—error at 000428 may point to generated text from a macro call at 000120 in your member. Enable LIST ON MACROS during diagnosis or use macro listing options.

text
1
2
3
4
5
6
7
8
STATEMENT NUMBER 000087 IF REGION-CODE = 'N' PERFORM PROCESS-NORTH $ EZTC0402E >>> END-IF expected before JOB STATEMENT NUMBER 000042 PRINT DETAIL-RPT NET-PAY $ EZTC0511E >>> FIELD NET-PAY NOT DEFINED

Listing Markers

Compile listing diagnostic markers
MarkerSeverityAction
$ErrorFix before production compile
+WarningReview; may become error under WARNCC or shop policy
Statement numberLocatorMap to source or macro expansion
>>> tokenPointerInspect token at arrow for typo or missing delimiter

Major Compiler Error Families

Error themes and typical fixes
FamilyTypical causeTypical fix
Undefined symbolField or file referenced before DEFINE/FILEAdd Library definition or qualify FILE:FIELD
Reserved word collisionField named SET, EXECUTE, HIGH-VALUESRename with WS- prefix per migration guide
Block structureMissing END-IF, END-DO, END-PROCAdd matching terminator for opened block
FILE layoutField extends past LRECL; EZTC0170E size exceededFix offset/length or increase record size
QualificationDuplicate names; STRICTQU=EUse FILE:FIELD or WORK:FIELD; EZTC0644E
Invalid contextStatement in wrong activity or PROCMove logic to valid hook—e.g. AFTER-SCREEN not BEFORE-SCREEN
CONTROL/REPORTQuantitative field on CONTROL; duplicate SEQUENCEUse non-quantitative break keys; unique SEQUENCE fields
MacroExpansion generates invalid DEFINEFix macro source; verify MACDDN libraries

Example: File Size Exceeded (EZTC0170E)

Release 11.6 validates that FILE field definitions fit within declared record length. A field starting at column 81 in an 80-byte file triggers EZTC0170E indicating FILE size exceeded. Beginners copying COBOL layouts with 1-based positions miscount by one. Fix by shortening the field, moving it earlier, or increasing FB LRECL on FILE statement to match physical dataset.

text
1
2
3
FILE FILEA F(80) FLD 1 1 A BAD 81 1 A * EZTC0170E — position 81 past 80-byte record

Example: Qualification (EZTC0644E)

When STRICTQU option is E in the options table or PARM, unqualified references to fields that exist in multiple files fail compile. The compiler will not guess FILEA versus FILEB. Qualify every ambiguous reference or rename fields for uniqueness. W mode warns which file was assumed; N mode silently picks per compiler rules—risky for maintenance.

Macro and COPYBOOK Errors

Macro libraries searched via MACDDN and site options expand before semantic analysis. Errors inside expansion show statement numbers in generated text. If your member looks clean but compile fails, search listing for MACRO expansion headers. COPYBOOK field offsets wrong produce subtle errors at compile or runtime—DMAP listing validates positions. POP and PUSH listing settings help compare macro-on versus macro-off listings.

11.6 Migration Compile Surprises

  • New reserved words break innocent field names—grep migration list before function mode.
  • Duplicate SEQUENCE field names now error where 6.4 allowed duplicates.
  • STRICTQU and NEWFUNC options change diagnostic strictness—retest all programs.
  • Redefine OCCURS warnings (EZTC0715W) may predict runtime data exceptions.
  • Inherited file warnings (EZTC0654W) when DISPLAY references file without I/O in activity.

Triage Workflow

  1. Confirm failure is compile step RC, not link or run.
  2. Open listing; find first $ error by statement number order.
  3. Classify family: DEFINE, block, reserved, FILE, context, macro.
  4. Apply minimal fix at root line; save member.
  5. Recompile; repeat until zero errors.
  6. Review + warnings before promoting; enable DEBUG DMAP on final test compile if layout changed.
  7. Archive message text in change ticket for auditors.

Compiler Options That Affect Errors

STRICTQU controls qualification errors versus warnings. NEWFUNC enables 11.6 function mode rules including reserved words. FLDCHK on DEBUG validates field references at compile time for some classes of runtime data exceptions. SCANCOLE defines columns scanned—code past column 72 may be ignored as comment on some settings. See compiler options overview for PARM overrides versus EZOPTBL site defaults.

Common Compiler Error Mistakes

  • Fixing errors bottom-up instead of first-error-first.
  • Ignoring macro expansion statement numbers.
  • Recompiling without saving the member that was edited.
  • Assuming runtime garbage is compile-clean—stale load module.
  • Disabling listings to save paper while debugging syntax.

Explain It Like I'm Five

Compiler errors are the robot teacher marking your homework before you present it. A missing END-IF is like forgetting to close a parentheses—the teacher stops and points with a red mark ($). Fix the first red mark; often the other marks were just because the robot got confused later. The message code is the teacher's shorthand so you can look up the rule in the big rule book.

Exercises

  1. Write a three-line IF missing END-IF and predict EZTC-style error pattern.
  2. List five reserved words that break DEFINE if used as field names.
  3. Explain STRICTQU E versus W in one paragraph each.
  4. Map a sample error line to DEFINE fix for undefined NET-PAY.
  5. Describe when to enable LIST ON MACROS during compile diagnosis.

Quiz

Test Your Knowledge

1. Compiler errors prevent:

  • Producing a valid load module until fixed
  • JCL from running
  • ISPF from opening
  • VSAM from existing

2. In listings, $ marker typically indicates:

  • Critical error near the token
  • Successful compile
  • Macro name
  • Job card

3. EZTC0644E MORE QUALIFICATION REQUIRED relates to:

  • STRICTQU option requiring field qualification
  • Missing STOP
  • Wrong JCL CLASS
  • Tape mount

4. First error in listing should be fixed first because:

  • Later messages are often cascades
  • Compiler ignores later errors
  • JCL stops at line 2
  • Only first error is legal

5. Reserved word DEFINE SET fails because:

  • SET is reserved in 11.6 function mode
  • SET is illegal in JOB
  • SET is JCL only
  • SET requires SQL
Published
Read time14 min
AuthorMainframeMaster
Reviewed by MainframeMaster teamVerified: Broadcom Easytrieve 11.6 compile listings, STRICTQU, migration release notesSources: Broadcom Easytrieve 11.6 Controlling Compilation, Compiler Options, Differences Between ReleasesApplies to: Easytrieve compiler error messages and EZTC codes