Easytrieve batch jobs are I/O engines: sequential scans of payroll masters, VSAM updates to deduction files, sort work data sets spilling to disk, and SYSPRINT streams. When elapsed time is high but CPU is moderate, buffer counts, device placement, and access patterns deserve attention before rewriting business logic. Broadcom environmental options and decades of field tuning articles converge on BUFNO for QSAM files, VSAM AMP buffers, spreading datasets across volumes, and choosing keyed access over full-file reads. This tutorial explains each technique for beginners maintaining classic z/OS batch jobs.
Job logs show CPU time and often EXCP counts. High EXCP with high wait suggests buffer underrun or device contention. High CPU with moderate EXCP points to sort or formatting instead. SMF type 30 records help operations quantify wait. Bring evidence to tuning sessions—avoid raising BUFNO globally without data.
The BUFNO site option sets default sequential buffers; FILE BUFNO overrides per file; JCL DCB BUFNO can override at allocation time. More buffers let Easytrieve read ahead, reducing wait on large sequential GET loops. Each buffer consumes memory—balance against REGION and VFM. VSAM files use different buffer mechanisms; do not assume FILE BUFNO helps indexed GET the same way.
1234FILE TRANS FB(200 20000) BUFNO=10 %TRANS JOB INPUT TRANS PRINT DAILY
12//TRANSIN DD DSN=FIN.TRANS.DAILY,DISP=SHR, // DCB=(BUFNO=10,BLKSIZE=20000,LRECL=200,RECFM=FB)
For KSDS and ESDS files, buffer pools are defined in VSAM and referenced through JCL AMP parameters. Random READ patterns need different buffer counts than sequential passes. Coordinate with storage administrators when changing STRNO or buffer numbers—VSAM tuning affects other jobs sharing the cluster.
When JOB activities read three large files simultaneously, placing all three on one volume creates an arm contention bottleneck. Spread input, output, and sort work across volumes or use modern storage groups that stripe automatically—verify with your site standards. Sort work DDs deserve fast work volumes with space for peaks.
| Control | Applies to | Goal |
|---|---|---|
| FILE BUFNO | Sequential QSAM | More read-ahead buffers |
| JCL AMP | VSAM | Match buffers to access pattern |
| Volume spread | Multi-file jobs | Reduce arm wait |
| Keyed READ | Large KSDS subsets | Fewer physical reads |
| EZTVFM VIO | VFM overflow | Faster overflow path |
Sequential GET is natural for Easytrieve JOB input but wrong for “fetch ten accounts from a million-account KSDS.” Use READ with keys or driver files listing keys. For ETL-style jobs, presort sequential extracts once rather than random VSAM hits repeated millions of times unless caching design proves cheaper in test.
Tape archives using Easytrieve still appear in insurance and tax shops. Release notes document LBI for tape to maximize block sizes supported by hardware. Match FILE DCB attributes and JCL BLKSIZE with device capabilities; small blocks waste tape passes and increase mount time.
Overflow from VFM uses EZTVFM DD space. Allocating on VIO can reduce elapsed time compared with physical packs for temporary overflow, but virtual storage pressure is a site concern. Operations set VFMDEV and related options in the environmental options table—developers request changes through change control rather than hardcoding assumptions.
Modern releases allow block size zero on FILE or JCL DCB to delegate block sizing. Useful when storage groups manage optimal block sizes dynamically. Test with allocation utilities on your LPAR before production adoption.
I/O is fetching books from the library shelf. BUFNO is carrying several books at once so you make fewer trips. Putting different homework folders on different shelves stops everyone from waiting on one librarian. Reading only the pages you need beats copying the entire encyclopedia every time.
1. BUFNO on the FILE statement affects:
2. Placing heavily used input files on different volumes helps reduce:
3. Reading a few records from a large file should use:
4. UNIT=VIO on EZTVFM compared with UNIT=SYSDA often:
5. Block size zero on FILE or JCL DCB allows:
Legacy performance articles cite default BUFNO of two for Easytrieve Plus sequential files. Increasing BUFNO can reduce physical I/O on large sequential scans but consumes buffer storage. Test increments with operations—there is no universal best value.
Use JCL AMP parameters or VSAM IDCAMS definitions for STRNO, BUFND, and BUFNI as appropriate to your access pattern (sequential versus random). FILE BUFNO does not replace VSAM buffer tuning.
Broadcom release notes mention Large Block Interface for tape files to use maximum block sizes supported by the device. Tape-heavy archives benefit from matching LBI-capable DCB settings in JCL and FILE definitions.
Jobs reading MASTER, REFERENCE, and UPDATE concurrently on one volume wait on the same device. Spreading reduces queue time and improves elapsed time even if CPU stays flat.
Related but distinct. Sort work datasets dominate some jobs; BUFNO and VSAM buffers dominate others. Measure EXCP counts and wait types to decide which page of guidance applies first.