The BSAM, QSAM, and BPAM access methods allow
data areas to be located above the 16MB line. This support includes
allowing the caller to issue most SAM, and PAM macros
in 31-bit addressing mode regardless of whether the data is above
or below the 16MB line.
The support for areas above the line is provided for the following
devices:
- DASD, including UNIX files
- Tape
- Subsystem (for example, spooled)
- Dummy
- VIO
- Unit record
The support for areas above the line is not provided for the following
devices:
- TSO terminal
- OCR/MICR 3886, 3890, 1287, 1288. These devices are
for optical character recognition and magnetic ink character recognition.
For the above devices, issue macros other than OPEN
and CLOSE in 24-bit addressing mode. In the current release the DCBE
has no effect.
To take advantage of providing data areas above the 16 MB line
for BSAM, and BPAM macros, the issuer of READ,
WRITE, and CHECK must execute in 31-bit addressing mode.
To take advantage of providing data areas above the 16MB line for
QSAM macros, the issuer of GET, PUT, and PUTX must execute in 31-bit
addressing mode. To take advantage of QSAM buffers above the line,
the user must tell OPEN to obtain the buffers above the line via the
DCBE macro and the issuer of GET, PUT, and PUTX must then execute
in 31-bit addressing mode.
If the issuer of READ, WRITE, CHECK, GET, PUT, and PUTX executes
in 31-bit addressing mode, then all of the following must have 31-bit
addresses and can reside above or below the 16MB line:
- Data address in the DECB (BSAM) or in the
GET or PUT macro (QSAM move mode).
- Save area in register 13.
- DCB extension (DCBE).
- QSAM buffers obtained at OPEN where the DCBE is present and the
user has coded RMODE31=BUFF on the DCBE macro indicating that OPEN
can get buffers above the 16MB line (QSAM).
- EODAD address specified in the DCBE (DCBE EODAD=addr) (BSAM, QSAM,
and BPAM).
- SYNAD address specified in the DCBE (DCBE SYNAD=addr) (BSAM, QSAM,
and BPAM). In case your routine uses register 15 as a base register,
the SYNADAF macro modifies the high order byte.
- Key address in the DECB.
- Area containing block address (RBA, TTR, or MBBCCHHR) in the DECB.
If the issuer of an access method macro executes in
31-bit addressing mode, the following must have valid 31-bit addresses
but must reside below the 16 MB line:
- DECB (BSAM).
- DCB address on any macro (including the DECB) or in a register.
- BSAM or BPAM buffers obtained by OPEN (BSAM). OPEN obtains BSAM
or BPAM buffers only when you code BUFNO on the DCB macro or the DD
statement.
In any addressing mode, the following can reside above
the 16 MB line if you have a way to set it:
- OPEN and CLOSE parameter list when you code MODE=31.
- DCBE, except with the FIND macro.
The following must reside below the line because the addresses
are only three bytes:
- OPEN and CLOSE parameter list when MODE=24 is coded
or defaulted.
- DCB exit list.
- Routines and areas pointed to by the exit list. All exit list
exit routines are entered in 24-bit addressing mode.
- EODAD address in the DCB. The user’s EODAD routine will be entered
in the addressing mode of the issuer of the CHECK, GET, or FEOV.
- SYNAD address in the DCB. The user’s SYNAD routine will be entered
in the addressing mode of the issuer of the CHECK, GET, or PUT. In
case your routine uses register 15 as a base register, the SYNADAF
macro modifies the high order byte.
- Area containing next block address in the DECB.
- SETPRT parameter list and areas that it points to.
- STOW parameter list.
Following is a complete list of SAM macros which do not support
buffers which reside above the line:
- BUILD
- BUILDRCD
- FREEBUF
- FREEPOOL
- GETBUF
- GETPOOL
The following are not supported for BDAM and may cause unpredictable
results:
- Callers in 31-bit addressing mode using record format of variable
spanned.
- Callers in 31-bit addressing mode using dynamic buffering.
- Callers in 31-bit addressing mode using BSAM to create a BDAM
data set.