.help zzrdmt May84 "System Interface"
.ih
NAME
zzrdmt -- asynchronous read from a magtape file
.ih
SYNOPSIS
.nf
zzrdmt (chan, buf, maxbytes)

int	chan			# OS channel of magtape file
char	buf[maxbytes]		# output buffer to receive data
int	maxbytes		# capacity of buffer
.fi
.ih
DESCRIPTION
Initiate a read of at most \fImaxbytes\fR bytes from channel \fIchan\fR into
the buffer \fIbuf\fR.  If the physical file block is larger than \fImaxbytes\fR
bytes the additional data will be discarded.  Each call to \fBzzrdmt\fR reads
one tape block.  Successive tape blocks may vary in size.
.ih
RETURN VALUE
The wait primitive \fBzzwtmt\fR must be called after every asynchronous read
to get the transfer status.  ERR is returned if a read error occurs or if the
channel number is illegal.  If the read operation is successful the actual
number of bytes read is returned; zero is returned for a read at EOF.
.ih
NOTES
The transfer is NOT guaranteed to be asynchronous and the calling program
must not assume that \fBzzrdmt\fR will return immediately.
The \fBzzwtmt\fR primitive must be called and the status checked before
issuing another i/o request to the channel.  Only a single request may be
pending on a channel at a time.  A request to read zero bytes is considered
to be an error to avoid confusion with a read at EOF.
.ih
SEE ALSO
zzopmt, zzwtmt, zfiomt
.endhelp
