Compiler options shape how Easytrieve reads your source, how verbose the listing is, how strictly it enforces qualification and 11.6 rules, and what maps appear when you debug a layout bug at two in the morning. Installation teams load defaults into the options table—EZOPTBL—using Configuration Manager or ETOPLOAD. Application developers override selected knobs with PARM as the first statement in the program. Beginners confuse compiler options with JCL parms and with execution-only settings like FLOW trace. This overview maps categories from Broadcom Compiler Options documentation, explains PARM versus site table precedence, lists listing and syntax controls that affect error messages, and points to child pages for optimization, debugging, listings, cross-reference, and diagnostics depth.
At install, Broadcom defines compiler and execution defaults in the options table. Each compiled program inherits those values unless PARM specifies overrides. PARM must be the first source statement when used. Operations owns table changes; developers own program PARM for exceptions. Document both in runbooks when troubleshooting different behavior between test and production LPARs.
| Layer | Scope | Changed by |
|---|---|---|
| Options table (EZOPTBL) | All programs on LPAR unless overridden | Systems programming |
| PARM statement | Single program compile | Application developer |
| Listing control LIST/SKIP | Listing layout only | Developer in source body |
| JCL PARM= on EXEC | Compile step parameters if used | Operations per proc |
12345PARM ABEXIT(NO) + DEBUG(PMAP, DMAP, FLDCHK, STATE, XREF(LONG)) + FLOWSIZ(20) + LIST(FILE, PARM) + SORT(MSG(ALL))
ABEXIT controls abend dump behavior—SNAP for development, NO for production per best practices. DEBUG selects maps and checks during compile. LIST(FILE,PARM) prints file definitions and PARM summary in listing. SORT(MSG(ALL)) increases sort message detail during test runs. Each subparameter has NO-prefix negation forms documented on PARM statement reference.
| Category | Examples | Effect |
|---|---|---|
| Source scan columns | SCANCOLE | Which columns compiler reads per line |
| Syntax check symbols | WARNSYM, ERORSYM | Locator symbols in messages |
| Listing control | DMAP, PMAP, CLIST, XREF, LISTUC, LISTPRM | Maps and listing format |
| Syntax control | FLDCHK, STRICTQU, NEWFUNC | Strictness and field validation |
| Macro libraries | MACDDN, MAC#LIB, MACMOD | Where macros resolve |
| Messages | WARNCC, RUNSYM | Return codes and message IDs |
Beyond PARM DEBUG, source statements LIST ON, LIST OFF, LIST MACROS, LIST NOMACROS, NEWPAGE, SKIP n, PUSH, and POP format the physical listing. LIST OFF suppresses following source lines from listing—useful for large generated tables not worth printing. PUSH saves settings before macro expansion; POP restores after—keeps macro debug readable without changing permanent listing preferences.
STRICTQU controls unqualified field references: N silent qualify, W warn which file was used, E error EZTC0644E. NEWFUNC enables 11.6 function mode semantics including new reserved words. FLDCHK validates unavailable field references to reduce runtime program checks. Together they define how painful migration from 6.4 will be—many sites enable NEWFUNC in test LPAR first.
Broadcom recommends link-edit production execution and compile-and-go for quick tests only. Development profile often includes LIST ON MACROS, DEBUG(PMAP DMAP STATE XREF(LONG)), SORT(MSG(ALL)), and ABEXIT appropriate for dumps. Production profile strips DEBUG maps, sets ABEXIT NO, avoids FLOW trace, and uses site defaults for LISTFIL only when statistics needed. Mismatch between profiles explains works in test fails in prod when options differ—not logic change.
Compiler options are the rules for how the robot reads your homework. The school (options table) sets default rules for everyone. You can put a note at the top of your paper (PARM) asking for extra help—show my math steps (DEBUG maps) or check my spelling harder (STRICTQU). For the real test (production), use the normal rules so the robot works faster and does not print every pencil stroke.
1. PARM statement position:
2. PARM overrides:
3. Site-wide permanent options are maintained in:
4. LIST ON MACROS default helps beginners by:
5. NEWFUNC option relates to: