An Easytrieve report does not appear from source alone. It moves through a lifecycle: written, compiled, optionally linked, tested, promoted, scheduled, executed, reviewed, and maintained. Beginners often see only the final runtime job in the scheduler and miss the earlier phases that make that job reliable. This overview maps the full lifecycle so you know which artifact to inspect when something fails and which team owns the fix.
Lifecycle work starts in source. A developer writes or modifies FILE, JOB, IF, PRINT, REPORT, TITLE, LINE, and related statements. Source may live in a PDS member, PDSE, or an enterprise change-management repository. Good lifecycle practice keeps member names, version history, and business intent documented. A one-line title change can affect regulatory reports, so source control is not optional in mature shops.
123456789FILE INVOICE FB(180 1800) INV-NO 1 8 N INV-AMT 9 7 P 2 INV-DATE 16 8 N JOB INPUT INVOICE IF INV-AMT > 1000 PRINT HIGHVAL-RPT END-IF
At this phase, the program is just text. It has not been validated by the compiler or run against production volumes. Peer review, unit test planning, and data layout confirmation belong here before promotion discussions begin.
Compilation checks syntax and semantics, builds symbol tables, and generates object code. The output is documented on SYSPRINT. Errors at this phase are source or environment problems: undefined fields, bad macros, missing options tables, or invalid report references. A clean compile is the gate to later testing. See the dedicated compilation page for message reading and PARM behavior.
Object code from SYSLIN is not directly executable in the usual production pattern. A binder step such as IEWL creates a load module and stores it in an application load library. The module name must match the PGM= value used by runtime JCL. Linking resolves references to Easytrieve runtime services and produces the executable artifact operations will run repeatedly.
Testing validates business results, not just successful return codes. Compare totals, record counts, key subtotals, and sample detail lines against a trusted baseline. Test with empty files, large files, boundary dates, and exception records. A program can complete with RC=0 and still be wrong if filters, masks, or control breaks are incorrect.
| Evidence | Why it matters |
|---|---|
| Input record count | Confirms the job read the expected file volume |
| Selected record count | Shows whether IF logic filtered as intended |
| Grand totals | Supports financial or audit validation |
| Sample detail lines | Helps reviewers spot layout or field errors quickly |
| SYSPRINT messages | Documents warnings that may be acceptable in test but not production |
Promotion moves approved artifacts into production-ready locations: source libraries, load libraries, JCL procedures, scheduler definitions, and operations run books. Mature shops use change tickets, approval workflows, and backout plans. Promotion is more than copying a load module. It includes verifying STEPLIB, DD names, dataset names, security, and report distribution paths in the production environment.
Scheduled execution is the visible part of the lifecycle. The scheduler submits JCL, z/OS allocates DD statements, the load module runs, reports are routed, and return codes are recorded. Operations monitors late jobs, abends, reruns, and downstream dependencies. A payroll extract that finishes at 02:17 instead of 01:45 may still be successful but can affect later steps if thresholds are tight.
Reports change when regulations, fee schedules, product codes, or file layouts change. Maintenance may be a small source edit or a multi-step migration. Retirement happens when a report is replaced by another system or consolidated into a different job stream. Lifecycle documentation should record why a program was retired and what verified it before decommissioning.
| Pattern | Best for | Main risk |
|---|---|---|
| Compile-and-go | Developer tests and urgent ad hoc extracts | Less control over which executable ran and harder audit replay |
| Compile, link, promote, execute | Production and regulated reporting | More moving parts, but stronger change control and repeatability |
Lifecycle thinking prevents blame confusion. A compile error is usually a developer source or macro issue. A link error may involve build support or missing runtime libraries. A DD allocation failure may involve operations or storage. A wrong total may be source logic, bad input data, or an upstream extract problem. Naming the phase narrows the search immediately.
Making an Easytrieve report is like baking a cake for the school fair. First you write the recipe. Then someone checks the recipe makes sense. Then the cake is baked and put in the right box. Then someone tastes it before the fair. Then the fair sells the cake every day at the same table. If the cake changes, you update the recipe and test again before selling the new version.
1. The Easytrieve program lifecycle usually begins with:
2. Compilation converts:
3. Linking creates:
4. Execution is the phase when:
5. A mature lifecycle includes: