C+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC SUBROUTINE SAT004(IDATE, ITIME, ISATLAN, ISATFIL, IPAGESIZE, IRAD, * ISIDA, ILSTLAN, ILINTEC, ILINE, ICMDTEC, ICMDUT, IMETKOM, * 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 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) LOGICAL*1 ITIME(8) INTEGER IPAGESIZE INTEGER ISIDA INTEGER IRAD C C VARIABLER SOM ANV[NDES 1 G]NG/FIL C LOGICAL*1 ISATFIL(30) INTEGER ISATLAN INTEGER ILSTLAN C C VARIABLER SOM ANV[NDS 1 G]NG/BEHANDLAD RAD C LOGICAL*1 IKOMMEN(255) INTEGER IKOMLAN LOGICAL*1 ILINE(255) INTEGER ILINTEC LOGICAL*1 ICMDUT(255) INTEGER ICMDTEC LOGICAL*1 IRCMDUT(255) INTEGER IEXIT C C VARIABLER SOM ANV[NDS VID STRUKTURERINGEN C LOGICAL*1 IFNUTT(1) DATA IFNUTT/39/ LOGICAL*1 IMETKOM(10) INTEGER IMET1POS C INTEGER IMET2POS < POSITION P] ANDRA FNUTT C C R[KNARE INTEGER I INTEGER J 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 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C STYRSEKTION C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C IKOMLAN=0 CALL CHANGE(,' ',IMETKOM,10) CALL CHANGE(,' ',ICMDUT,255) CONTINUE IF(.NOT. (ILINE(9).EQ.IFNUTT(1).AND.ILINE(1).NE.';' *.AND.ILINE(1).NE.'.'))GOTO 30016 IMET1POS=9 C IMET2POS=0 J=1 20000 IF(.NOT. (J.LE.11))GOTO 20001 IF(.NOT. (ILINE(IMET1POS+J).EQ.IFNUTT(1)))GOTO 30080 IMET2POS=J GOTO 20001 30080 CONTINUE 30143 CONTINUE J=J+1 GOTO 20000 20001 CONTINUE IF(.NOT. (IMET2POS .NE.0))GOTO 30144 IMET2POS=IMET2POS+9 IF(.NOT. ((IMET2POS - IMET1POS - 1) .LE. 10))GOTO 30208 CALL MOVE01((IMET2POS-IMET1POS-1),ILINE(IMET1POS+1),IMETKOM) IF (ICOMPA(10,IMETKOM,'POSIT ').EQ.0) GOTO 29000 IF (ICOMPA(10,IMETKOM,'ADMIT ').EQ.0) GOTO 29000 IF (ICOMPA(10,IMETKOM,'ENDPOSIT ').EQ.0) GOTO 29000 IF (ICOMPA(10,IMETKOM,'QUIT ').EQ.0) GOTO 29000 IF (ICOMPA(10,IMETKOM,'QUITIF ').EQ.0) GOTO 29000 IF (ICOMPA(10,IMETKOM,'WHILE ').EQ.0) GOTO 29000 IF (ICOMPA(10,IMETKOM,'ENDDO ').EQ.0) GOTO 29000 IF (ICOMPA(10,IMETKOM,'BREAK ').EQ.0) GOTO 29000 IF (ICOMPA(10,IMETKOM,'BREAKIF ').EQ.0) GOTO 29000 IF (ICOMPA(10,IMETKOM,'IF ').EQ.0) GOTO 29000 IF (ICOMPA(10,IMETKOM,'ELSE ').EQ.0) GOTO 29000 IF (ICOMPA(10,IMETKOM,'ENDIF ').EQ.0) GOTO 29000 IF (ICOMPA(10,IMETKOM,'CASE ').EQ.0) GOTO 29000 IF (ICOMPA(10,IMETKOM,'WHEN ').EQ.0) GOTO 29000 IF (ICOMPA(10,IMETKOM,'OTHER ').EQ.0) GOTO 29000 IF (ICOMPA(10,IMETKOM,'ENDCASE ').EQ.0) GOTO 29000 IF (ICOMPA(10,IMETKOM,'PERFORM ').EQ.0) GOTO 29000 IF (ICOMPA(10,IMETKOM,'SECTION ').EQ.0) GOTO 29000 IF (ICOMPA(10,IMETKOM,'ENDSECT ').EQ.0) GOTO 29000 IF (ICOMPA(10,IMETKOM,'PAGE ').EQ.0) GOTO 29000 IF (ICOMPA(10,IMETKOM,'ELSIF ').EQ.0) GOTO 29000 30208 CONTINUE 30271 CONTINUE GOTO 30207 30144 CONTINUE IF(.NOT. (IRAD .GE. IPAGESIZE))GOTO 30272 CALL SAT007(IDATE, ITIME, ISATLAN, ISATFIL, * IRAD, ISIDA, ILSTLAN) 30272 CONTINUE 30335 CONTINUE IF(.NOT. (ILSTLAN.GT.0))GOTO 30336 WRITE(3,109) IRAD = IRAD + 1 30336 CONTINUE 30399 CONTINUE IFELANT=IFELANT+1 30206 CONTINUE 30207 CONTINUE 30016 CONTINUE 30079 CONTINUE CALL CHANGE(,' ',IMETKOM,10) CALL MOVE01((ILINTEC-1),ILINE,ICMDUT) ICMDTEC=ILINTEC C C GOTO 29001 29000 CONTINUE CALL MOVE01((ILINTEC-IMET2POS-1),ILINE(IMET2POS+1),ICMDUT(9)) ICMDTEC=9+ILINTEC-IMET2POS-1 I=0 J=1 20002 IF(.NOT. (J.LE.ICMDTEC))GOTO 20003 IF(.NOT. (ICMDUT(J).EQ.'!'))GOTO 30400 I=J GOTO 20003 30400 CONTINUE 30463 CONTINUE J=J+1 GOTO 20002 20003 CONTINUE C IF(.NOT. (I.NE.0))GOTO 30464 IK=I I=I-1 20004 IF(.NOT.(ICMDUT(I).EQ.' '))GOTO 20005 I=I-1 GOTO 20004 20005 CONTINUE I=I+1 CALL MOVE01((ICMDTEC-IK),ICMDUT(IK),IKOMMENT(1)) IKOMLAN=ICMDTEC-IK ICMDTEC=I 30464 CONTINUE 30527 CONTINUE 29001 CONTINUE C IF(.NOT. (ILINE(1).NE.';'.AND.ILINE(1).NE.'.'))GOTO 30528 CALL CHANGE(,' ',IRCMDUT,255) CALL MOVE01(8,ICMDUT,IRCMDUT) I=9 20006 IF(.NOT. (ICMDUT(I).EQ.' '.AND.I .LE. ICMDTEC))GOTO 20007 I=I+1 GOTO 20006 20007 CONTINUE CALL MOVE01((255+1-I),ICMDUT(I),IRCMDUT(9)) CALL MOVE01(255,IRCMDUT,ICMDUT) ICMDTEC=ICMDTEC+9-I 30528 CONTINUE 30591 CONTINUE C IF(.NOT. (ICOMPA(5, '.EXIT', ICMDUT(9)) .EQ. 0))GOTO 30592 IEXIT = IEXIT + 1 30592 CONTINUE 30655 CONTINUE C RETURN END