SUBROUTINE ANWEISUNG COMMON NERR,IERRS,LC,CC,DIN,FIN COMMON SYM,IDENT,INUM,RNUM,SLENG,CH,STRING COMMON STACK,BOTTOM,TOP,KITUM,KZEIGER,NIDEK,NZEIGER COMMON IC0,RC0,SC0,P0,I0,T0,GPUNKT COMMON ICZEIGER,RCZEIGER,PZEIGER,IZEIGER,TZEIGER,SCZEIGER COMMON ICTAB,RCTAB,SCTAB,SCZ,PTAB,PZ,ITAB,IZ,TTAB,TZ INTEGER PUNKT,GPUNKT,NPUNKT,INKITUM,INKI,INKI0,INKI1 INTEGER NERR,IERRS(61,3),LC,CC INTEGER SYM,IDENT,INUM,SLENG,CH,STRING(80) INTEGER STACK(200),BOTTOM(10),TOP(10),KITUM(200,4) INTEGER NIDEK(100,2),NZEIGER,IC0,RC0,SC0,P0,I0,T0 INTEGER ICZEIGER,RCZEIGER,PZEIGER,IZEIGER,TZEIGER,SCZEIGER INTEGER ICTAB(200),SCTAB(200),SCZ(50),PTAB(100),PZ(50) INTEGER ITAB(100),IZ(50),TTAB(400),TZ(50) REAL RNUM,RCTAB(50) LOGICAL LEER,DD,B CALL EINKELLERN(-1,1) CALL EINKELLERN(1,1) WHILE (GPUNKT.NE.(-1)) C$ WRITE(1,1)GPUNKT,NPUNKT(2,1),NPUNKT(3,1) C$1 FORMAT('G1PUNKT:',I6,' G2PUNKT:',I6,' G3PUNKT:',I6) GOTO(101,102,103,104,105,106,107,108),GPUNKT 101 IF (SYM.EQ.1) @IDENT INKI=INKITUM(IDENT) IF (INKI.EQ.0) CALL FATAL(104) INKI1=KITUM(INKI,2) IF (INKI1.EQ.7) @FUNCTION-IDENT. CALL GETSYM CALL ERSETZEN(8,1) ELSE IF (INKI1.EQ.5) @VAR.-IDENT. CALL GETSYM CALL ERSETZEN(8,1) CALL EINKELLERN(15,1) @VARIABLENANFANG CALL EINKELLERN(KITUM(INKI,3),5) CALL AUSDRUCK @VARIABLE ELSE IF (INKI1.EQ.6) @PROC.-IDENT. CALL GETSYM CALL EINKELLERN(0,6) @ZETA CALL EINKELLERN(INKI,3) IF(SYM.EQ.11) @"(" SYM=7 @"," WHILE (SYM.EQ.7) @"," CALL GETSYM CALL EINKELLERN(1,1) CALL AUSDRUCK CALL AUFAD(1,6) CALL EINKELLERN(PUNKT(5),7) CALL AUSKELLERN(5) IF(INKI.EQ.26.OR.INKI.EQ.27) @WRITE WHILE(SYM.EQ.24) CALL GETSYM CALL SCONST CALL AUSKELLERN(4) CALL AUSKELLERN(5) ENDWHILE ENDIF ENDWHILE IF (SYM.NE.10) @")" CALL FEHL(4) ELSE CALL GETSYM ENDIF ENDIF CALL PLIST CALL AUSKELLERN(1) ELSE CALL FATAL(103) ENDIF ENDIF ENDIF GOTO 199 ENDIF IF (SYM.EQ.53) @BEGIN CALL GETSYM CALL ERSETZEN(2,1) CALL EINKELLERN(1,1) GOTO 199 ENDIF IF (SYM.EQ.63) @IF CALL GETSYM C$ CALL STEST CALL EINKELLERN(1,1) CALL AUSDRUCK C$ CALL STEST B=PUNKT(5).NE.1 IF (B) CALL FATAL(130) CALL AUSKELLERN(5) IF (SYM.NE.74) @THEN CALL FEHL(52) ELSE CALL GETSYM ENDIF C$ CALL STEST CALL ERSETZEN(3,1) CALL EINKELLLERN(1,1) C$ CALL STEST GOTO 199 ENDIF IF (SYM.EQ.54) @CASE CALL GETSYM CALL EINKELLERN(1,1) CALL AUSDRUCK B=PUNKT(5).EQ.2.OR.PUNKT(5).EQ.4 IF (.NOT.B) CALL FATAL(110) IF (SYM.NE.67) @OF CALL FEHL(8) ELSE CALL GETSYM ENDIF CALL ERSETZEN(4,1) GOTO 199 ENDIF IF(SYM.EQ.79) @WHILE CALL GETSYM CALL EINKELLERN(1,1) CALL AUSDRUCK B=PUNKT(5).NE.1 IF (B) CALL FATAL(130) @TYP BOOLEAN ERWARTET CALL AUSKELLERN(5) IF (SYM.NE.58) @DO CALL FEHL(54) ELSE CALL GETSYM ENDIF GOTO 199 ENDIF IF (SYM.EQ.73) @REPEAT CALL GETSYM CALL ERSETZEN(7,1) CALL EINKELLERN(1,1) GOTO 199 ENDIF IF (SYM.EQ.61) @FOR CALL GETSYM IF (SYM.NE.1) CALL FATAL(2) INKI=INKITUM(IDENT) IF (INKI.EQ.0) CALL FATAL(104) INKI1=KITUM(INKI,2) IF(INKI1.NE.5) CALL FATAL(103) INKI1=KITUM(INKI,3) B=INKI1.EQ.4.OR.INKI1.EQ.2 IF (.NOT.B) CALL FATAL(143) CALL EINKELLERN(INKI1,5) CALL GETSYM B=SYM.EQ.24.OR.SYM.EQ.16.OR.SYM.EQ.20 IF (.NOT.B) CALL FATAL(51) IF (SYM.NE.20) @:= CALL FEHL(51) ELSE CALL GETSYM ENDIF CALL EINKELLERN(1,1) CALL AUSDRUCK B=PUNKT(5).NE.NPUNKT(2,5) IF (B) CALL FATAL(145) CALL AUSKELLERN(5) IF (SYM.NE.75) @TO IF (SYM.NE.57) CALL FATAL(55) @DOWNTO ENDIF CALL GETSYM CALL EINKELLERN(1,1) CALL AUSDRUCK B=PUNKT(5).NE.NPUNKT(2,5) IF (B) CALL FATAL(145) CALL AUSKELLERN(5) IF (SYM.NE.58) @DO CALL FEHL(54) ELSE CALL GETSYM ENDIF GOTO 199 ENDIF CALL FATAL(99) 102 IF(SYM.EQ.23) @";" VERBUND CALL GETSYM CALL EINKELLERN(1,1) GOTO 199 ENDIF IF (SYM.EQ.60) @END CALL GETSYM CALL AUSKELLERN(1) ELSE CALL FEHL(14) B=SYM.NE.1.AND.SYM.NE.53.AND.SYM.NE.63.AND.SYM.NE.54 1.AND.SYM.NE.79.AND.SYM.NE.73.AND.SYM.NE.61 IF(B)CALL FATAL(13) ENDIF GOTO 199 103 IF (SYM.EQ.59) @ELSE IN IF-ANWEISUNG CALL GETSYM CALL ERSETZEN(1,1) ELSE CALL AUSKELLERN(1) ENDIF GOTO 199 104 CALL CONSTANT @FALLANWEISUNG B=PUNKT(5).NE.NPUNKT(2,5) IF (B) CALL FATAL(147) CALL AUSKELLERN(5) @TAU CALL AUSKELLERN(4) WHILE(SYM.EQ.7) @"," CALL GETSYM CALL CONSTANT B=PUNKT(5).NE.NPUNKT(2,5) IF (B) CALL FATAL(147) CALL AUSKELLERN(5) CALL AUSKELLERN(4) ENDWHILE IF(SYM.NE.24) @":" CALL FEHL(5) ELSE CALL GETSYM ENDIF CALL ERSETZEN(5,1) CALL EINKELLERN(1,1) GOTO 199 105 IF (SYM.EQ.23) @";" CASE-FORTSETZUNG CALL GETSYM CALL ERSETZEN(4,1) ELSE IF(SYM.EQ.69) @OTHERS CALL GETSYM IF (SYM.NE.24) @":" CALL FEHL(5) ELSE CALL GETSYM ENDIF CALL ERSETZEN(6,1) CALL EINKELLERN(1,1) ELSE IF(SYM.NE.60) CALL FEHL(14) @";" ODER END ELSE CALL GETSYM CALL AUSKELLERN(1) ENDIF ENDIF ENDIF C$ CALL STEST GOTO 199 106 IF (SYM.NE.60) @END BEI CASE CALL FEHL(13) ELSE CALL GETSYM CALL AUSKELLERN(1) ENDIF GOTO 199 107 IF (SYM.EQ.77) @UNTIL BEI REPEAT-SCHLEIFE CALL GETSYM CALL EINKELLERN(1,1) CALL AUSDRUCK B=PUNKT(5).NE.1 IF(B) CALL FATAL(130) CALL AUSKELLERN(5) CALL AUSKELLERN(1) @GAMMA GOTO 199 ENDIF IF (SYM.NE.23) @";" CALL FEHL(14) B=SYM.NE.1.AND.SYM.NE.53.AND.SYM.NE.63.AND.SYM.NE.54 B=B.AND.SYM.NE.79.AND.SYM.NE.73.AND.SYM.NE.61 IF (B) CALL FATAL(13) ELSE CALL GETSYM ENDIF CALL EINKELLERN(1,1) GOTO 199 108 B=SYM.EQ.20.OR.SYM.EQ.24.OR.SYM.EQ.16 @":=" IN ERGIBTANW. IF (.NOT.B) CALL FATAL(51) IF (SYM.NE.20) @":=" CALL FEHL(51) ELSE CALL GETSYM ENDIF CALL EINKELLERN(1,1) @INITIALISIERUNG FUER AUSDRUCK CALL AUSDRUCK CALL VERGLEICH CALL AUSKELLERN(1) 199 CONTINUE ENDWHILE CALL AUSKELLERN(1) RETURN END