Chapter 4 Key Takeaways — Quick Reference Card

Catalog Hierarchy

Component Function Key Point
Master Catalog Root of catalog hierarchy; one per system Contains aliases pointing to user catalogs
User Catalog Application-level dataset registry Separate catalogs reduce contention
Alias Name-to-catalog mapping in master catalog Multi-level aliases (e.g., CNB.PROD) override single-level (CNB)
BCS Basic Catalog Structure — name/volume mapping The part you query with LISTCAT
VVDS VSAM Volume Dataset — one per volume Contains VSAM-specific extent/config info

Catalog Search Order: HLQ alias in master catalog → user catalog → master catalog itself. (JOBCAT/STEPCAT deprecated.)


SMS Classes at a Glance

Construct Controls Think Of It As
Storage Class Performance, availability, I/O priority "How fast and resilient"
Management Class Backup, migration, retention, expiration "How protected and how long"
Data Class RECFM, LRECL, BLKSIZE, CI size, free space "What shape is the data"
Storage Group Volume pool, placement, thresholds "Where does it physically go"

ACS Routines assign datasets to classes at allocation time based on dataset name patterns, user ID, and other criteria.

Critical rule: JCL SPACE overrides data class SPACE completely (no merge).


BLKSIZE Optimization (3390 Device)

LRECL Optimal BLKSIZE Records/Track Track Utilization
80 27920 698 98.4%
100 27900 558 98.2%
200 27800 278 98.0%
500 27500 110 96.8%
1000 27000 54 95.2%

Rule: Always specify BLKSIZE explicitly for production. Use system-determined blocksize (BLKSIZE=0) only when you accept the system default.

Impact: Unblocked (BLKSIZE=LRECL) wastes 85-95% of track capacity. Fix block sizes before any other performance tuning.


VSAM Quick Reference

Organization Types

Type Key Feature Primary Use
KSDS Indexed by key, B-tree Master files, lookup tables
ESDS Arrival sequence, append-only Journals, logs, audit trails
RRDS Access by slot number Dense numeric key lookups
LDS Byte stream, no records DB2 tablespaces, data-in-virtual

Share Options (Cross-Region)

Value Meaning When to Use
1 Exclusive — one job at a time Maximum integrity, minimum concurrency
2 One writer + multiple readers Production standard — batch update + CICS reads
3 No VSAM integrity Only with external serialization — avoid
4 Buffer invalidation Rarely used; VSAM RLS is the modern alternative

CI Size Guidelines

CI Size Best For
2048-4096 Random access dominant, small-medium records
4096 General purpose — good default
8192-16384 Sequential access dominant, large records

Buffer Tuning (NSR — Batch)

  • BUFNI: Hold entire index set in memory (all levels above sequence set + 1)
  • BUFND (sequential): CIs per CA + 1 (allows full CA read)
  • BUFND (random): 10-20 for look-aside; diminishing returns beyond that

GDG Essential Rules

Parameter Recommended Avoid
NOEMPTY Always EMPTY (deletes ALL gens at limit)
SCRATCH Short-retention tiers (daily, weekly)
NOSCRATCH Long-retention tiers (monthly, annual)
LIMIT Match to recovery window + margin Arbitrary or undocumented limits

Relative references: Resolved at job initiation for entire job. Use absolute generation names for restart JCL.

Tiered pattern: - Daily: LIMIT=7-14, SCRATCH - Weekly: LIMIT=5-8, SCRATCH - Monthly: LIMIT=12-24, NOSCRATCH - Annual: LIMIT=7-10, NOSCRATCH


Storage Optimization Checklist

  • [ ] Block sizes standardized through data classes
  • [ ] VSAM free space set based on actual insert rates
  • [ ] VSAM reorg scheduled based on split count thresholds
  • [ ] HSM migration policies set per management class
  • [ ] Pre-batch recall job for migrated critical datasets
  • [ ] Capacity monitoring: volume utilization, extent counts, split rates
  • [ ] Compression enabled for I/O-bound batch datasets
  • [ ] SPACE allocated in CYL with RLSE for output datasets
  • [ ] Extent counts monitored (>5 yellow, >16 red)

Critical Formulas

Records per track (3390, FB):

blocks_per_track = floor(56664 / (BLKSIZE + overhead))
records_per_track = blocks_per_track * (BLKSIZE / LRECL)

VSAM records per CI:

records_per_ci = floor((CI_SIZE - 10) / avg_record_size)

(10 bytes for CIDF + RDFs; actual overhead varies)

GDG space estimate:

total_space = num_bases * LIMIT * avg_generation_size

Production Mantras

  1. "If you can't name it, you can't secure it, manage it, or find it." — Naming conventions are infrastructure.
  2. "NOEMPTY. Always." — One wrong parameter can delete 30 days of data.
  3. "The right block size is free performance." — No code changes, just JCL and data classes.
  4. "SHAREOPTIONS 3 is the Wild West." — Use SHAREOPTIONS 2 or VSAM RLS for integrity.
  5. "Pre-recall, don't auto-recall." — Proactive HSM recall before the batch window, not during it.
  6. "Monitor everything. Trust nothing." — Daily capacity reports, weekly VSAM health checks.