Easytrieve Optimization Compiler Options

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.

Progress0 of 0 lessons

Optimize the Compile Step

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.

Compile-step optimization levers
LeverSavesTradeoff
Omit DEBUG PMAP DMAP XREFListing pages and compile CPUHarder layout debug without rerun
LIST NOMACROSMacro expansion volumeMacro errors harder to see
SYNTAX check PARMFull codegen on early editsNot all semantic checks
Incremental promoteRecompiling unchanged membersRequires change control discipline

Optimize the Run Step

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 RELEASE and WORK Storage

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 Division Behavior

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 and FILE Blocking

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.

text
1
2
FILE MASTER FB(150 1800) BLOCKSIZE(18000) * Versus site BLOCK0 default when BLKSIZE omitted — test EXCP counts

Link-Edit Versus Compile-and-Go

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.

Removing Debug Tax from Production JCL

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.

text
1
2
3
4
5
* Development PARM DEBUG(PMAP,DMAP,STATE,XREF(LONG)) ABEXIT(SNAP) SORT(MSG(ALL)) * Production-oriented PARM ABEXIT(NO)

NEWFUNC and Strictness Versus Risk

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 Checklist Before Promote

  1. Remove DEBUG maps and FLOW trace from PARM.
  2. Confirm ABEXIT NO for production except agreed dump windows.
  3. Verify link-edit load module in correct STEPLIB.
  4. Review FILE blocking and BLOCK0 suitability.
  5. Confirm DDIVRND matches finance standards.
  6. Run CPU comparison on representative data volume.
  7. Archive lean PARM in source—not only in JCL override.

Common Optimization Mistakes

  • Shipping DEBUG STATE to nightly batch.
  • Compile-and-go in production scheduler.
  • Changing DDIVRND without regression suite.
  • Assuming default blocking is optimal for all files.
  • AMODE31 without verifying called modules.

Explain It Like I'm Five

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.

Exercises

  1. Write development versus production PARM pair.
  2. Explain link-edit benefit in three sentences.
  3. List two execution options that add runtime overhead.
  4. Describe when BLOCK0 helps versus explicit BLOCKSIZE.
  5. Draft promote checklist from this page for your team.

Quiz

Test Your Knowledge

1. Production programs should prefer:

  • Link-edit load module over compile-and-go
  • Compile-and-go only
  • No compile step
  • MACRO-only source

2. DEBUG maps in production typically:

  • Increase CPU and listing I/O overhead
  • Always reduce CPU
  • Disable SORT
  • Remove FILE statements

3. BLOCK0 option lets:

  • OS determine block size when not coded on FILE
  • Delete blocks
  • Disable I/O
  • Uppercase source

4. DDIVRND affects:

  • Division remainder rounding versus truncation
  • Date format
  • TITLE masks
  • PF keys

5. RELEASE core storage option relates to:

  • Returning storage after compile phases
  • Deleting datasets
  • JCL CLASS
  • Screen ROW count
Published
Read time13 min
AuthorMainframeMaster
Reviewed by MainframeMaster teamVerified: Broadcom Easytrieve 11.6 Compiler Options, Execution Options, Using Best PracticesSources: Broadcom Easytrieve 11.6 Compiler Options, Execution Options, PARM Statement, Using Best PracticesApplies to: Easytrieve optimization compiler and execution options