SUBROUTINE GETFIL(MCRLIN, FILE, FOUND, QUICK, FORTRN 1, TERSE, NUMBER, LOWEST, LOAD, LFILE, VT52, VT100 2, VOWEL, LINSKP) C+ C SUBROUTINE GETFIL WILL FIND THE FILE STRING C WITH THE FILE NAME FROM THE MCRLINE. FOUND C IS SET TRUE IF THERE IS A VALID FILE NAME IN C THE STRING. C SWITCHES THAT ARE USED: C /Q RUN IN QUICK MODE (NO TERMINAL IO) C /F INPUT IS A FORTRAN SOURCE, CHECK C THE 'C' COMMENTS ONLY C /T TERSE DISPLAY NOTHING EXTRA BUT C WORD AND LINE C /N NUMBERS IN TOKENS ARE VALID C /S:X DO NOT CHECK WORDS LE X CHAR C /L[:filename] PRE LOAD ADD LIST WITH filename.DCT IF C filename GIVEN OR 'SPELL.DCT' IF C /L ALONE. C /V CHANGE TO VT52 TYPE ESCAPE SEQUENCES C /R TOKENS MUST HAVE VOWEL TO BE CONSIDERED C /D:X SKIP DOWN X LINES BEFORE STARTING C C LOCAL VARIABLES C ISTRT - STARTING POSITION OF FILE NAME IN COMMAND LINE C IEND - ENDING POSITION OF FILE NAME IN COMMAND LINE C C SUBROUTINES REFERENCED C GETLOD OBTAINS AUTO-LOAD FILE NAME FROM COMMAND LINE C C- INTEGER*2 LOWEST, LINSKP, NUMPL LOGICAL*1 FOUND, QUICK, FORTRN, NUMBER, TERSE LOGICAL*1 LOAD, VT52, VT100, VOWEL BYTE FILE(40), MCRLIN(80), LFILE(40) FOUND=.FALSE. LOAD=.FALSE. C C THE FOLLOWING SETS THE DEFAULTS FOR THESE SWITCHES. C QUICK=.FALSE. FORTRN=.FALSE. TERSE=.FALSE. NUMBER=.FALSE. VT52=.FALSE. VT100=.TRUE. VOWEL=.FALSE. LINSKP=0 C IEND=1 ISTRT=1 DO 10,I=1,80 IF(MCRLIN(I).GE.'a'.AND.MCRLIN(I).LE.'z') 1 MCRLIN(I)=MCRLIN(I)-'40'O !MAKE UPPER CASE IF(MCRLIN(I).EQ.' '.AND.ISTRT.EQ.1)ISTRT=I+1 IF(MCRLIN(I).EQ.'/' 1.OR.MCRLIN(I).EQ.';'.OR.MCRLIN(I).EQ.'11'O 2.OR.MCRLIN(I).EQ.'15'O.OR.MCRLIN(I).EQ.'0'O)THEN IF(IEND.EQ.1.AND.ISTRT.NE.1)IEND=I-1 IF(MCRLIN(I).EQ.'/')THEN IF(MCRLIN(I+1).EQ.'Q')QUICK=.TRUE. IF(MCRLIN(I+1).EQ.'F')FORTRN=.TRUE. IF(MCRLIN(I+1).EQ.'T')TERSE=.TRUE. IF(MCRLIN(I+1).EQ.'N')NUMBER=.TRUE. IF(MCRLIN(I+1).EQ.'V')VT52=.TRUE. IF(MCRLIN(I+1).EQ.'V')VT100=.FALSE. IF(MCRLIN(I+1).EQ.'R')VOWEL=.TRUE. IF(MCRLIN(I+1).EQ.'L')THEN LOAD=.TRUE. CALL GETLOD(MCRLIN(I+1),LFILE) END IF IF(MCRLIN(I+1).EQ.'S')DECODE(1,1000 1 ,MCRLIN(I+3))LOWEST IF(MCRLIN(I+1).EQ.'D')THEN DO 5,NUMPL=1,5 IF(MCRLIN(I+2+NUMPL).LT.'0'.OR. 1 MCRLIN(I+2+NUMPL).GT.'9')GOTO 6 5 CONTINUE 6 IF(NUMPL.GT.5.OR.NUMPL.LT.1)THEN WRITE(3,1020) CALL EXIT END IF DECODE(NUMPL-1,1010 1 ,MCRLIN(I+3))LINSKP END IF IF(MCRLIN(I+1).EQ.'-')THEN IF(MCRLIN(I+2).EQ.'Q')QUICK=.FALSE. IF(MCRLIN(I+2).EQ.'F')FORTRN=.FALSE. IF(MCRLIN(I+2).EQ.'T')TERSE=.FALSE. IF(MCRLIN(I+2).EQ.'N')NUMBER=.FALSE. IF(MCRLIN(I+2).EQ.'V')VT52=.FALSE. IF(MCRLIN(I+2).EQ.'R')VOWEL=.FALSE. END IF END IF END IF 10 CONTINUE IF(ISTRT.EQ.1.OR.IEND.EQ.1)RETURN DO 20,I=ISTRT,IEND 20 FILE(I-ISTRT+1)=MCRLIN(I) FILE(IEND+1)='0'O FOUND=.TRUE. RETURN 1000 FORMAT(I1) 1010 FORMAT(I) 1020 FORMAT(1X,'SPE - SYNTAX ERROR') END