The BUILD macro is used to construct a buffer pool in an area provided
by the problem program. The buffer pool can be used by more than one
data set through separate data control blocks. For BDAM, BISAM, BPAM
and BSAM your program can obtain individual buffers from the buffer
pool using the GETBUF macro, and return them to the buffer pool using
a FREEBUF macro. For QISAM and QSAM, OPEN obtains buffers from and
CLOSE returns buffers to the buffer pool. See z/OS DFSMS Using Data Sets for
an explanation of the interaction of the DCB, BUILD, and GETBUF macros
in each access method, and the buffer size requirements.
The BUILD macro may be issued in 24- or 31-bit addressing mode.
When issued in 31-bit addressing mode, all addresses must be valid
31-bit addresses.
Note: BSAM cannot support 64 bit real storage for any
tape devices that do not support 64 bit IDAWs. Applications that use
BSAM to process a tape data set can experience ABEND0D3 and/or ABENDB00
due to the inability to use a 64-bit IDAW by the device.
The format of the BUILD macro is:
[label]
|
BUILD
|
area address
,{number of buffers,buffer length|(0)}
|
- area address—RX-Type Address, (2-12),
or (1)
- specifies the address of the area to be used as a buffer pool.
The area must start on a fullword boundary. When issued in 31-bit
addressing mode, the input area address must be a clean 31-bit address.
If the area resides above the line, it cannot be used by other access
method macros.
The following illustration shows the format of
the buffer pool:
- number of buffers—symbol, decimal
digit, absexp, or (2-12)
- specifies the number of buffers in the buffer pool to a maximum
of 255.
- buffer length—symbol, decimal digit,
absexp, or (2-12)
- specifies
the length, in bytes, of each buffer in the buffer pool. If the
value specified for the buffer length is not a multiple of four the
system rounds the value specified to the next higher multiple of four.
The maximum length that can be specified is 32 760 bytes. For QSAM,
the buffer length must be at least as large as the value specified
in the block size (DCBBLKSI) field of the data control block.
- (0)
- The number of buffers and buffer length can be specified in general
register 0. The following illustration shows that if (0) is coded,
register 0 must contain the binary values for the number of buffers
and buffer length.