Ü FUNCTION JJTAPE( buff, nchar ) @c. Reads one record from Assigned MT: TAPE. ¤c. c.inp. BUFF The buffer to be read into. lc.inp. NCHAR The maximum number of characters in the buffer. Ðc.out. JJTAPE The number read in, or -1, at EOF. 4c. ˜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. 0c... 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 8C CHECK FOR EOF œ IF(IOSB(1).EQ.EOF)THEN c. dc... end of file Èc. , jjtape = -1  else ôc. Xc... data read in ¼c.  jjtape = iosb(2) „ endif èC L return °c. ------ c. x9000 continue Ü write(6,9010) '*ERR*', retcode @9010 format( ' ', a, z10 ) ¤ stop  c. ------ l end