Optimization options are the knobs you turn down after debugging—when listings no longer need every map, when SORT messages can stay quiet, and when production jobs process millions of rows nightly without paying for STATE tracing on every statement. Broadcom separates development-friendly defaults from efficient production profiles in the options table and PARM statement. Wrong division rounding can change pennies; wrong AMODE31 can abend calling 24-bit subprograms. This page explains optimization-related compiler and execution table entries, PARM RELEASE and WORK parameters, BLOCK0 and FILE blocking strategy, removing DEBUG overhead, compile-and-go versus link-edit economics, and governance for promoting lean compile JCL. Read debugging options for what to turn off; read performance tutorials for application-level sort and buffer tuning.
Compile cost matters in shops that recompile hundreds of members per release. Reduce listing volume: LIST NOMACROS when macros are stable, avoid DEBUG maps except on final layout verification, use PARM SYNTAX during edit sessions for fast failure. Parallel compile farms still read every line—smaller listings mean faster FTP to reviewers and less DASD on SYSPRINT archives.
| Lever | Saves | Tradeoff |
|---|---|---|
| Omit DEBUG PMAP DMAP XREF | Listing pages and compile CPU | Harder layout debug without rerun |
| LIST NOMACROS | Macro expansion volume | Macro errors harder to see |
| SYNTAX check PARM | Full codegen on early edits | Not all semantic checks |
| Incremental promote | Recompiling unchanged members | Requires change control discipline |
Execution options dominate nightly CPU. Remove FLOW and TRACEIN except short diagnosis windows. Set ABEXIT NO in production to avoid snap dump overhead on handled errors. LISTFIL file statistics add I/O at end—enable only when operations needs counts. AMODE31 allocates storage above 16 MB line when safe—misconfiguration causes S0C4; verify called subprograms are 31-bit capable.
PARM documents RELEASE core-storage and WORK parameters affecting how compiler uses memory during translation. Large programs with many REPORT activities benefit from site tuning recommended in installation guides. Developers rarely change these daily—coordinate with systems programming when compile step abends on storage or spills to dataset.
DDIVRND in compiler options table chooses round versus truncate on division remainder handling. Financial applications must align with COBOL or ledger rules. Changing DDIVRND site-wide without regression test can shift accrued amounts. Document shop standard in coding standards; do not override per program without architect approval.
BLOCK0 execution option delegates block size to z/OS when FILE omits block size but has LRECL—requires OS support for system-determined block size. Override with explicit BLOCKSIZE on FILE when tuning known optimal BLKSIZE for tape or DASD. Wrong blocking increases EXCPs; right blocking reduces I/O without changing report layout. See file buffering performance page when published.
12FILE MASTER FB(150 1800) BLOCKSIZE(18000) * Versus site BLOCK0 default when BLKSIZE omitted — test EXCP counts
Compile-and-go compiles and executes in one step—excellent for developer quick tests. Production should use compile-only SYSLIN output and separate link-edit to create reusable load module in STEPLIB. Repeated nightly runs avoid recompilation tax. Version control tracks load module level with source promote. Broadcom explicitly recommends link-edit for production.
Best practices sample strips vendor dump DDs and uses ABEXIT NO with minimal DEBUG for production documentation requests. Compare test JCL that includes SORT(MSG(ALL)) and DEBUG STATE against production proc—diff proc before blaming Easytrieve for CPU spike after promote.
12345* Development PARM DEBUG(PMAP,DMAP,STATE,XREF(LONG)) ABEXIT(SNAP) SORT(MSG(ALL)) * Production-oriented PARM ABEXIT(NO)
NEWFUNC and STRICTQU E are correctness options more than speed options—but fixing qualification at compile prevents runtime wrong-file reads that cause rework loops. Optimization includes failing fast at compile instead of reconciling bad production reports. Enable function mode in test before production cutover.
Optimization is packing a lighter backpack for the long hike. Debug maps are heavy books you needed while learning the trail. Production is the real hike—you keep water and map, not every practice worksheet. If you pack wrong, you walk slower or trip; if you pack right, you finish before dinner.
1. Production programs should prefer:
2. DEBUG maps in production typically:
3. BLOCK0 option lets:
4. DDIVRND affects:
5. RELEASE core storage option relates to: