1000 A=4000:GOTO 20:REM UMWELT-DATEN 1010 GOTO 8000 1099 REM === KALENDERBERECHNUNG === 1100 JH=JJ:IF JH<100 THEN JH=JH+1900 1110 TH=TT:IF MM>=3 THEN 1130 1120 TH=TH+MM:IF JJ/4<>INT(JJ/4)THEN TH=TH+1 1130 KT=INT(JH*365.25)-INT((13-MM)*30.6+.5)+TH+6 1140 KT=KT-7*INT(KT/7):IF KT=0 THEN KT=7 1150 RETURN 1199 REM === DATEIARBEIT === 1200 SR=JJ:GOSUB 300:NF$="umw"+SR$ 1210 SR=MM:GOSUB 300:NF$=NF$+SR$:RETURN 1220 SR$="0=BASICODE 1=Kassette 2=Diskette":GOSUB 150 1230 GOSUB 210:IF (IN<>88)AND((IN<48)OR(IN>50))THEN 1230 1232 IF IN=88 THEN RETURN 1240 IF IN=49 THEN NF=NF+2 1250 IF IN=50 THEN NF=NF+4:GOSUB 20000 1260 RETURN 1299 REM === MONATSDATEI AUSGEBEN === 1300 GOSUB 100:PRINT " * * Dateiausgabe * *":PRINT 1310 NF=1:GOSUB 1200:GOSUB 1220:I=1:IF IN=88 THEN RETURN 1312 GOSUB 500 1320 FOR J=0 TO 4:SR=D(I,J):GOSUB 300:GOSUB 560:NEXT J 1330 IF I<31 THEN I=I+1:GOTO 1320 1340 GOSUB 580:RETURN 1350 GOSUB 100:PRINT " > > Dateieingabe < <":PRINT 1360 NF=0:GOSUB 1200:GOSUB 1220:I=1:IF IN=88 THEN RETURN 1362 GOSUB 500 1370 FOR J=0 TO 4:GOSUB 540:D(I,J)=VAL(IN$):NEXT J 1380 IF I<31 THEN I=I+1:IF IN=0 THEN 1370 1390 GOSUB 580:RETURN 1400 INPUT "Eingabe Datum (tt.mm.jj) :";D$ 1410 IF LEN(D$)<>8 THEN 1400 1420 TT=VAL(LEFT$(D$,2)) 1430 MM=VAL(MID$(D$,4,2)) 1440 JJ=VAL(MID$(D$,7,2)):RETURN 1450 READ M:IF M=0 THEN RETURN 1460 READ HO,VE:IF M=1 THEN GOSUB 620:GOTO 1450 1470 GOSUB 630:GOTO 1450 1500 RESTORE 25100:GOSUB 1450 1510 FOR I=.2 TO .95 STEP .05:HO=I:FOR J=.15 TO .51 STEP .05 1520 VE=J:GOSUB 620:NEXT J:NEXT I 1530 FOR I=.2 TO .95 STEP .0125:HO=I:VE=.54:GOSUB 620 1540 VE=.66:GOSUB 620:VE=.78:GOSUB 620:VE=.87:GOSUB 620 1550 NEXT I:HO=0:VE=.08:SR$="Temp.":GOSUB 650 1560 HO=.12:VE=.12:SR$="20":GOSUB 650 1570 HO=.12:VE=.17:SR$="10":GOSUB 650 1580 HO=.12:VE=.22:SR$=" 0":GOSUB 650 1590 HO=.09:VE=.27:SR$="-10":GOSUB 650 1600 HO=0:VE=.32:SR$="Druck":GOSUB 650 1610 HO=.06:VE=.37:SR$="1020":GOSUB 650 1620 HO=.06:VE=.42:SR$="1000":GOSUB 650 1630 HO=.09:VE=.47:SR$="980":GOSUB 650 1632 HO=0:VE=.57:SR$="SO2":GOSUB 650 1640 HO=.06:VE=.52:SR$="1800":GOSUB 650 1645 HO=.96:VE=.52:SR$="2":GOSUB 650 1650 HO=.06:VE=.63:SR$="1200":GOSUB 650 1655 HO=.96:VE=.63:SR$="1":GOSUB 650 1660 HO=.09:VE=.75:SR$="600":GOSUB 650 1665 HO=.96:VE=.75:SR$="I":GOSUB 650 1670 HO=.09:VE=.84:SR$="150":GOSUB 650 1690 RETURN 1700 HO=.2+.025*(I-1):IF D(I,0)=0 THEN I=32:RETURN 1710 IF (I=1)OR(R=0)THEN GOSUB 620 1720 IF (I>1)AND(R>0)THEN GOSUB 630 1730 RETURN 1800 J=.9-J/1500:HO=.11+.107*I:VE=.9:GOSUB 620 1810 VE=J:GOSUB 630:HO=.18+.107*I:GOSUB 630 1820 VE=.9:GOSUB 630:RETURN 3000 GOSUB 100:SR$="UMWELT-DATEI Eingabe der Tagesdaten" 3010 GOSUB 150:PRINT 3020 INPUT "Eingabe Datum (tt.mm.jj) :";D$ 3030 IF LEN(D$)<>8 THEN 3020 3040 TT=VAL(LEFT$(D$,2)) 3050 MM=VAL(MID$(D$,4,2)) 3060 JJ=VAL(MID$(D$,7,2)) 3070 IF (LL=0)AND(TT>1)THEN GOSUB 1350:LL=1 3072 FOR I=1 TO 4:D(TT,I)=0:NEXT I 3080 PRINT :GOSUB 1100 3090 PRINT "Wochentag : ";W$(KT);:D(TT,0)=KT 3092 PRINT " (";TT+MM/100;")" 3100 PRINT :INPUT "Temperatur : ";D(TT,1) 3110 PRINT :INPUT "Luftdruck : ";D(TT,2) 3120 PRINT :INPUT "SO2-Mittel : ";D(TT,3) 3130 PRINT :INPUT "SO2-Maximal: ";D(TT,4) 3140 HO=4:VE=22:GOSUB 110 3150 SR$="orrektur/Fortsetzung J/N?":GOSUB 150 3160 GOSUB 210:SR$=IN$:GOSUB 330 3170 IF (SR$="J")AND(TT<31)THEN TT=TT+1:GOSUB 100:GOTO 3080 3180 IF SR$="K" THEN GOSUB 100:GOTO 3080 3190 LL=1:GOSUB 1300:RETURN 4000 GOSUB 100:SR$="UMWELT-DATEI Datenaenderung":GOSUB 150 4010 PRINT :PRINT :IF LL<>0 THEN 4080 4020 GOSUB 1400 4070 GOSUB 1350 4080 IF LL<>0 THEN INPUT "Eingabe Tag im Monat : ";TT 4090 GOSUB 1100:I=KT+TT:I=I-7*INT(I/7):IF I=0 THEN I=7 4100 PRINT :PRINT "Wochentag : ";W$(I):LL=1 4110 PRINT :PRINT "1 = Temperatur : ";D(TT,1) 4120 PRINT :PRINT "2 = Luftdruck : ";D(TT,2) 4130 PRINT :PRINT "3 = SO2-Mittel : ";D(TT,3) 4140 PRINT :PRINT "4 = SO2-Maximum: ";D(TT,4) 4150 PRINT :PRINT "0 = Keine Aenderung" 4160 PRINT :SR$="Ihre Auswahl :":GOSUB 150 4170 GOSUB 210:I=IN-48:IF (I<0)OR(I>4)THEN 4170 4180 IF I>0 THEN PRINT I:PRINT :INPUT "Neuer Wert : ";D(TT,I) 4190 IF I>0 THEN GOSUB 100:GOTO 4090 4200 HO=17:VE=22:GOSUB 110 4210 SR$="Fortsetzung J/N?":GOSUB 150 4220 GOSUB 210:SR$=IN$:GOSUB 330 4230 TT=TT+1:IF SR$="J" THEN GOSUB 100:GOTO 4080 4240 GOSUB 1300:RETURN 4999 REM === MONATSAUSWERTUNG === 5000 IF LL=1 THEN 5100 5010 GOSUB 100:SR$="UMWELT-DATEN Monatsauswertung" 5020 GOSUB 150:PRINT :PRINT 5030 INPUT "Monat der Auswertung (mm/jj) ";D$ 5040 IF LEN(D$)<>5 THEN 5030 5050 MM=VAL(LEFT$(D$,2)):JJ=VAL(MID$(D$,4,2)) 5060 GOSUB 1350 5100 GOSUB 600:HO=0:VE=0 5110 SR$="UMWELT-DATEN Monatsauswertung":GOSUB 650 5120 GOSUB 1500 5130 FOR I=.2 TO .95 STEP .025:VE=.902:HO=I:GOSUB 620:NEXT I 5140 R=1:MT=0:FOR I=1 TO 31:VE=.25-.005*D(I,1) 5150 N=I:GOSUB 1700:MT=MT+D(I,1):NEXT I 5160 MP=0:FOR I=1 TO 31:VE=.45-.0025*(D(I,2)-1000) 5162 R=D(I-1,2):IF D(I,2)=0 THEN R=-1 5170 GOSUB 1700:MP=MP+D(I,2):NEXT I 5180 MS=0:FOR I=1 TO 31:VE=.9-.0002*D(I,3) 5182 R=D(I-1,3):IF D(I,3)=0 THEN R=-1 5190 GOSUB 1700:MS=MS+D(I,3):NEXT I 5200 FOR I=1 TO 31:VE=.9-.0002*D(I,4) 5202 R=D(I-1,4):IF D(I,4)=0 THEN R=-1 5210 GOSUB 1700:NEXT I 5220 VE=.95:HO=.92:SR$="->":GOSUB 650:GOSUB 210 5230 GOSUB 100:SR$="UMWELT-DATEN Monatsauswertung" 5240 GOSUB 150:PRINT :PRINT :PRINT MM;"/";JJ 5250 N=N-1:MT=INT(10*MT/N)/10:MP=INT(MP/N):MS=INT(MS/N) 5260 PRINT :PRINT "Monatsmittel Temperatur : ";MT 5270 PRINT :PRINT "Monatsmittel Luftdruck : ";MP 5280 PRINT :PRINT "Monatsmittel SO2-Belastg: ";MS 5290 IF MS<30 THEN SR$="Bei Ihnen herrscht gute Luft !" 5300 IF (MS>=30)AND(MS<=150)THEN SR$="Das liegt in der Norm" 5310 IF MS>150 THEN SR$="Der Grenzwert ist ueberschritten!" 5320 PRINT :PRINT :GOSUB 150:PRINT 5330 IF MS>600 THEN PRINT "Der SO2-Wert ist stark gefaehrdend" 5340 VE=23:HO=26:GOSUB 110:SR$="":GOSUB 150 5350 GOSUB 210:RETURN 5999 GOSUB 210:GOTO 950 6000 GOSUB 100:SR$="UMWELT-DATEN Jahresauswertung" 6010 GOSUB 150:PRINT :PRINT 6020 INPUT "Erster Monat (mm/jj) :";D$ 6030 IF LEN(D$)<>5 THEN 6020 6040 MM=VAL(LEFT$(D$,2)):JJ=VAL(MID$(D$,4,2)):M1=MM 6050 INPUT "Letzter Monat (mm) :";M2 6060 GOSUB 1200:NF=0:GOSUB 1220:GOSUB 600:HO=0:VE=0 6070 SR$="UMWELT-DATEN Jahresauswertung":GOSUB 650 6080 GOSUB 1500 6090 FOR I=1 TO 11:HO=.2+.0625*I:VE=.91:GOSUB 620:NEXT I 6100 FOR I=1 TO 12:HO=.15+.0625*I:VE=.93 6110 SR=I:GOSUB 300:GOSUB 650:NEXT I 6120 MS=0:K=0:R=0:N=0 6130 GOSUB 500:I=1:J=30.6*(MM-1):IF IN<>0 THEN 6510 6140 FOR L=0 TO 4:GOSUB 540:D(I,L)=VAL(IN$):NEXT L 6150 I=I+1:IF (I<32)AND(D(I-1,0)>0)AND(IN=0)THEN 6140 6160 GOSUB 580:I=0:R=0 6170 HO=.2+2.055E-3*(J+I):VE=.25-.005*D(I,1) 6180 IF R>0 THEN GOSUB 630 6190 IF R=0 THEN GOSUB 620 6200 R=1:I=I+1:IF (I<32)AND(D(I,0)>0)THEN 6170 6210 D(0,1)=D(I-1,1):I=0:R=0 6220 HO=.2+2.055E-3*(J+1):VE=.45-.0025*(D(I,2)-1000) 6230 IF D(I,2)<800 THEN R=-1 6240 IF R=0 THEN GOSUB 620 6250 IF R>0 THEN GOSUB 630 6260 R=R+1:I=I+1:IF (I<32)AND(D(I,0)>0)THEN 6220 6270 D(0,2)=D(I-1,2):I=0:R=0 6280 HO=.2+2.055E-3*(J+I):VE=.9-2E-4*D(I,3) 6290 IF D(I,3)=0 THEN R=-1 6300 IF R=0 THEN GOSUB 620 6310 IF R>0 THEN GOSUB 630 6320 IF R>=0 THEN MS=MS+D(I,3):N=N+1 6330 R=R+1:I=I+1:IF (I<32)AND(D(I,0)>0)THEN 6280 6340 D(0,3)=D(I-1,3):I=1 6350 HO=.2+2.055E-3*(J+I):VE=.9-2E-4*D(I,4) 6360 IF D(I,4)>0 THEN GOSUB 620 6390 R=R+1:I=I+1:IF (I<32)AND(D(I,0)>0)THEN 6350 6400 D(0,4)=D(I-1,4):I=1 6410 IF MM":GOSUB 650 6540 GOSUB 210:LL=0:RETURN 6999 REM === WOCHENAUSWERTUNG === 7000 GOSUB 100:SR$="UMWELT-DATEN SO2-Wochenverlauf" 7010 GOSUB 150:PRINT :PRINT 7020 INPUT "Erster Monat (mm/jj) :";D$ 7030 IF LEN(D$)<>5 THEN 6020 7040 MM=VAL(LEFT$(D$,2)):JJ=VAL(MID$(D$,4,2)):M1=MM 7050 INPUT "Letzter Monat (mm) :";M2 7060 GOSUB 1200:NF=0:GOSUB 1220:GOSUB 600:HO=0:VE=0 7070 SR$="UMWELT-DATEN SO2-Wochenverlauf":GOSUB 650 7080 RESTORE 25200:GOSUB 1450 7090 FOR I=.2 TO .95 STEP .01:HO=I 7100 VE=.8:GOSUB 620:VE=.5:GOSUB 620:NEXT I 7110 VE=.08:HO=.04:SR$="1200":GOSUB 650 7120 VE=.48:HO=.08:SR$="600":GOSUB 650 7130 VE=.78:HO=.08:SR$="150":GOSUB 650 7140 FOR I=1 TO 7:HO=.11+.107*I:VE=.95 7150 SR$=LEFT$(W$(I),2):GOSUB 650:NEXT I 7160 FOR I=0 TO 7:FOR J=0 TO 1:W(I,J)=0:NEXT J:NEXT I 7170 GOSUB 1362 7210 FOR I=1 TO 31:TT=I:GOSUB 1100 7220 IF D(I,3)>0 THEN W(KT,0)=W(KT,0)+1:W(KT,1)=W(KT,1)+D(I,3) 7230 NEXT I:MM=MM+1 7240 IF (MM<=M2)THEN GOSUB 1200:GOTO 7170 7250 FOR I=1 TO 7:IF W(I,0)>0 THEN J=W(I,1)/W(I,0):GOSUB 1800 7260 NEXT I 7480 VE=.96:HO=.92:SR$="->":GOSUB 650 7490 GOSUB 210:RETURN 7990 GOSUB 210:GOTO 950 7999 REM ===HAUPTPROGRAMM 8000 GOSUB 100:DIM D(32,4),M(12),W$(7),W(7,1) 8002 RESTORE 25000 8004 LL=0:FOR I=1 TO 7:READ W$(I):NEXT I 8010 PRINT " ======================================" 8020 PRINT " * * * * * * **** * *****" 8030 PRINT " * * ** ** * * * * *" 8040 PRINT " * * * * * * * *** * *" 8050 PRINT " * * * * * * * * * *" 8060 PRINT " *** * * * * **** **** *" 8070 PRINT " ";:SR$="(C) bidat 1989":GOSUB 150:PRINT 8080 PRINT " **** * ***** **** * *" 8090 PRINT " * * * * * * ** *" 8100 PRINT " * * * * * *** * * *" 8110 PRINT " * * ***** * * * **" 8120 PRINT " **** * * * **** * *" 8130 PRINT " ======================================" 8140 PRINT :SR$="Betriebsarten":GOSUB 150:PRINT 8150 PRINT " 1 = Dateneingabe" 8160 PRINT " 2 = Datenaenderung" 8170 PRINT " 3 = Monatsauswertung" 8180 PRINT " 4 = Jahresauswertung" 8190 PRINT " 5 = SO2-Wochenverlauf" 8200 PRINT " 6 = Hilfsinformationen" 8210 PRINT " 0 = Programmende" 8230 SR$="Ihre Auswahl:":GOSUB 150 8240 GOSUB 210:IF (IN<48)OR(IN>54)THEN 8240 8250 IF IN=48 THEN GOSUB 100:GOTO 950 8260 ON (IN-48)GOSUB 3000,4000,5000,6000,7000,8300 8270 GOSUB 100:GOTO 8010 8300 GOSUB 100:SR$="UMWELT-DATEN HILFSINFORMATION":GOSUB 150 8310 PRINT :PRINT 8320 PRINT "Dieses Programm dient der Speicherung" 8330 PRINT "und Auswertung von Temperatur, Luft-" 8340 PRINT "druck und SO2-Konzentration (Mittel-" 8350 PRINT "und Hoechstwert). Der Grenzwert fuer" 8360 PRINT "SO2 liegt bei 150ug/m^3. Bei 600 ug" 8370 PRINT "ueber 3 Stunden wird die Informations-" 8380 PRINT "stufe, bei 1200 ug bzw. 1800 ug die" 8390 PRINT "Einsatzstufe 1 bzw. 2 ausgeloest." 8400 PRINT "In der Grafik werden SO2-Konzentration," 8410 PRINT "Temperatur und Luftdruck inn einem" 8420 PRINT "Bild dargestellt,um evt. Zusam-" 8430 PRINT "menhaenge sichtbar zu machen." 8440 PRINT "Beim Wochenverlauf wird versucht," 8450 PRINT "eine Abhaengigkeit der SO2-Konzen-" 8460 PRINT "tration vom Wochentag darzustellen." 8470 PRINT "Die Daten koennen sowohl im BASICODE-" 8480 PRINT "als auch rechnerinternen Format abge-" 8490 PRINT "speichert werden." 8570 HO=26:VE=23:GOSUB 110:SR$="ENTER":GOSUB 150:GOSUB 210 8580 RETURN 19999 REM ===DATEISPEZIALBEHANDLUNG=== 20000 IF NF=5 THEN ERASE""+NF$ 20002 RETURN 20010 REM LOESCHEN DER ALTEN DATEI 20011 REM ABHAENGIG VOM RECHNERTYP 25000 DATA "Montag","Dienstag","Mittwoch","Donnerstag" 25010 DATA "Freitag","Samstag","Sonntag" 25100 DATA 1,.2,.1,2,.95,.1,2,.95,.9,2,.2,.9,2,.2,.1 25110 DATA 1,.2,.25,2,.95,.25,1,.2,.45,2,.95,.45,0 25200 DATA 1,.2,.1,2,.95,.1,2,.95,.9,2,.2,.9,2,.2,.1,0 30000 REM PROGRAMMINFO SIEHE BETR.ART 6 30010 REM BEI DISKETTENARBEIT ZEILE 20000 30020 REM RECHNERSPEZIFISCH UEBERARBEITEN 30030 REM HIER MUSS ALTE DATEI GELOESCHT WERDEN. 32000 REM (C) BIDAT 16.12.89 32010 REM AUTOR: BERTHOLD BIENER 32020 REM R.-EYERMANN-RING 4/06 32030 REM DDR 5063 ERFURT 32040 REM ENTWICKELT AUF COMMODORE PLUS4 32050 REM FUER RADIO DDR COMPUTERMAGAZIN