Ü	FUNCTION JJTAPE( buff, nchar )
@c.		Reads one record from Assigned MT: TAPE.
¤c.
c.inp.	BUFF	The buffer to be read into.
lc.inp.	NCHAR	The maximum number of characters in the buffer.
Ðc.out.	JJTAPE	The number read in, or -1, at EOF.
4c.
˜c. -end.of.info-
üc.
`	c.
Ä		implicit integer (a-z)
(
	byte buff(nchar)
Œ
C
ð
C	**********************************************************
TC
¸	PARAMETER EOF='870'X
	PARAMETER NOLOGNAM='908'X	!RETURN CODE
€	PARAMETER NOPRIV = '24'X	!RETURN CODE
ä	PARAMETER IO$_READLBLK = '21'X	!READ LOGICAL BLOCK CODE FOR QIO
H	PARAMETER IO$_REWIND   = '24'X	!REWIND FUNCTION CODE FOR QIO
¬C
	INTEGER*2 CHANNEL,ENDFLAG,IOSB(4)
t	INTEGER*4 SYS$ASSIGN,SYS$QIOW,RETCODE,OUTRECD
ØC	***************************************************************
<C.
 c.
	if( iopen.eq.0 ) then
h	  iopen = 1
Ìc.
0c... Open the tape
”c.
ø	  write(6,*)'TAPE will be rewound'
\	  RETCODE=SYS$ASSIGN('TAPE',CHANNEL,,)
À	  IF(RETCODE.NE.1) GO TO 9000
$C
ˆC	  REWIND THE TAPE
ì	  RETCODE = SYS$QIOW(,%VAL(CHANNEL),%VAL(IO$_REWIND),IOSB,,,,,,,,)
P	  IF (RETCODE .NE. 1) GO TO 9000
´	endif
c.
|c... Read one block
àc.
D	bufsize = nchar
¨	RETCODE=SYS$QIOW(,%VAL(CHANNEL),%VAL(IO$_READLBLK),IOSB,,,
	1	%REF(buff(1)),%VAL(BUFSIZE),,,,)
p	IF(RETCODE.NE.1)GO TO 9000
ÔC
8C	CHECK FOR EOF
œ	IF(IOSB(1).EQ.EOF)THEN
 c.
dc... end of file
Èc.
,	  jjtape = -1
	else
ôc.
Xc... data read in
¼c.
 	  jjtape = iosb(2)
„	endif
èC
L	return
°c.	------
c.
x9000	continue
Ü	write(6,9010) '*ERR*', retcode
@9010	format( ' ', a, z10 )
¤	stop
 c.	------
l 		end
