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.
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.
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.
12345678STATEMENT 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
| Marker | Severity | Action |
|---|---|---|
| $ | Error | Fix before production compile |
| + | Warning | Review; may become error under WARNCC or shop policy |
| Statement number | Locator | Map to source or macro expansion |
| >>> token | Pointer | Inspect token at arrow for typo or missing delimiter |
| Family | Typical cause | Typical fix |
|---|---|---|
| Undefined symbol | Field or file referenced before DEFINE/FILE | Add Library definition or qualify FILE:FIELD |
| Reserved word collision | Field named SET, EXECUTE, HIGH-VALUES | Rename with WS- prefix per migration guide |
| Block structure | Missing END-IF, END-DO, END-PROC | Add matching terminator for opened block |
| FILE layout | Field extends past LRECL; EZTC0170E size exceeded | Fix offset/length or increase record size |
| Qualification | Duplicate names; STRICTQU=E | Use FILE:FIELD or WORK:FIELD; EZTC0644E |
| Invalid context | Statement in wrong activity or PROC | Move logic to valid hook—e.g. AFTER-SCREEN not BEFORE-SCREEN |
| CONTROL/REPORT | Quantitative field on CONTROL; duplicate SEQUENCE | Use non-quantitative break keys; unique SEQUENCE fields |
| Macro | Expansion generates invalid DEFINE | Fix macro source; verify MACDDN libraries |
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.
123FILE FILEA F(80) FLD 1 1 A BAD 81 1 A * EZTC0170E — position 81 past 80-byte record
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 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.
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.
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.
1. Compiler errors prevent:
2. In listings, $ marker typically indicates:
3. EZTC0644E MORE QUALIFICATION REQUIRED relates to:
4. First error in listing should be fixed first because:
5. Reserved word DEFINE SET fails because: