Compatibility is the practical question every maintainer asks before a compiler upgrade or before moving a job from test to production: will this program still compile, still run, and still produce the same business results? Easytrieve spans decades of product names—Classic, Plus, CA Easytrieve, Broadcom Report Generator—and each release can add reserved words, change defaults, or require new JCL. This page explains source compatibility, compile options such as PARM COMPAT, runtime and JCL alignment, macro and options-table effects, and how to test so surprises appear in a controlled test LPAR instead of on month-end night. Beginners should read this after the migration overview and use it alongside version-differences and deprecated-syntax pages when planning upgrades.
Think of compatibility in four stacked layers. Source compatibility asks whether the compiler accepts your Library and Activity code. Compile-time options compatibility asks whether PARM lines and the site options table produce the language dialect you expect—COMPAT mode versus new-function mode is the classic split. Runtime compatibility matches load modules to STEPLIB product libraries and module sizes (REGION=0M is common on modern releases). Environmental compatibility covers JCL DD names, SORT product, VSAM cluster definitions, and z/OS levels that the Easytrieve runtime calls. A failure at any layer can look like a mysterious abend or a silent one-cent difference in a financial total.
| Layer | What to verify | Typical break |
|---|---|---|
| Source | Compile clean on target; no reserved word clashes | Field named like new keyword; deprecated verb |
| Compile options | PARM COMPAT vs new-function; DEBUG removed for prod | Different rounding or report spacing |
| Runtime | STEPLIB level matches compile; load module link-edit | Module not found; S0C4 in product code |
| Environment | JCL DD, SORT, VSAM, WORKFILE, BUFNO | Missing WORKFILE DD; wrong sort order |
Broadcom recommends that shops migrating from release 6.4 begin testing in compatibility mode. PARM COMPAT (or equivalent settings in the options table) tells the compiler and runtime to preserve behaviors closer to the older product—useful when thousands of programs must compile before you can refactor each one. New-function mode enables 11.x semantics: stricter rules, new statements, and defaults that match current Language Reference documentation. Neither mode is permanently wrong; they are stages. A common migration pattern compiles the portfolio in COMPAT, fixes reserved words and deprecated syntax, runs parallel output compares, then recompiles pilot jobs without COMPAT to discover behavioral deltas documented in release notes.
12345PARM COMPAT DEBUG(PMAP) LIST FILE * Initial migration compile — review listing, then plan COMPAT removal PARM LIST FILE * Target production profile after compatibility testing passes
COMPAT does not excuse invalid syntax—it only adjusts selected semantics. Programs with fundamental statement errors still fail compile. Also note that site-wide EZOPTBL may set default compatibility flags so individual programs omit PARM COMPAT yet still run in a compatibility-oriented profile until the options table is updated.
Easytrieve source is remarkably portable compared to rewriting in COBOL—but portability is not automatic. FILE and field definitions copied from 1980s Classic programs often compile on 11.6 after macro updates. Problems cluster around reserved words (a field DEPT is fine; a field named like a new verb is not), deprecated FILE options (legacy VS keyword versus modern organization codes), and macros that embed obsolete PARM values. Central FILE macros in a shared library improve compatibility: rename a field once in the macro instead of in four hundred programs. The migration-new-reserved-words and reserved-words-by-release pages list patterns to grep across source libraries before mass compile.
Developers sometimes compile on a training LPAR and promote load modules to production. Source compatibility requires the same compiler maintenance on both—or at least a forward-compatible compile on the lower level. Promoting source members without recompiling on production's level hides runtime mismatches until execution. Best practice: compile and link-edit on the LPAR that will execute the job, using production EZOPTBL and PARM standards.
Easytrieve produces link-edited load modules for production batch and online programs. The load module embeds assumptions about runtime entry points and module layout. Executing with an older STEPLIB while the module was built with a newer compiler—or the reverse—causes unpredictable failures. Operations teams track product library concatenation order; developers track compile listings for the maintenance level string. After every compiler SMP apply, schedule a smoke compile and run of representative jobs before declaring the LPAR ready.
JCL compatibility is easy to overlook because source compiled clean. Modern Easytrieve may require WORKFILE datasets, larger REGION, additional SYSPRINT routing, or SORT work data sets that Classic jobs omitted. BUFNO and EXLGD options on FILE statements interact with BLKSIZE and device types—identical source with different JCL can change read performance or trigger capacity exits. Maintain a golden JCL proc per application and version-stamp it when migration changes DD names documented in Broadcom release notes.
12345678//EZTPROC PROC //EZTSTEP EXEC PGM=EZTPA00,REGION=0M //STEPLIB DD DSN=PROD.EZT1106.SLOAD,DISP=SHR // DD DSN=PROD.CEE.SCEERUN,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSIN DD DSN=PROD.EZT.SOURCE(PAYRPT),DISP=SHR //PAYROLL DD DSN=PROD.PAYROLL.DATA,DISP=SHR //SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(5,5))
Macros expand at compile time. A macro compiled successfully on Plus may expand into statements rejected on 11.6 if the macro author used deprecated syntax. Version macro libraries alongside compiler levels—DEV.EZT.MACROS.V11 versus legacy MACROS.OLD—and point SYSLIB or macro DDs explicitly in compile JCL. When one macro fix clears dozens of program errors, compatibility work is macro work as much as application work.
The options table stores installation defaults: listing format, diagnostic level, compatibility flags, report spacing, and features enabled site-wide. Two programmers with identical source and PARM can get different listings if they compile on LPARs with different EZOPTBL members. Migration projects should copy or regenerate the options table using Broadcom conversion utilities rather than assuming the old table works unchanged. Document which table member production compile procs reference.
Easytrieve FILE definitions describe record layout—they do not automatically change when the physical file changes. A payroll file lengthened for a new column without updating the Easytrieve FILE block reads misaligned fields silently or with garbage in numeric fields. VSAM KSDS key changes, GDG rollover, and catalog aliases break compatibility without a compile error. Include file layout verification in compatibility test plans when upstream systems change copybooks or record lengths.
Business compatibility does not always mean byte-identical reports. A new release may print dates in a different format, adjust page headers, or round packed decimals consistently with updated rules—documented in release notes. Agree with finance and operations which differences are acceptable. Legal or regulatory reports may require identical totals even if headers change; marketing summaries may tolerate header differences if detail lines match.
Imagine you have a recipe written for an old oven. Compatibility means checking whether the same recipe still works in a new oven. Sometimes you press the compatibility button so the new oven heats like the old one. Sometimes you must rename an ingredient because the new oven thinks sugar is a special command word. You also need the right pans (JCL), the right shelf (STEPLIB), and the same ingredients (input files). You bake two cakes—old oven and new oven—and compare them before serving cake to the whole school.
1. PARM COMPAT on an Easytrieve compile typically:
2. Source compatibility across Easytrieve versions is most often broken by:
3. Runtime compatibility requires matching:
4. The site options table (EZOPTBL) affects compatibility because it:
5. Parallel output comparison during compatibility testing should: