Building a Single Control Block Structure
To share successfully within a task or between subtasks, you should
ensure that VSAM builds a single control block structure for the data
set. This control block structure includes blocks for control information
and input/output buffers. All subtasks access the data set through
this single control block structure, independent of the SHAREOPTION
or DISP specifications. The three methods of achieving a single control
block structure for a VSAM data set while processing multiple concurrent
requests are:
- A single access method control block (ACB) and a STRNO>1
- Data definition name (ddname) sharing, with multiple ACBs (all
from the same data set) pointing to a single DD statement. This is
the default. For example:
//DD1 DD DSN=ABC OPEN ACB1,DDN=DD1 OPEN ACB2,DDN=DD1 - Data set name sharing, with multiple ACBs pointing to multiple
DD statements with different ddnames. The data set names are related
with an ACB open specification (MACRF=DSN). For example:
//DD1 DD DSN=ABC //DD2 DD DSN=ABC OPEN ACB1,DDN=DD1,MACRF=DSN OPEN ACB2,DDN=DD2,MACRF=DSN
Multiple ACBs must be in the same address space, and they must be opening to the same base cluster. The connection occurs independently of the path selected to the base cluster. If the ATTACH macro is used to create a new task that will be processing a shared data set, let the ATTACH keyword SZERO to default to YES or code SZERO=YES. This causes subpool 0 to be shared with the subtasks. For more information about the ATTACH macro see z/OS MVS Programming: Authorized Assembler Services Reference ALE-DYN. This also applies to when you are sharing one ACB in a task or different subtasks. To ensure correct processing in the shared environment, all VSAM requests should be issued in the same key as the job step TCB key.