C+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC SUBROUTINE SAT008(ILAN, IKOM, ISW1, ISW2, ISW3, 1 IEXT, IFIL, IESW1, IESW2, IESW3, ISYNTAX) C C STRUKTURERAD AT.! C C HISTORIK: C DATUM NAMN ORSAK C 01-JAN-83 LARS-G\RAN OLSSON URUPPF\RANDE C C FUNKTION: C KOLLAR SYNTAX P] FILNAMN. C KOLLAR EXTENSIONS, L[GGER EV. P] DEFAULT OCH KOLLAR SWITCHAR C C INDATA: C IKOM - KOMMANDO C ISW1 - GODK[ND SWITCH 1 C ISW2 - GODK[ND SWITCH 2 C ISW3 - GODK[ND SWITCH 3 C IEXT - DEFAULT EXTENSION C C UTDATA: C IFIL - FILNAMN MED EXTENSION C IESW1 - TRUE=SWITCH 1 FINNS C IESW2 - TRUE=SWITCH 2 FINNS C IESW3 - TRUE=SWITCH 3 FINNS C ISYNTAX - TRUE=SYNTAXFEL C C IN/UTDATA: C ILAN - ANTAL TECKEN I IKOM/IFIL C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C 'PAGE' CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C INTERNA VARIABLER C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C LOGICAL*1 ISYNTAX < LOGISK BYTE - TRUE FEL SYNTAX C LOGICAL*1 IKOM(30) < KOMMANDO INTEGER ILAN < ANTAL TECKEN I IKOM LOGICAL*1 IFIL(30) < FILNAMN INTEGER IFILLAN < ANTAL TECKEN P] FILNAMN UTAN SWITCH C LOGICAL*1 ISW1(3) < SWITCH 1 LOGICAL*1 ISW2(3) < SWITCH 2 LOGICAL*1 ISW3(3) < SWITCH 3 C LOGICAL*1 IEXT(3) < DEFAULT EXTENSION LOGICAL*1 IESW1 < SWITCH 1 FINNS LOGICAL*1 IESW2 < SWITCH 2 FINNS LOGICAL*1 IESW3 < SWITCH 3 FINNS INTEGER I < R[KNARE INTEGER J < R[KNARE INTEGER K < R[KNARE C 'PAGE' CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C FORMAT C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C 101 FORMAT(1X,'ILLEGAL EXTENSION ON',1X,3A1,1X,'FILE!') 108 FORMAT(1X,'ILLEGAL SWITCH ON',1X,3A1,1X,'FILE!') 'PAGE' CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C STYRSEKTION C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C IESW1 = .FALSE. IESW2 = .FALSE. IESW3 = .FALSE. 'POSIT' < SYNTAX OK I = 0 J = 1 'WHILE' (J .LE. ILAN) 'IF' (IKOM(J) .EQ. '/') I = J 'BREAK' 'ENDIF' J = J + 1 'ENDDO' 'IF' (I .GT. 0) IFILLAN = I - 1 'ELSE' IFILLAN = ILAN 'ENDIF' 'WHILE' (I .GT. 0 .AND. J .LE. ILAN) < FLER SWITCHAR K = 0 J = J + 1 'WHILE' (J .LE. ILAN) 'IF' (IKOM(J) .EQ. '/') K = J 'BREAK' 'ENDIF' J = J + 1 'ENDDO' 'IF' (K .EQ. 0) K = ILAN + 1 'ENDIF' C SWITCH FINNS NU MELLAN I OCH K 'IF' ((K- I) .GT. 4) < FEL WRITE(5, 108)IEXT 'QUIT' 'ENDIF' 'IF' (ICOMPA((K-I-1), IKOM(I+1), ISW1) .EQ. 0) IESW1 = .TRUE. 'ENDIF' 'IF' (ICOMPA((K-I-1), IKOM(I+1), ISW2) .EQ. 0) IESW2 = .TRUE. 'ENDIF' 'IF' (ICOMPA((K-I-1), IKOM(I+1), ISW3) .EQ. 0) IESW3 = .TRUE. 'ENDIF' 'IF' (ICOMPA((K-I-1), IKOM(I+1), ISW1) .NE. 0 .AND. 1 ICOMPA((K-I-1), IKOM(I+1), ISW2) .NE. 0 .AND. 1 ICOMPA((K-I-1), IKOM(I+1), ISW3) .NE. 0) WRITE(5, 108)IEXT 'QUIT' 'ENDIF' I = K 'ENDDO' C C SWITCHARNA TYCKS VARA OK - HUR [R DET MED EXTENSIONS? C ILAN = IFILLAN I = 0 J = 1 'WHILE' (J .LE. ILAN) 'IF' (IKOM(J) .EQ. '.') I = J 'BREAK' 'ENDIF' J = J + 1 'ENDDO' 'IF' (I .NE. 0) 'IF' ((ILAN - I) .GT. 3 .OR. (ILAN - I) .LT. 1) WRITE(5,101)IEXT 'QUIT' 'ENDIF' CALL MOVE01(ILAN, IKOM, IFIL) 'ELSE' CALL MOVE01(ILAN, IKOM, IFIL) CALL MOVE01(1, '.', IFIL(ILAN + 1)) ILAN = ILAN + 1 CALL MOVE01(3, IEXT, IFIL(ILAN + 1)) ILAN = ILAN + 3 'ENDIF' 'ADMIT' < SYNTAX FEL ISYNTAX = .TRUE. 'ENDPOSIT' RETURN END