C+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC SUBROUTINE SAT001(ITECKEN, IMCRBUF, ISYNTAX, ICMDLAN, 1 ICMDFIL, ILSTLAN, ILSTFIL, ISATLAN, ISATFIL, ITABMAR, ILSTWAR) 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 TOLKAR KOMMANDO OCH BEST[MMER FILNAMN C C INDATA: C ITECKEN - ANTAL TECKEN I IMCRBUF C IMCRBUF - BUFFERT FR]N MCR ELLER FR]N TERMINAL C C UTDATA: C ISYNTAX - TRUE=SYNTAXFEL FALSE=SYNTAX OK C ICMDLAN - ANTAL TECKEN I ICMDFIL C ICMDFIL - FILNAMN P] CMDFIL C ILSTLAN - ANTAL TECKEN I ILSTFIL C ILSTFIL - FILNAMN P] LSTFIL C ISATLAN - ANTAL TECKEN I ISATFIL C ISATFIL - FILNAMN P] SATFIL C C IN/UTDATA: C ITABMAR - TRUE=TAB.MARKERING FALSE=INGEN TAB.MARKERING C ILSTWAR - TRUE=VARNINGAR P] LISTA FALSE=INGA VARN. P] LISTA C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C 'PAGE' CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C INTERNA VARIABLER C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C FELHANTERING C LOGICAL*1 ISYNTAX < LOGISK BYTE - TRUE FEL SYNTAX C C VARIABLER I SAMBAND MED MCR-UPPSTART C LOGICAL*1 IMCRBUF(80) < BUFFERT VID UPPSTART VIA MCR INTEGER ITECKEN < ANTAL TECKEN I IMCRBUF LOGICAL*1 ISATKOM(30) < KOMMANDO INFIL LOGICAL*1 ICMDKOM(30) < KOMMANDO UTFIL CMD-FIL LOGICAL*1 ILSTKOM(30) < KOMMANDO UTFIL LST-FIL LOGICAL*1 ISATFIL(30) < FILNAMN SAT FIL INTEGER ISATLAN < ANTAL TECKEN I ISATFIL LOGICAL*1 ICMDFIL(30) < FILNAMN CMD FIL INTEGER ICMDLAN < ANTAL TECKEN I ICMDFIL LOGICAL*1 ILSTFIL(30) < FILNAMN LST FIL INTEGER ILSTLAN < ANTAL TECKEN I ILSTFIL C C VARIABLER SOM ANV[NDS 1 G]NG/FIL C LOGICAL*1 ITABMAR < TAB.MARKS =TRUE LOGICAL*1 ILSTWAR < LST.VARNINGAR =TRUE LOGICAL*1 IESW1 < TRUE SW1 FINNS LOGICAL*1 IESW2 < TRUE SW2 FINNS LOGICAL*1 IESW3 < TRUE SW3 FINNS C C VARIABLER SOM ANV[NDS 1 G]NG/BEHANDLAD RAD C INTEGER I < R[KNARE C 'PAGE' CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C FORMAT C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C 100 FORMAT(1X,'NO INPUT FILE!') C 'PAGE' CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C STYRSEKTION C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C CALL CHANGE(,' ',ISATKOM,30) CALL CHANGE(,' ',ICMDKOM,30) CALL CHANGE(,' ',ILSTKOM,30) CALL CHANGE(,' ',ISATFIL,30) CALL CHANGE(,' ',ICMDFIL,30) CALL CHANGE(,' ',ILSTFIL,30) 'PERFORM' A TOLKA KOMMANDO 'PERFORM' B SYNTAXKONTROLL RETURN 'PAGE' CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C A# TOLKA KOMMANDO C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C 'SECTION' A TOLKA KOMMANDO C 'IF' (IMCRBUF(ITECKEN).EQ.13) < 'CR' SIST ITECKEN=ITECKEN-1 'ENDIF' ICMDLAN=0 ILSTLAN=0 ISATLAN=0 I=5 'WHILE' (IMCRBUF(I).NE.','.AND.IMCRBUF(I).NE.'='.AND.I.LE.ITECKEN) 'IF' (IMCRBUF(I).EQ.'[') 'WHILE' (IMCRBUF(I).NE.']'.AND.I.LE.ITECKEN) ICMDKOM(ICMDLAN+1)=IMCRBUF(I) ICMDLAN=ICMDLAN+1 I=I+1 'ENDDO' 'ENDIF' ICMDKOM(ICMDLAN+1)=IMCRBUF(I) ICMDLAN=ICMDLAN+1 I=I+1 'ENDDO' 'IF' (IMCRBUF(I).EQ.','.AND.I.LE.ITECKEN) I=I+1 'ENDIF' 'WHILE' (IMCRBUF(I).NE.'='.AND.I.LE.ITECKEN) ILSTKOM(ILSTLAN+1)=IMCRBUF(I) ILSTLAN=ILSTLAN+1 I=I+1 'ENDDO' I=I+1 'WHILE' (I.LE.ITECKEN) ISATKOM(ISATLAN+1)=IMCRBUF(I) ISATLAN=ISATLAN+1 I=I+1 'ENDDO' C 'ENDSECT' 'PAGE' CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C B# SYNTAXKONTROLL C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C 'SECTION' B SYNTAXKONTROLL C ISYNTAX = .FALSE. 'POSIT' < SYNTAX OK 'IF' (ISATLAN .EQ. 0) < INFIL SAKNAS WRITE(5,100) ISYNTAX = .TRUE. 'QUIT' 'ENDIF' CALL SAT008(ISATLAN, ISATKOM, ' ', ' ', ' ', 'SAT', 1 ISATFIL, IESW1, IESW2, IESW3, ISYNTAX) 'QUITIF' (ISYNTAX) < SYNTAXFEL 'IF' (ICMDLAN .GT. 0) CALL SAT008(ICMDLAN, ICMDKOM, ' ', ' ', ' ', 'CMD', 1 ICMDFIL, IESW1, IESW2, IESW3, ISYNTAX) 'QUITIF' (ISYNTAX) < SYNTAXFEL 'ENDIF' 'IF' (ILSTLAN .GT. 0) CALL SAT008(ILSTLAN, ILSTKOM, 'TM ', '-WR', ' ', 'LST', 1 ILSTFIL, IESW1, IESW2, IESW3, ISYNTAX) 'QUITIF' (ISYNTAX) < SYNTAXFEL 'IF' (IESW1) < SWITCH 1 FINNS ITABMAR = .TRUE. 'ENDIF' 'IF' (IESW2) < SWITCH 2 FINNS ILSTWAR = .FALSE. 'ENDIF' 'ENDIF' 'ADMIT' < SYNTAX FEL 'ENDPOSIT' C 'ENDSECT' END