PROGRAM MTCON C C PROGRAM TO SORT OF DO WHAT THE HP RTE FMGR CN COMMANDS DOES. C C JCD3 C JULY 1979 C C********************************************************************** C INTEGER YES INTEGER FF,FR,BF,BR,RW,EO,EN INTEGER OF DATA FF,FR,BF,BR,RW,EO,EN/'FF','FR','BF','BR','RW','EO','EN'/ DATA OF/2HOF/ DATA YES/'YE'/ C C.ANNOUNCE PROGRAM C WRITE(7,9000) 9000 FORMAT(//' MTCON Ver. 27-Nov-79'/) C C C.ASK OPERATOR FOR A COMMAND C 10 WRITE(7,9010) 9010 FORMAT(' MTCON Command (IANS|): ',$) READ(5,9015)IANS,IUNIT,ICOUNT 9015 FORMAT(A2,I5,I5) C C C.COMMAND INTERPRETER C IF(IANS.EQ.RW)GO TO 100 IF(IANS.EQ.FF)GO TO 200 IF(IANS.EQ.FR)GO TO 300 IF(IANS.EQ.BF)GO TO 400 IF(IANS.EQ.BR)GO TO 500 IF(IANS.EQ.EO)GO TO 600 IF(IANS.EQ.OF) GO TO 700 IF(IANS.EQ.EN)GO TO 1000 WRITE(7,9030) 9030 FORMAT(/' ?MTCON-W-Ambiguous command') GO TO 10 C C C.RW-REWIND C 100 CALL STATUS(IUNIT,IERR) IF(IERR.LT.0)GO TO 10 CALL RWDNW(IUNIT) GO TO 10 C C C.FF-FORWARD FILE C 200 CALL STATUS(IUNIT,IERR) IF(IERR.LT.0)GO TO 10 IF(ICOUNT.GT.0)GO TO 250 WRITE(7,9200) 9200 FORMAT(' Input file count: ',$) READ(5,9210)ICOUNT 9210 FORMAT(I10) IF(ICOUNT.LE.0)GO TO 10 250 DO 260 I=1,ICOUNT IF(IEOT(IUNIT).LT.0)GO TO 290 CALL PTAPE(IUNIT,1,0) 260 CONTINUE GO TO 10 290 WRITE(7,9290) 9290 FORMAT(' ?MTCON-W-Beyond end of tape marker') GO TO 10 C C C.FR-FORWARD RECORD C 300 CALL STATUS(IUNIT,IERR) IF(IERR.LT.0)GO TO 10 IF(ICOUNT.GT.0)GO TO 350 WRITE(7,9300) 9300 FORMAT(' Input record count: ',$) READ(5,9310)ICOUNT 9310 FORMAT(I10) IF(ICOUNT.LE.0)GO TO 10 350 DO 360 I=1,ICOUNT IF(IEOT(IUNIT).LT.0)GO TO 290 CALL PTAPE(IUNIT,0,1) 360 CONTINUE GO TO 10 C C C.BF-BACKSPACE FILE C 400 CALL STATUS(IUNIT,IERR) IF(IERR.LT.0)GO TO 10 IF(ICOUNT.GT.0)GO TO 450 WRITE(7,9400) 9400 FORMAT(' Input file count: ',$) READ(5,9410)ICOUNT 9410 FORMAT(I10) IF(ICOUNT.LE.0)GO TO 10 450 DO 460 I=1,ICOUNT IF(LOADPT(IUNIT).LT.0)GO TO 490 CALL PTAPE(IUNIT,-2,0) 460 CONTINUE GO TO 10 490 WRITE(7,9490) 9490 FORMAT(' ?MTCON-W-Tape at load point') GO TO 10 C C C.BR-BACKSPACE RECORD C 500 CALL STATUS(IUNIT,IERR) IF(IERR.LT.0)GO TO 10 IF(ICOUNT.GT.0)GO TO 550 WRITE(7,9500) 9500 FORMAT(' Input record count: ',$) READ(5,9510)ICOUNT 9510 FORMAT(I10) IF(ICOUNT.LE.0)GO TO 10 550 DO 560 I=1,ICOUNT IF(LOADPT(IUNIT).LT.0)GO TO 490 CALL PTAPE(IUNIT,0,-1) 560 CONTINUE GO TO 10 C C C.EO-WRITE EOF C 600 CALL STATUS(IUNIT,IERR) IF(IERR.LT.0)GO TO 10 IF(IRING(IUNIT).LT.0)GO TO 650 WRITE(7,9600) 9600 FORMAT(' ?MTCON-W-No write ring') GO TO 10 650 WRITE(7,9650)IUNIT 9650 FORMAT(' Write EOF on unit # ',I1,' Are you sure? ',$) READ(5,9660)IANS 9660 FORMAT(A2) IF(IANS.NE.YES)GO TO 10 CALL EFILE(IUNIT) GO TO 10 C C C OF -- OFF LINE C C 700 CALL STATUS(IUNIT,IERR) IF(IERR.LT.0)GO TO 10 CALL OFFLN(IUNIT) GOTO 10 C C C.EN-END C 1000 STOP 'MTCON' END C SUBROUTINE STATUS(IUNIT,IERR) C C ROUTINE TO GET STATUS OF MAG TAPE C C********************************************************* C IERR=0 IF(IREADY(IUNIT).GE.0)RETURN IERR= -1 WRITE(7,9999)IUNIT 9999 FORMAT(' ?MTCON-W-MT unit # ',I1,' is not ready') RETURN END