Before the trading floor opens, before branches unlock doors, operations already scanned dozens of overnight listings: cash position, failed wires, overdrawn accounts, policy exceptions, inventory below reorder point. Daily report projects are the rhythm of mainframe batch—same programs every business morning, business date in the title, dependency on last night's close extract, finish by 06:30 or someone escalates. Easytrieve owns a large share because REPORT activities, CONTROL subtotals, and exception filtering are expressible in few lines compared to COBOL report writers. This tutorial describes daily portfolio structure, business-date parameterization, multi-report morning packages, zero-record handling, exception versus full-detail dailies, scheduling and SLA, archival expectations, and pairing with reusable report framework macros your shop already standardized. Beginners learning real projects should compare this page to monthly and year-end tutorials—same REPORT syntax, different aggregation window and audience.
| Report | Audience | Content |
|---|---|---|
| Activity summary | Operations manager | Counts and totals by product |
| Exception list | Analysts | Rows failing policy rules |
| Position listing | Treasury | End-of-day balances |
| Audit trail | Compliance | High-value transactions |
123456INIT-DAILY. PROC GET CONTROL-FILE MOVE CTL-BUS-DATE TO RPT-DATE MOVE CTL-BUS-DATE TO SELECT-DATE MOVE 'DAILY ACTIVITY' TO RPT-TITLE END-PROC
CONTROL-FILE from close process carries authoritative business date—do not rely on SYSDATE alone when processing after midnight spans two calendar days. SELECT-DATE filters JOB INPUT records IF TRAN-DATE EQ SELECT-DATE. Holiday calendar in TABLE skips runs or sets prior business date when INIT detects closed market flag.
12345678910111213JOB INPUT DAILY-EXTRACT IF TRAN-DATE NE SELECT-DATE EXIT END-IF IF AMT GT LIMIT-AMT * drive REPORT detail via accumulated flag or WRITE work file END-IF END-JOB REPORT DAILY-EXCEPTIONS JOB INPUT EXCEPTION-WORK LINE ACCT TRAN-AMT REASON-CODE END-REPORT
Alternative: single pass writes exception rows to EXCEPTION-WORK then REPORT reads work—separates filter logic from layout. Exception dailies must explain REASON-CODE with TABLE decode in HEADING legend.
No exceptions is good news—still print TITLE, HEADING, FOOTING with zero detail and DISPLAY EXCEPTION-COUNT 0 in TERM. Operations distinguishes job failure from genuinely empty exception set. Optional LINE when READ-COUNT zero: No exceptions for business date. Without that line, help desk receives false incident tickets.
1234567891011121314PERFORM INIT-DAILY PERFORM SETUP-ACTIVITY-RPT REPORT DAILY-ACTIVITY ... END-REPORT PERFORM SETUP-EXCEPTION-RPT REPORT DAILY-EXCEPTIONS ... END-REPORT PERFORM TERM-DAILY STOP
SETUP-xxx PROCs move distinct RPT-TITLE and input file DD names if reports read different extracts. Shared STD-REPORT-HEADING macro keeps corporate banner identical across morning package.
Daily batch reports complement online screens—not replace. Treasury may see intraday screen but signs daily listing as official record. Design dailies for reproducibility: same business date rerun produces identical totals. Real-time feeds tolerate eventual consistency; dailies must foot to general ledger.
Every morning the teacher posts yesterday's gold-star list and a short note about problems to fix. Daily reports are those lists for grown-up work—what happened yesterday, what needs attention today. The date on the paper must say yesterday's school day, not today's clock, or everyone looks at the wrong homework.
1. Daily reports typically use:
2. Zero-record daily report should:
3. Daily exception reports list:
4. Multiple daily reports in one JOB:
5. Daily JCL often schedules: