The AMP keyword on the DD statement is the batch operator's control panel for how z/OS should open a VSAM cluster for this step. While DEFINE CLUSTER carved out cylinders, keys, and SHAREOPTIONS in the catalog, AMP now answers operational questions: how many control intervals should we keep in memory, how many sequential strings must coexist, whether System Managed Buffering should lean sequential or random, which optional integrity letters apply, and which macro-level behaviors the program expects if it is not filling an ACB itself. None of that belongs in the catalog entry the same way KEYS does; it belongs to the particular job because two different jobs may fairly want different buffer counts for the same physical cluster. This page ties together BUFND, BUFNI, STRNO, OPTCD, and MACRF as one family so beginners see the forest before returning to individual tree pages for depth.
AMP can appear as AMP=(BUFND=10,BUFNI=4) or as a list of quoted subparameters when readability or continuation rules demand it. Some shops generate AMP from proc symbols so that test and production differ only by symbol tables. Whatever the style, the semantic contract is unchanged: each subparameter becomes part of the PLIST the access method consults during OPEN path setup. Syntax errors usually fail the step at allocation or OPEN with a message pointing at the DD name, which is mercifully easier to debug than a data exception halfway through a six-hour sort.
1234//VSAM1 DD DSN=PROD.TRANS.KSDS,DISP=SHR, // AMP=(BUFND=25,BUFNI=10,STRNO=2, // OPTCD=I, // MACRF=(KEY,DIR,OUT,NDF))
The example mixes illustrative values; MACRF keyword lists differ from the QSAM world and must be validated against IBM's VSAM AMP topic. If your job fails, remove experimental pieces until OPEN succeeds, then reintroduce them one at a time.
| Subparameter | Role | Layer |
|---|---|---|
| BUFND / BUFNI / BUFSP | Control how many data and index CIs can be buffered or how many bytes BUFSP caps for the pool. | Performance and memory footprint per open. |
| STRNO | Declares how many concurrent sequential strings VSAM must track. | Concurrency of sequential cursors; couples to BUFND minima. |
| ACCBIAS / MSG=SMBBIAS | Hints System Managed Buffering about sequential vs random vs create workloads and prints SMB diagnostics. | Applies only when SMB prerequisites are satisfied. |
| OPTCD | String of optional letters altering documented open-time behaviors. | Specialist tuning; verify letters per release. |
| MACRF | Macro-related flags analogous to ACB MACRF groups (access type, direction, deferral, insert strategy, buffering). | Align batch JCL with what assembler programs specify explicitly. |
Think of DEFINE CLUSTER as the blueprint of a house and AMP as the furniture you bring when you move in for the weekend. The blueprint specifies bedrooms (keys and components); the furniture specifies how many chairs you set up in the kitchen (buffers) and whether you optimize the living room for movie night or homework (ACCBIAS, MACRF groups). Two families can share the same blueprint with different furniture; two jobs can share the same cluster with different AMP. Problems arise only when furniture blocks the hallways—meaning buffers or strings exhaust region storage—or when furniture fights the blueprint—meaning AMP requests behaviors the cluster definition forbids.
Assembler programmers learn MACRF as grouped keywords on the ACB macro: which access flavor (keyed, addressed, relative), which direction (input vs output), whether writes may defer, which insert strategy applies to keyed inserts, and which buffering paradigm (LSR, GSR, NSR, RLS) governs sharing. When batch JCL specifies MACRF on AMP, you are essentially asking the system to build the same intent for a high-level language runtime that the assembler program spelled out explicitly. Mismatches between COBOL ORGANIZATION/ACCESS clauses and AMP MACRF can produce subtle ABENDs or status codes that send beginners on a goose chase through file status charts. Cross-check all three layers: COBOL SELECT, runtime DD AMP, and the catalog attributes.
Scheduler symbol tables often wrap AMP across multiple lines using continuations. A missing comma after a continuation line can silently drop the tail of AMP, leaving OPTCD or MACRF absent while BUFND still parses—behavior that looks like "the tuning did nothing" because half the card vanished. Diff the preprocessed JCL in the spool file whenever a job behaves differently after a proc update even though the source library looks identical to human eyes.
AMP is the sticky note you put on a shared toy box saying how many kids may play at once (STRNO), how many trays of toys you will keep on the table (BUFND), how many picture maps you keep for finding toys (BUFNI), and whether you play in line or hop around (ACCBIAS/MACRF/OPTCD). The toy box itself was built earlier with DEFINE CLUSTER.
1. AMP parameters are processed when?
2. Which AMP subparameter pair directly counts data vs index CI buffers?
3. MACRF on AMP is mainly used to: