Overview of the BSAM and QSAM macro instructions
Some of the BSAM and QSAM access method routines have been modified to provide special services under TSO/E; others provide the same function that is provided in a batch environment. Those BSAM and QSAM macro instructions that are not relevant to terminal I/O act as no-ops. All of the BSAM and QSAM macro instructions, when executed in the batch environment, provide the non-terminal functions as explained in z/OS DFSMS Macro Instructions for Data Sets.
You can issue the BSAM and QSAM macro instructions in 24-bit or
31-bit addressing mode but with these restrictions that do not apply
to other environments:
- The EODAD specification on the DCBE macro has no effect, so the end-of-data routine must be specified in the DCB macro and reside below the 16 MB line.
- Certain ABEND issuances do not result in an IEC message or in calling the DCB ABEND exit routine.
- The RMODE31=BUF operand in the DCBE macro has no effect, so the QSAM buffer pool, if any, is below the 16 MB line. Therefore, OPEN does not turn on the DCBEMD31 bit.
- The large block interface, LBI, is not available.
Table 1 shows the functions performed by the BSAM and QSAM macro instructions when used for terminal I/O. Following the table are more detailed explanations of the GET, PUT, PUTX, READ, WRITE, and CHECK macro instructions.
| SAM macro instruction | BSAM | QSAM | Terminal interpretation |
|---|---|---|---|
| BSP | X | X | NOP |
| BUILD | X | X | As in batch processing, the BUILD macro instruction causes a buffer pool to be constructed in a user-provided storage area. |
| CHECK | X | Takes an EODAD exit after a READ EOF. NOP after a WRITE. | |
| CLOSE | X | X | The CLOSE macro instruction frees the control blocks built to handle I/O and deletes the loaded SAM terminal routines. |
| CNTRL | X | X | NOP |
| DCBE | X | X | Currently has no effect. |
| FEOV | X | X | NOP |
| FREEBUF | X | As in batch processing, the FREEBUF macro instruction causes the control program to return a buffer to the buffer pool assigned to the specified data control block. | |
| FREEPOOL | X | X | As in batch processing, the FREEPOOL macro instruction causes an area of virtual storage, previously assigned as a buffer pool for a specified data control block, to be released. |
| GET | X | The GET macro instruction obtains data from the terminal. | |
| GETBUF | X | As in batch processing, the GETBUF macro instruction causes the control program to obtain a buffer from the buffer pool assigned to the specified data control block, and to return the address of the buffer in a designated register. | |
| GETPOOL | X | X | As in batch processing, the GETPOOL macro instruction causes a buffer pool to be constructed in a storage area provided by the control program. |
| NOTE | X | NOP | |
| OPEN | X | X | The OPEN macro instruction loads the proper SAM terminal I/O routines and constructs the necessary control blocks. |
| POINT | X | NOP, but TYPE=RELNEXT is not supported. | |
| PRTOV | X | X | NOP |
| PUT | X | The PUT macro instruction routes data to the terminal. | |
| PUTX | X | The PUTX macro instruction routes data to the terminal. | |
| READ | X | The READ macro instruction obtains data from the terminal. | |
| RELSE | X | NOP | |
| SETPRT | X | X | NOP |
| TRUNC | X | NOP, but BSAM is not supported. | |
| WRITE | X | The WRITE macro instruction routes data to the terminal. |
Note: If QSAM is used for terminal I/O and the data set is defined
with BLKSIZE=80 and RECFM=U, which is not recommended, each line will
be truncated by 1 character. This byte (the last byte) is reserved
for an attribute character.