10 REM *** STATISTISCHE BEWERKINGEN ***
20 DIM  A(370),D(370),E(370),B(15,4),C(10)
30 GOTO 4210
40 :
50 REM ** INITIALISEREN **
60 N=0:T=370:G=-1
70 N$="":F=0:F1=0
80 L=0:S1=1:S2=1
90 FOR I=1 TO T: A(I)=0 :NEXT I
100 RETURN
110 :
120 REM ** KOP **
130 PRINT CHR$(27)"E"
140 PRINT "*** STATISTISCHE BEWERKINGEN ***"
150 PRINT F$;                      :REM BEWERKINGSNAAM
160 PRINT TAB(30)"BESTANDSNAAM     :  ";N$
170 PRINT TAB(30)"AANTAL WAARDEN    :";N
180 PRINT
190 RETURN
200 :
210 REM ** CONTROLE **
220 F$=" -CONTROLE- ":GOSUB 130 :REM KOP
230 PRINT"GEGEVENS NOG NIET OPGESLAGEN OP SOURCE DISK !"
240 B$="NOG SCHRIJVEN " :GOSUB 290   :REM JA/NEE
250 IF S=1 THEN GOSUB 560
270 RETURN
280 REM *** JA/ NEE ***
290 PRINT B$+"  <JA/NEE> ";
300 INPUT L$:L$=LEFT$(L$,1):S=0
310 IF L$="J" THEN S=1
320 IF L$="N" THEN S=2
330 IF S=0 THEN 290
340 RETURN
350 :
360 REM ** DISK INLEZEN ***
370 F$="-INLEZEN DISK-"  :   GOSUB 130   :REM KOP
380 :
390 IF S=2 THEN 530
400 OPEN "I",1,"STATPA"
410 INPUT #1,N$,N,F
420 IF N=0 THEN 460
430 FOR I=1 TO N
440 INPUT #1,A(I)
450 NEXT I
460 IF F=0 THEN 510
470 REM ** FREQUENTIE INTERVALLEN **
480 FOR I=1 TO F
490 INPUT #1,B(I,1)
500 NEXT I
510 G=0
520 CLOSE
530 RETURN
540 :
550 REM ** NAAR DISK SCHRIJVEN ***
560 F$="SAVE BESTAND NAAR DISK ":GOSUB 130
570 B$="OPSLAAN OP SOURCE DISK ? " :GOSUB 290
580 IF S=2 THEN 710
590 OPEN "O",1, "STATPA"
600 PRINT #1,N$;",";N",";F
610 IF N=0 THEN 650
620 FOR I=1 TO N
630 PRINT #1,A(I)                 :REM DATA SCHRIJVEN
640 NEXT I
650 IF F=0 THEN 690
660 FOR I=1 TO F
670 PRINT#1,B(I,1)              :REM KLASSEN SCHRIJVEN
680 NEXT I
690 G=0
700 CLOSE
710 RETURN
720 :
730 REM ** UITSLUITEN **
740 F$="-UITSLUITEN-"  :H=0
750 IF L>0 THEN 900
760 GOSUB 130     :REM KOP
770 B$="WILT U WAARDEN UITSLUITEN "    :GOSUB 290
780 L=0
790 IF S=2 THEN 1000
800 REM *** UIT TE SLUITEN WAARDEN **
810 GOSUB 130    :REM KOP
820 FOR I=1 TO 10
830 PRINT"UIT TE SLUITEN WAARDE ";I;"  <STOP = -9999>";
840 INPUT C(I)
850 IF C(I)<> -9999 THEN 870
860 L=I-1:H=1:I=10
870 NEXT I
880 IF H=0 THEN L=10
890 REM ** UITVOER UIT TE SLUITEN WAARDEN **
900 GOSUB 130   : REM KOP
910 PRINT" UIT TE SLUITEN WAARDEN :"
920 IF L=0 THEN 960
930 FOR I=1 TO L
940 PRINT C(I);"/";
950 NEXT I
960 PRINT
970 PRINT"-----------------------------------------------------"
980 B$="WILT U WIJZIGEN " :GOSUB 290
990 IF S=1 THEN 780
1000 RETURN
1010 :
1020 REM ** START/STAP -PUNTEN ***
1030 F$="-START & STAP-" :S1=1 :S2 =1
1040 GOSUB 130
1050 B$="STARTPUNT & STAPGROOTE INSTELLEN " :GOSUB 290
1060 IF S=2 THEN 1130
1070 PRINT"GEEF STARTPUNT  <1-";N;">";
1080 INPUT S1
1090 IF S1 < 1 OR S1 > N THEN 1070
1100 PRINT"STAPGROOTTE  ";
1110 INPUT S2
1120 S1=INT(S1) :S2=INT(S2)
1130 RETURN
1140 :
1150 REM ** REKEN TABEL **
1160 PRINT"REKENTABEL WORDT AANGEMAAKT !"
1170 N1=0                       :REM REKENTABELTELLER
1180 FOR I=S1 TO N STEP S2
1190 IF  L=0 THEN 1270
1200 REM ** UITSLUITEN **
1210 H=0
1220 FOR Y= 1 TO L
1230 IF A(I) <> C(Y) THEN 1250
1240 H=1 : Y=L
1250 NEXT Y
1260 IF H=1 THEN 1280
1270 N1=N1 +1 : D(N1) =A(I): REM PLAATSEN IN TABEL
1280 NEXT I
1290 RETURN
1300 :
1310 REM ** FREQUENTIE KLASSEN ***
1320 F$="-INVOER KLASSEN-"
1330 GOSUB 130
1340 IF F>0 THEN 1530
1350 PRINT"HOEVEEL KLASSEN  <STOP = 0> ";
1360 INPUT F
1370 IF F = 0 THEN 1720
1380 IF F<1 OR F> 14 THEN 1330
1390 F=F +1 : B(1,1) =-1E+09 :B(F,1) =1E+09
1400 B$="OPEN ONDERGRENS KLASSE 1" :GOSUB 290
1410 IF S=1 THEN 1440
1420 PRINT"GEEF ONDERGRENS  1";
1430 INPUT B(1,1)
1440 FOR I=2 TO F
1450 IF I<> F THEN 1480
1460 B$ = "OPEN BOVENGRENS KLASSE "+STR$(F-1) :GOSUB 290
1470 IF S=1 THEN 1510
1480 PRINT"GEEF BOVENGRENS KLASSE ";I-1;
1490 INPUT B(I,1)
1500 IF B(I,1) <= B(I-1,1) THEN 1480
1510 NEXT I
1520 REM ** UITVOER **
1530 GOSUB 130
1540 H=F :F=0
1550 PRINT"KLASSE         ONDERGRENS         BOVENGRENS "
1560 FOR I=2 TO H
1570 PRINT I-1;
1580 IF B(I-1,1) < -1E+08 THEN 1600
1590 PRINT TAB(16)B(I-1,1);
1600 PRINT TAB(30)"-<";
1610 IF B(I,1)> 1E+08 THEN 1630
1620 PRINT TAB(35)B(I,1);
1630 PRINT
1640 NEXT I
1650 PRINT"--------------------------------------------------------"
1660 B$="NOG WIJZIGEN " :GOSUB 290
1670 IF S=1 THEN 1330
1680 F=H
1690 G=1
1700 RETURN
1710 :
1720 REM FREQUENTIEBEREKENING **
1725 GOSUB 130
1730 F$="-FREQUENTIEBEREKENING- ": T=0
1735 T=0
1740 PRINT"EEN OGENBLIK GEDULD A.U.B.  ! "
1750 FOR J=1 TO F:B(J,2)=0 :NEXT J
1760 FOR I=1 TO N1
1770 FOR J=1 TO F
1780 IF D(I) >= B(J,1) THEN 1800
1790 B(J,2) =B(J,2)+1 :T=T +1 :J=F
1800 NEXT J
1810 NEXT I
1820 REM RELATIEVE FREQUENTIE **
1830 FOR I=2 TO F
1840 B(I,3)=B(I,2) * 100 /T
1850 B(I,3)=INT(B(I,3) * 100 + .5 ) /100
1860 NEXT I
1870 F1=1
1880 RETURN
1890 :
1900 REM ** GEMIDDELDEN O.B.V. FREQUENTIE ***
1910 IF F1<> 1 THEN 2260
1920 REM ** KLASSE MIDDENS **
1930 S=0: B=0 :C=0 :T1=0
1940 FOR I=2 TO F
1950 IF B(I-1,1)< -1E+08 OR B(I,1) > 1E+08 THEN 1980
1960 B(I,4) =(B(I-1,1) +B(I,1)) / 2  :REM KLASSE MIDDENS
1970 B=B+ABS(B(I,4)-B(I,1)) :T1=T1+1
1980 NEXT I
1990 B=B/T1
2000 IF B(1,1) < -1E+08 THEN B(2,4) =B(2,1)-B
2010 IF B(F,1) > 1E+08 THEN B(F,4) = B(F-1,1) +B
2020 REM ** BEPALING GEMIDDELDEN **
2030 B=0:T1=0:H=0
2040 FOR I=1 TO F
2050 S=S +B(I,4) * B(I,2)    :REM REKENKUNDIG GEMI
2060 IF B(I,4) =0 THEN 2090
2070 B=B +(1/B(I,4)) *  B(I,2)   :REM HARMONISCH GEM
2080 REM MIDIAAN
2090 IF H=1 THEN 2130
2100 T1=T1 +B(I,2)
2110 IF T1 <T/2 THEN 2130
2120 T1=T1-B(I,2) :H=1 :C=I
2130 NEXT I
2140 REM ** REST BEREKENING **
2150 A1=S/T
2160 B1=T/B                   :REM HARMONISCH GEM
2170 A=((T/2 - T1) / B(C,2)) * (B(C,1) - B(C-1,1))
2180 A=B(C-1,1)+A
2190 REM ** STANDAARDDEVIATIE *
2200 T1=0
2210 FOR I=2 TO F
2220 T1=T1 +(B(I,4)-A1)^2 * B(I,2)
2230 NEXT I
2240 E=T1/T                    :REM VARIANTIE
2250 E1 = E^.5                :REM STANDAARDDEVIATIE
2260 RETURN
2270 :
2280 REM *** VOORTSCHRIJDEND GEMIDDELDE ***
2290 F$="VOORTSCHRIJDEND GEMIDDELDE "
2300 GOSUB 130   :REM KOP
2310 PRINT"HOE GROOT IS DE PERIODE ";
2320 INPUT P
2330 IF P< 1 OR P > N1 THEN 2300
2340 PRINT"EEN OGENBLIK A.U.B.  ! "
2350 REM ** 1- OF 2 KEER REEKS
2360 R=1 : IF P/2 -INT (P/2) =0 THEN R=2
2370 REM ** MAT E SCHOONVEGEN **
2380 FOR I=1 TO N1 : E(I) =0 : NEXT I
2390 P1 = INT (P/2)
2400 FOR I=1 TO P1 : E(I) =1E+09 :NEXT I             
2410 FOR I=N1 -P1 +1 TO N1 :E(I) = 1E+09 :NEXT I
2420 REM ** BEREKENING **
2430 FOR I=1 TO N1 -INT (P/2)
2440 P1=P1 +1     :REM INDEX TELLER MAT E
2450 FOR X=0 TO R-1
2460 A=0
2470 FOR J=I + X TO I +(P-1) +X
2480 A=A +D(J)
2490 NEXT J
2500 E(P1) =E(P1) + A/ P
2510 NEXT X
2520 E(P1)=E(P1) / R
2530 NEXT I
2540  RETURN
2550 :
2560 REM ** UITVOER VOORTSCHRIJDEND GEMIDDELDE ***
2570 F$="VOORTSCHRIJDEND GEMIDDELDE"
2580 FOR I=1 TO N1
2590 IF I <> 1 AND I/7-INT(I/7) <> 0 THEN 2700
2600 IF I=1 THEN 2650
2610 REM ** DOORGAAN OF STOPPEN **
2620 B$="DOORGAAN "  :GOSUB 290 :REM JA/NEE
2630 IF S=2 THEN I =N1 +1
2640 IF I> N1 THEN 2770    
2650 GOSUB 130           : REM KOP
2660 PRINT"PERIODE = ";P
2670 PRINT "PERIODE   WAARNEMING    GEMIDDELDE    VERSCHIL "
2680 PRINT "   T           Y            G             Y-G  " 
2690 PRINT "--------------------------------------------------"
2700 PRINT TAB(2) I; TAB(10) D(I);
2710 IF E(I) > 1E+08 THEN 2760
2720 PRINT TAB(26)E(I) ;
2730 REM ** VERSCHIL AFGEROND OP 3 DECIMALEN **
2740 A=D(I) -E(I) :A=INT (A*1000 +.5)/1000
2750 PRINT TAB(41)A;
2760 PRINT
2770 NEXT I
2780 B$="OPNIEUW " :GOSUB 290 : REM JA/NEE
2790 IF S=1 THEN 2580
2800 RETURN
2810 :
2820 REM ** SORTEREN **
2830 FOR I=2 TO N1
2840 X1=1 :X2=I
2850 X3=X1+INT((X2-X1)/2)
2860 IF D(I) < D(X3) THEN 2890
2870 IF D(I) > D(X3) THEN 2910
2880 X2=X3
2890 IF X2=X3 THEN 2940
2900 X2=X3 : GOTO 2850
2910 IF X1 =X3 THEN 2940
2920 X1=X3 : GOTO 2850
2930 REM ** SCHUIVEN **
2940 H=D(I)
2950 IF I = X2 THEN 2990
2960 FOR J= I TO X2 +1 STEP -1
2970 D(J) = D(J-1)
2980 NEXT J
2990 D(X2) =H
3000 NEXT I
3010 RETURN
3020 :
3030 REM ** GEMIDDELDEN ETC **
3040 S=0: C=0: B=0: F1=0
3050 GOSUB 2830
3060 K=D(I) : G=D(N1)  :REM RANGE
3070 REM ** BEREKENING **
3080 FOR I= 1 TO N1
3090 S=S+D(I)              :REM REKENKUNDIG GEM
3100 C=C+D(I)^2            :REM VARIANTIE
3110 IF D(I) =0 THEN 3130
3120 B=B +1/D(I)           :REM HARMONISCH GEM
3130 NEXT I
3140 REM ** REST **
3150 A1=S/N1                :REM REKENKUNDIG GEM
3160 B1=1/(B/N1)                              
3170 E=C/N1 -A1^2           :REM VARIANTIE
3180 E1 = E^.5             :REM STANDAARDDEVIATIE
3190 REM ** MIDIAAN **
3200 A=D(INT(N1/2+.5))
3210 IF N1/2 - INT (N1/2) <> 0 THEN 3230
3220 A=(A + D(INT(N1/2) +1))/2      :REM MIDIAAN
3230 RETURN
3240 :
3250 REM ** LINEAIRE REGRESSIE **
3260 REM * METHODE KLEINSTE KWADRATEN **
3270 F$="-LINEAIRE REGRESSIE-"
3280 GOSUB 130         :REM KOP
3290 T1 =0:T2=0:T3=0:T4=0:T5=0
3300 FOR I=1 TO N1 STEP 2
3310 T1=T1 +D(I) * D(I+1)    :REM XY
3320 T2=T2 +D(I+1)      :REM X
3330 T3=T3 +D(I)        :REM Y
3340 T4=T4 +D(I+1)^2    :REM X^2
3350 T5=T5 +D(I)^2      :REM Y^2
3360 NEXT I
3370 N2=INT(N1/2)
3380 IF N2 =0 THEN 3520
3390 X1=N2*T1-T2*T3
3400 A=X1/(N2*T4-T2^2)
3410 B=(T3-A*T2)/N2
3420 REM ** CORRELATIECOEFFICIENTEN **
3430 X2=N2*T4 -T2^2
3440 X3=N2*T5 -T3^2
3450 X2=(X2*X3)^.5
3460 R=X1/X2
3470 PRINT"Y = AX + B "
3480 PRINT"A = ";A
3490 PRINT"B = ";B
3500 PRINT"CORRELATIECOEFICIENT ";R
3510 PRINT:B$="DOORGAAN " :GOSUB 290 :REM JA/NEE
3520 RETURN
3530 :
3540 REM ** UITVOER GEMIDDELDEN ETC **
3550 F$="-UITVOER GEMIDDELDEN-"
3560 GOSUB 130            :REM KOP
3570 IF F1 =1 THEN PRINT "O.B.V. FREQUENTIEVERDELING "
3580 IF F1= 0 THEN PRINT "O.B.V. WAARNEMING"
3590 PRINT
3600 PRINT"REKENKUNDIG GEMIDDELDE      :";A1
3610 PRINT"HARMONISCH GEMIDDELDE       :";B1
3620 PRINT"MIDIAAN                     :";A
3630 PRINT
3640 IF F1 =1 THEN 3670
3650 PRINT"KLEINSTE WAARNEMING         :";K
3660 PRINT"GROOTSTE WAARNEMING         :";G
3670 PRINT"VARIANTIE                   :";E
3680 PRINT"STANDAARDDEVIATIE           :";E1
3690 PRINT"----------------------------------------------"
3700 PRINT"TERUG NAAR MASTER MENU  < TERUG = 0 >";
3710 INPUT A$
3720 RETURN
3730 :
3740 REM ** UITVOER FREQUENTIE-VERDELING ***
3750 F$="-FREQUENTIE-VERDELING-"
3760 FOR I= 2 TO F
3770 IF I<> 2 AND I/7 -INT(I/7) <> 0 THEN 3870
3780 IF I=2 THEN 3820
3790 PRINT:B$="DOORGAAN " : GOSUB 290
3800 IF S=2 THEN I =F
3810 IF S=2 THEN 3940
3820 GOSUB 130
3830 PRINT"          ONDER-     BOVEN-      ABSOLUTE      RELATIEVE"
3840 PRINT"KLASSE    GRENS      GRENS       FREQUENTIE    FREQUENTIE"
3850 PRINT"------------------------------------------------------------"
3860 REM ** REGEL UITVOER**
3870 PRINT I-1;
3880 IF B(I-1,1) < -1E+08 THEN 3900
3890 PRINT TAB(10)B(I-1,1);
3900 PRINT TAB(18)"-<";
3910 IF B(I,1) >1E+08 THEN 3930
3920 PRINT TAB(21)B(I,1);
3930 PRINT TAB(33)B(I,2);TAB(47)B(I,3)
3940 NEXT I
3950 PRINT
3960 PRINT"TOTALE FREQUENTIE  :"; TAB(33)T;TAB(47)100
3970 PRINT"------------------------------------------------------------"
3980 B$="GEMIDDELDEN ETC VAN FREQUENTIEVERD. ":GOSUB 290
3990 RETURN
4000 :
4010 REM **** MENU ***
4020 F$="-MENU-"
4030 GOSUB 130 :REM KOP
4040 IF G=-1 THEN PRINT "BESTAND NIET INGELEZEN"
4050 PRINT
4060 PRINT"0 = STOPPEN SYSTEEM VERLATEN"
4070 PRINT"1 = INLEZEN VAN SOURCE DRIVE"
4080 PRINT"2 = WEGSCHRIJVEN NAAR SOURCE DRIVE"
4090 PRINT"3 = GEMIDDELDEN O.B.V. WAARNEMING "
4100 PRINT"4 = FREQUENTIEVERDELING"
4110 PRINT"5 = REGRESSIEANALYSE"
4120 PRINT"6 = VOORTSCHRIJDEND GEMIDDELDE"
4130 PRINT"-------------------------------------------------"
4140 PRINT:PRINT:PRINT:PRINT"WAT IS UW KEUZE ";
4150 INPUT M
4160 IF G= -1 AND M> 1 THEN 4030
4170 IF M<0 OR M> 6 THEN 4030
4180 RETURN
4190 :
4200 REM ** STUURMODULE **
4210 GOSUB 60
4220 GOSUB 4020                       :REM MENU
4225 IF M= 0 THEN CHAIN "ADMIN"  
4230 IF G=1 AND M=1 THEN GOSUB 220    :REM CONTROLE
4240 IF M=1 THEN GOSUB 350            :REM INLEZEN
4250 IF M=2 THEN GOSUB 560            :REM SCHRIJVEN
4260 IF M< 3 THEN 4480
4270 REM ** BEWERKEN GRONDMATERIAAL **
4280 GOSUB 1030                       :REM STARTPUNT
4290 GOSUB 740
4300 GOSUB 1160
4310 IF M <> 3 THEN 4350
4320 REM ** GEMIDDELDEN OBV WAARNEMING **
4330 GOSUB 3040                       :REM GEMIDDELDEN
4340 GOSUB 3550                       :REM UITVOER
4350 IF M<> 4 THEN 4430
4360 REM ** FREQUENTIE-VERDELING **
4370 GOSUB 1320                       :REM FREQ.KLASSEN
4380 GOSUB 1730
4390 GOSUB 1900                       :REM GEMIDDELDEN
4400 GOSUB 3750                       :REM FREQ-UITVOER
4410 IF S=2 THEN 4430
4420 GOSUB 3550                       :REM GEM-UITVOER
4430 IF M=5 THEN GOSUB 3270           :REM LINEARE REGRESSIE
4440 IF M<> 6 THEN 4480
4450 REM ** VOORSCHRIJDEND GEM **
4460 GOSUB 2290                       :REM BEPALING
4470 GOSUB 2570                       :REM UITVOER
4480 IF M<>0 THEN 4220
4490 IF G=1 THEN GOSUB 220            :REM CONTROLE
4500 END
570                       :REM UITVOER
4480 IF M<>0 THEN 4220
4490 IF G=1 THEN GOSUB 220           