Compiler warnings are the yellow flags of Easytrieve translation—compile finishes, the binder may run, operations schedule the job, and six months later a subscripted redefine blows S0C7 on one bad record. Warnings carry plus markers in listings, EZTC prefix with W severity, and messages about deprecated syntax, questionable redefines, files opened by inheritance, and fields that compile but violate 11.6 semantics. WARNCC returns condition code 4 on warning-only compiles at many sites—CI tools should not treat RC 4 as success without review. This index catalogs warning families from migration release notes, explains when to escalate warnings to errors, relates warnings to runtime risk, and outlines governance for promote-to-production gates. Read compiler errors index for hard failures; read this page for soft failures that still ship.
| Aspect | Error (E) | Warning (W) |
|---|---|---|
| Compile continues | Usually no load module | Often yes |
| Listing marker | $ | + |
| Typical RC | 8 or higher | 4 with WARNCC default |
| Risk | Immediate fix required | May be latent runtime defect |
Broadcom documents WARNCC in compiler options: compilation with warnings only may return condition code 4. You cannot override WARNCC from PARM on some releases—site table governs. Mature shops add compile scanners that fail if any + appears, or whitelist known benign codes during migration. Document accepted warnings in program header until remediated.
Differences Between Releases highlights warnings that replaced old errors or new checks that expose legacy assumptions.
| Example code | Topic | Runtime risk |
|---|---|---|
| EZTC0393W | DEFINE type differs from original | Subscript or redefine confusion |
| EZTC0715W | Subscripting not allowed on redefine length | Data exception on DISPLAY |
| EZTC0654W | File may not be open in activity | Wrong data if inheritance unintended |
| STRICTQU W | Unqualified field assumed file | Silent wrong file qualification |
123DEFINE FLDP S 4 P OCCURS 3 DEFINE FLDP-R FLDP 5 P + EZTC0715W >>> subscripting not allowed - length greater than redefined field
Warnings announce syntax scheduled for removal, function mode differences, and features that behave differently than 6.4. Deprecated constants page lists figurative misuse patterns that may warn before they error in a future release. Treat deprecation warnings as mandatory backlog items for migration programs.
MOVE or arithmetic that truncates significant digits may warn depending on options. Report masks and packed field sizes need alignment—truncation warnings predict wrong totals that balance to the penny on small samples but fail audit on millions of rows. Fix masks and field sizes; do not suppress warnings without analysis.
Code after STOP, EXIT, or unconditional GOTO may warn as unreachable. Often indicates logic error—two STOP statements, duplicated FINISH paths, or copy-paste mistake. Removing dead code improves maintenance; sometimes warns on intentionally disabled branches—comment why if you keep them.
Fix root cause rather than disabling diagnostics globally. Qualify fields explicitly to silence STRICTQU W. Split activities so file I/O matches field references. Correct redefine layouts instead of ignoring EZTC0715W. For macro-generated warnings, fix the macro template once. LIST NOMACROS may hide context—use MACROS while fixing.
Warnings are the teacher saying this homework might be wrong, but you can still turn it in. The + mark is a yellow sticker—not red like $. Smart students fix yellow stickers before the test because the same mistake might break the robot during the real run. Grown-up teams make rules: no yellow stickers allowed on important papers.
1. Compiler warnings differ from errors because:
2. WARNCC option controls:
3. EZTC0715W subscripting not allowed often warns:
4. Listing marker + typically means:
5. Should CI pipelines ignore warnings?