SUBROUTINE AUSDRUCK 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 INTEGER TPUNKT I=PUNKT(1) CALL ERSETZEN(0,1) CALL EINKELLERN(I,1) WHILE(GPUNKT.NE.0) GOTO (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17),GPUNKT 1 CALL ERSETZEN(2,1) @F5E CALL EINKELLERN(4,1) CALL EINKELLERN(6,1) GOTO 199 2 IF (SYM.EQ.68.OR.SYM.EQ.51) @"OR","AND" F5E REST CALL GETSYM CALL EINKELLERN(SYM,4) CALL ERSETZEN(3,1) CALL EINKELLERN(4,1) CALL EINKELLERN(6,1) ELSE CALL AUSKELLERN(1) ENDIF GOTO 199 3 I1=PUNKT(5) @F5E REST 2 CALL AUSKELLERN(5) I2=PUNKT(5) I3=PUNKT(4) CALL AUSKELLERN(4) IF (I1.NE.1.OR.I2.NE.1) CALL FATAL(135) IF (SYM.EQ.68.OR.SYM.EQ.51) @"OR","AND" CALL GETSYM CALL EINKELLERN(SYM,4) CALL EINKELLERN(4,1) CALL EINKELLERN(6,1) ELSE CALL AUSKELLERN(1) ENDIF GOTO 199 4 IF (SYM.GE.12.AND.SYM.LE.17) @F4E REST CALL EINKELLERN(SYM,4) CALL GETSYM CALL ERSETZEN(5,1) CALL EINKELLERN(6,1) ELSE CALL AUSKELLERN(1) ENDIF GOTO 199 5 I1=PUNKT(5) @F4E REST2 CALL AUSKELLERN(5) I2=PUNKT(5) I3=PUNKT(4) CALL AUSKELLERN(4) IF (I1.EQ.I2) CALL ERSETZEN(1,5) ELSE CALL FATAL(129) ENDIF IF (SYM.GE.12.AND.SYM.LE.17) CALL EINKELLERN(SYM,4) CALL GETSYM CALL EINKELLERN(6,1) ELSE CALL AUSKELLERN(1) ENDIF GOTO 199 6 IF (SYM.EQ.8.OR.SYM.EQ.6) @"+","-" F3E CALL EINKELLERN(SYM,4) CALL GETSYM ENDIF CALL ERSETZEN(7,1) CALL EINKELLERN(9,1) CALL EINKELLERN(11,1) GOTO 199 7 IF(.NOT.LEER(4)) IF(PUNKT(4).EQ.8.OR.PUNKT(4).EQ.6) IF(PUNKT(5).NE.2.AND.PUNKT(5).NE.3) CALL FATAL(105) ENDIF CALL AUSKELLERN(4) ENDIF ENDIF IF (SYM.EQ.8.OR.SYM.EQ.6) @F3E REST CALL EINKELLERN(SYM,4) CALL GETSYM CALL ERSETZEN(8,1) CALL EINKELLERN(9,1) CALL EINKELLERN(11,1) ELSE CALL AUSKELLERN(1) ENDIF GOTO 199 8 I1=PUNKT(5) @F3E REST2 CALL AUSKELLERN(5) I2=PUNKT(5) IF ((I1.EQ.2.OR.I1.EQ.3).AND.(I2.EQ.2.OR.I2.EQ.3)) IF (I1.NE.I2) CALL ERSETZEN(3,5) ELSE CALL FATAL(134) ENDIF IF (SYM.EQ.8.OR.SYM.EQ.6) CALL EINKELLERN(SYM,4) CALL GETSYM CALL EINKELLERN(9,1) CALL EINKELLERN(11,1) ELSE CALL AUSKELLERN(1) ENDIF GOTO 199 9 IF (SYM.EQ.9.OR.SYM.EQ.22.OR.SYM.EQ.56.OR.SYM.EQ.64) @F2E REST CALL EINKELLERN(SYM,4) CALL GETSYM CALL ERSETZEN(10,1) CALL EINKELLERN(11,1) ELSE CALL AUSKELLERN(1) ENDIF GOTO 199 10 I1=PUNKT(5) @F2E REST2 CALL AUSKELLERN(5) I2=PUNKT(5) I3=PUNKT(4) CALL AUSKELLERN(4) B=(I1.NE.2.AND.I1.NE.3).OR.(I2.NE.2.AND.I2.NE.3) IF (B) CALL FATAL(134) IF (I3.EQ.8) @"*" IF (I1.NE.I2) CALL ERSETZEN(3,5) ENDIF ELSE IF (I3.EQ.22) @"/" CALL ERSETZEN(3,5) ELSE IF (I3.EQ.56.OR.I3.EQ.64) @DIV, MOD IF (I1.NE.2.OR.I2.NE.2) CALL FATAL(134) ENDIF ENDIF ENDIF CALL ERSETZEN(9,1) GOTO 199 11 IF (SYM.EQ.1) @F1E INKI=INKITUM(IDENT) CALL GETSYM IF (INKI.EQ.0) CALL FATAL(104) B=KITUM(INKI,2).EQ.2 IF (B) CALL EINKELLERN(KITUM(INKI,3),5) CALL AUSKELLERN(1) GOTO 199 ENDIF B=KITUM(INKI,2).EQ.5 IF (B) CALL EINKELLERN(KITUM(INKI,3),5) CALL ERSETZEN(15,1) @VARIABLE REST GOTO 199 ENDIF B=KITUM(INKI,2).EQ.7 IF (B) CALL EINKELLERN(KITUM(INKI,3),5) CALL AUSKELLERN(1) CALL EINKELLERN(0,6) @ZETA CALL EINKELLERN(INKI,3) IF (SYM.EQ.11) @"(" CALL GETSYM CALL EINKELLERN(12,1) CALL EINKELLERN(1,1) CALL AUFADDIEREN(1,6) ELSE CALL PLIST ENDIF GOTO 199 ENDIF CALL FATAL(103) ENDIF IF (SYM.EQ.66) @NOT CALL GETSYM CALL ERSETZEN(14,1) CALL EINKELLERN(11,1) GOTO 199 ENDIF IF (SYM.EQ.11) @"(" CALL GETSYM CALL ERSETZEN(13,1) CALL EINKELLERN(1,1) GOTO 199 ENDIF IF (SYM.LE.5.AND.SYM.GE.2) CALL SCONST CALL AUSKELLERN(1) CALL AUSKELLERN(4) GOTO 199 ENDIF CALL FATAL(6) 12 IF (SYM.EQ.7) @F1E REST a CALL GETSYM CALL AUFADDIEREN(1,6) CALL EINKELLERN(PUNKT(5),7) CALL AUSKELLERN(5) CALL EINKELLERN(1,1) GOTO 199 ENDIF IF (SYM.EQ.10) @")" CALL GETSYM ELSE CALL FEHL(4) ENDIF CALL PLIST CALL AUSKELLERN(1) GOTO 199 13 IF(SYM.EQ.10) @")" @F1E REST b CALL GETSYM ELSE CALL FEHL(4) ENDIF CALL AUSKELLERN(1) GOTO 199 14 B=PUNKT(5).NE.1 @F1E REST C IF (B) CALL FATAL(135) CALL AUSKELLERN(1) GOTO 199 15 I1=TTAB(TZ(PUNKT(5))) GOTO(150,150,150,150,151,152),I1 150 CALL AUSKELLERN(1) @STAND.-TYP IF (SYM.EQ.18) CALL FATAL(138) @"[" IF (SYM.EQ.21) CALL FATAL(140) @"." GOTO 199 151 IF (SYM.EQ.21) CALL FATAL(140) @ARRAY-VAR! IF (SYM.EQ.18) @"[" CALL GETSYM CALL ERSETZEN(16,1) CALL EINKELLERN(1,1) ELSE CALL AUSKELLERN(1) ENDIF GOTO 199 152 IF (SYM.EQ.18) CALL FATAL(188) @RECORD-VAR! IF (SYM.EQ.21) @"." CALL GETSYM IF (SYM.NE.1) CALL FATAL(2) I1 = TZ(PUNKT(5))+2 I2 = I1-1+TTAB(I1-1) DO 111 TZEIGER=I1,I2 B=KITUM(TTAB(TZEIGER),1).EQ.IDENT IF (B) GOTO 112 111 CONTINUE CALL FATAL(152) 112 CALL ERSETZEN(KITUM(TTAB(TZEIGER),3),5) @TAU CALL GETSYM ELSE CALL AUSKELLERN(1) ENDIF GOTO 199 16 IF(SYM.EQ.25) @".." TPUNKT=PUNKT(5) @TAU @VAR REST 2 CALL AUSKELLERN(5) B=TPUNKT.NE.TTAB(TZ(PUNKT(5))+3) IF(B) CALL FATAL(139) CALL GETSYM CALL ERSETZEN(17,1) CALL EINKELLERN(1,1) ELSE CALL ERSETZEN(17,1) ENDIF GOTO 199 17 TPUNKT=PUNKT(5) @VAR REST 3 CALL AUSKELLERN(5) B=TPUNKT.NE.PUNKT(5) IF (B) CALL FATAL(139) IF (SYM.EQ.7) @"," SYM=18 @"[" CALL ERSETZEN(15,1) CALL ERSETZEN(TTAB(TZ(PUNKT(5))+2),2) @TAU GOTO 199 ENDIF IF (SYM.EQ.19) @"]" CALL GETSYM CALL ERSETZEN(15,1) CALL ERSETZEN(TTAB(TZ(PUNKT(5))+2),5) @TAU GOTO 199 ENDIF CALL FATAL(12) 199 CONTINUE ENDWHILE CALL AUSKELLERN(1) RETURN END