C+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC SUBROUTINE SAT004(IDATE, ITIME, ISATLAN, ISATFIL, IPAGESIZE, IRAD, 1 ISIDA, ILSTLAN, ILINTEC, ILINE, ICMDTEC, ICMDUT, IMETKOM, 1 IKOMLAN, IKOMMENT, IFELANT, IEXIT) 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 SAT-KOMMANDO OCH KONVERTERAR ]TERST]ENDE TECKEN FR]N C ILINE TILL ICMDUT. LAGRAR EV. KOMMENTARER I IKOMMENT. C C INDATA: C IDATE - AKTUELLT DATUM C ITIM - AKTUELL TID C ISATLAN - ANTAL TECKEN I ISATFIL C ISATFIL - FILNAMN P] SATFIL C IPAGESIZE - MAXIMALT ANTAL RADER/SIDA C ILSTLAN - ANTAL TECKEN I ILSTFIL C ILINTEC - N[STA LEDIGA POS I ILINE C ILINE - TECKEN FR]N TIDIGARE INL[SNING C C UTDATA: C ICMDTEC - N[STA LEDIGA POS I ICMDUT C ICMDUT - RAD TILL CMDFIL C IMETKOM - SAT-KOMMANDO - BLANKT OM INGET SATKOMMANDO C IKOMLAN - ANTAL TECKEN I IKOMMENT C IKOMMENT - BUFFERTPLATS F\R KOMMENTAR (EFTER !-TECKEN) C C IN/UTDATA: C IRAD - ANTALET UTSKRIVNA RADER P] AKTUELL SIDA C ISIDA - AKTUELL SIDA C IFELANT - ANTAL UPPT[CKTA FEL C IEXIT - ANTAL UPPT[CKTA .EXIT C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C 'PAGE' CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C INTERNA VARIABLER C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C FELHANTERING C INTEGER IFELANT < ANTAL FEL C C VARIABLER SOM ANV[NDS 1 G]NG/SIDA C LOGICAL*1 IDATE(9) < DATUM LOGICAL*1 ITIME(8) < TID INTEGER IPAGESIZE < ANTAL RADER / SIDA INTEGER ISIDA < AKTUELL SIDA INTEGER IRAD < ANTALET TRYCKTA RADER C C VARIABLER SOM ANV[NDES 1 G]NG/FIL C LOGICAL*1 ISATFIL(30) < FILNAMN SAT FIL INTEGER ISATLAN < ANTALET TECKEN I ISATFIL INTEGER ILSTLAN < ANTALET TECKEN I ILSTFIL C C VARIABLER SOM ANV[NDS 1 G]NG/BEHANDLAD RAD C LOGICAL*1 IKOMMEN(255) < KOMMENTAR FR]N INFIL INTEGER IKOMLAN < ANTALET TECKEN P] IKOMMEN LOGICAL*1 ILINE(255) < KONVERTERAD RAD FR]N INFIL INTEGER ILINTEC < N[STA LEDIGA POS I ILINE LOGICAL*1 ICMDUT(255) < UTRAD TILL CMD-FIL INTEGER ICMDTEC < N[STA LEDIGA POS I ICMDUT LOGICAL*1 IRCMDUT(255) < RES. BUFFERT UTRAD TILL CMD-FIL INTEGER IEXIT < ANTAL UPPT[CKTA .EXIT C C VARIABLER SOM ANV[NDS VID STRUKTURERINGEN C LOGICAL*1 IFNUTT(1) < ASCII FNUTT DATA IFNUTT/39/ < SE OVAN LOGICAL*1 IMETKOM(10) < META-KOMMANDO INTEGER IMET1POS < POSITION P] F\RSTA FNUTT C INTEGER IMET2POS < POSITION P] ANDRA FNUTT C C R[KNARE INTEGER I < R[KNARE INTEGER J < R[KNARE 'PAGE' CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C FORMAT C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C FORMATSATSER 1 - 99 RESERVERADE F\R INPUT-OUTPUT FORMAT C 2 FORMAT(255A1) C C FORMATSATSER 100 - 199 RESERVERADE F\R FELUTSKRIFTER C 109 FORMAT(1X,'***SYNTAX ERROR ON NEXT LINE***') C 'PAGE' CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C STYRSEKTION C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C IKOMLAN=0 CALL CHANGE(,' ',IMETKOM,10) CALL CHANGE(,' ',ICMDUT,255) 'POSIT' < EJ SATKOMMANDO 'IF' (ILINE(9).EQ.IFNUTT(1).AND.ILINE(1).NE.';' 1.AND.ILINE(1).NE.'.') IMET1POS=9 C IMET2POS=0 J=1 'WHILE' (J.LE.11) 'IF' (ILINE(IMET1POS+J).EQ.IFNUTT(1)) IMET2POS=J 'BREAK' 'ENDIF' J=J+1 'ENDDO' 'IF' (IMET2POS .NE.0) IMET2POS=IMET2POS+9 'IF' ((IMET2POS - IMET1POS - 1) .LE. 10) CALL MOVE01((IMET2POS-IMET1POS-1),ILINE(IMET1POS+1),IMETKOM) 'QUITIF'(ICOMPA(10,IMETKOM,'POSIT ').EQ.0) 'QUITIF'(ICOMPA(10,IMETKOM,'ADMIT ').EQ.0) 'QUITIF'(ICOMPA(10,IMETKOM,'ENDPOSIT ').EQ.0) 'QUITIF'(ICOMPA(10,IMETKOM,'QUIT ').EQ.0) 'QUITIF'(ICOMPA(10,IMETKOM,'QUITIF ').EQ.0) 'QUITIF'(ICOMPA(10,IMETKOM,'WHILE ').EQ.0) 'QUITIF'(ICOMPA(10,IMETKOM,'ENDDO ').EQ.0) 'QUITIF'(ICOMPA(10,IMETKOM,'BREAK ').EQ.0) 'QUITIF'(ICOMPA(10,IMETKOM,'BREAKIF ').EQ.0) 'QUITIF'(ICOMPA(10,IMETKOM,'IF ').EQ.0) 'QUITIF'(ICOMPA(10,IMETKOM,'ELSE ').EQ.0) 'QUITIF'(ICOMPA(10,IMETKOM,'ENDIF ').EQ.0) 'QUITIF'(ICOMPA(10,IMETKOM,'CASE ').EQ.0) 'QUITIF'(ICOMPA(10,IMETKOM,'WHEN ').EQ.0) 'QUITIF'(ICOMPA(10,IMETKOM,'OTHER ').EQ.0) 'QUITIF'(ICOMPA(10,IMETKOM,'ENDCASE ').EQ.0) 'QUITIF'(ICOMPA(10,IMETKOM,'PERFORM ').EQ.0) 'QUITIF'(ICOMPA(10,IMETKOM,'SECTION ').EQ.0) 'QUITIF'(ICOMPA(10,IMETKOM,'ENDSECT ').EQ.0) 'QUITIF'(ICOMPA(10,IMETKOM,'PAGE ').EQ.0) 'QUITIF'(ICOMPA(10,IMETKOM,'ELSIF ').EQ.0) 'ENDIF' 'ELSE' < FEL 'IF' (IRAD .GE. IPAGESIZE) CALL SAT007(IDATE, ITIME, ISATLAN, ISATFIL, 1 IRAD, ISIDA, ILSTLAN) < SIDBYTE 'ENDIF' 'IF' (ILSTLAN.GT.0) < OPEN UTFIL LST WRITE(3,109) < SYNTAX ERROR ON NEXT LINE IRAD = IRAD + 1 'ENDIF' IFELANT=IFELANT+1 'ENDIF' 'ENDIF' CALL CHANGE(,' ',IMETKOM,10) CALL MOVE01((ILINTEC-1),ILINE,ICMDUT) ICMDTEC=ILINTEC C C 'ADMIT' < SATKOMMANDO CALL MOVE01((ILINTEC-IMET2POS-1),ILINE(IMET2POS+1),ICMDUT(9)) ICMDTEC=9+ILINTEC-IMET2POS-1 I=0 J=1 'WHILE' (J.LE.ICMDTEC) 'IF' (ICMDUT(J).EQ.'!') I=J 'BREAK' 'ENDIF' J=J+1 'ENDDO' C 'IF' (I.NE.0) IK=I < SPARA POS TILL '!' I=I-1 'WHILE'(ICMDUT(I).EQ.' ') I=I-1 'ENDDO' I=I+1 CALL MOVE01((ICMDTEC-IK),ICMDUT(IK),IKOMMENT(1)) IKOMLAN=ICMDTEC-IK ICMDTEC=I 'ENDIF' 'ENDPOSIT' C 'IF' (ILINE(1).NE.';'.AND.ILINE(1).NE.'.') CALL CHANGE(,' ',IRCMDUT,255) CALL MOVE01(8,ICMDUT,IRCMDUT) I=9 'WHILE' (ICMDUT(I).EQ.' '.AND.I .LE. ICMDTEC) I=I+1 'ENDDO' CALL MOVE01((255+1-I),ICMDUT(I),IRCMDUT(9)) CALL MOVE01(255,IRCMDUT,ICMDUT) ICMDTEC=ICMDTEC+9-I 'ENDIF' C 'IF' (ICOMPA(5, '.EXIT', ICMDUT(9)) .EQ. 0) < EXIT IEXIT = IEXIT + 1 'ENDIF' C RETURN END