Use this system macro to log data blocks to an active real-time
tape.
Format
- label
- A symbolic name can be assigned to the macro statement.
- BLOCK=Rx
- This parameter specifies the general register containing the system
virtual address (SVA) of the block to be logged.
- TYPE=Ry|Lx
- This parameter specifies the type of block to be logged. A general
register containing the block type or a CLH equate specifying the block type
can be coded. The following types are supported:
- L0
- 128 byte block
- L1
- 381 byte block
- L2
- 1055 byte block
- L4
- 4095 byte block.
- ERROR=label1
- Control will be passed if the specified tape is found to be offline, not
active, or the threshold value, if specified, has been exceeded.
- TAPE=RTL|RTc|(Ru)
- This parameter specifies the symbolic tape name of a system tape to which
the block is to be logged. A general register containing a pointer to
the tape name may also be coded. In this case the tape name must be
left-justified in the first 3 bytes of the address supplied.
The default is RTL. The default will be forced to RTA if RTL output
is merged to the RTA.
- SS
- This parameter specifies the subsystem and subsystem user ID to which the
data belongs. These IDs are in the two byte complement and
index format. See CEBIC-Change MDBF Subsystem/Subsystem User ID for more information about this format.
- Rz
- When Rz is specified, bytes 0-1 should contain the subsystem ID,
and bytes 2-3 should contain the subsystem user ID.
- label2
- When label2 is specified, it should point to four bytes of
storage where the first two bytes contain the subsystem ID, and the second two
bytes contain the subsystem user ID.
The default is the SS/SSU ID of BSS.
- COPY
- This parameter specifies whether the data is copied into a block, and
passed to the I/O routines.
- NO
- If COPY=NO is specified, the block passed in Rx is passed to the I/O
routines and returned to the TPF system at I/O completion. Therefore,
the block should not be mapped in any EVM. COPY=NO is the
default.
- YES
- If COPY=YES is specified, the macro service routine gets a storage block
of the type specified by the TYPE parameter, copies the data into the block,
and passes the new block to the I/O routines.
- THRESHOLD=Rw
- This parameter specifies a register that contains the threshold value to
be checked before adding the SWB to the cross list. If the number of
SWBs on the module queue exceeds the threshold value, then the SWB will not be
added to the cross list and the macro will return to label1.
- TRLRDATA=(Rv,Ln)
- This parameter specifies a register, Rv, that contains a pointer
to the user trailer data information. Ln specifies the length,
in bytes, of the user trailer data information. This data will be
written at the end of the record to be logged just before the standard trailer
information. A maximum of 32 data bytes may be specified. If
Ln is less than 32, the data is left-justified and filled with
hexadecimal zeros. The standard trailer information consists of the
subsystem name, subsystem user name, and the time-of-day (TOD) clock.
The default is that no additional data is added to the standard
trailer.
Entry Requirements
- This macro can only be run in the system virtual memory (SVM).
- R13 must point to the system stack area.
- The caller must be in the SVM. Rx is not mapped in any EVM if
COPY=NO is specified.
Return Conditions
- Control is returned to the NSI if the specified tape is mounted, online,
and the threshold value, if specified, has not been exceeded. If the
tape is not mounted or is not in a useable state, control will be passed to
the routine specified on the ERROR parameter.
- The condition code is not saved.
- If COPY=NO is specified, the block is no longer available for use by the
calling program. If COPY=YES is specified the caller is responsible for
insuring that the original block is eventually returned to the TPF
system.
- A detailed indication of status of the write request is contained in
R15.
- X'00'
- An SWB has been added to the cross list. This is not an error
condition.
- X'04'
- The specified tape was not mounted or tape restart not complete.
- X'08'
- The module queue length for the specified tape exceeded the value in the
register specified by the THRESHOLD parameter.
Programming Considerations
- This macro is for use in the control program (CP) only.
- $TCPLC can only be invoked in the SVM.
- The $TCPLC macro service routine ensures that tape restart is not in
progress before attempting to satisfy the $TCPLC request. If tape
restart is in progress, error code 4 is returned in R15 to indicate
unsuccessful completion of the request.
Examples
None.