10 REM *** VOORRAADBEHEER ***
20 REM  ** ARTIKEL INVOER **
30 DIM A(200,4),B$(200),B(200),D3
40 GOTO 3450
50 :
60 REM   *** INITIALISEREN **
70 FOR I= 1 TO 200 : B(I) =I :NEXT I
80 G=-1 : N=0 : Z=2 : REM ** NIET INGELEZEN/AANTAL
90 D(1)=0 :D(2) =5 :D(3)=19 :REM BTW TARIEF
100 N$="" : N1 =0 : Y3 =0 :Y=0
110 FF$ =CHR$(12):LF$ =CHR$(138) :REM FORMFEED/LINEFEED
120 RETURN
130 :
140 REM ** KOP **
150 PRINT CHR$(27)"E"   :REM SCHERM WISSEN
160 PRINT"*** ARTIKELINVOER ***               ** BESTANDSNAAM ** "
170 PRINT F$;TAB(40) N$
180 IF G<0 THEN 220
185 PRINT:
190 IF Z=1 THEN PRINT "BOEKWAARDE EXCL BTW ";
200 IF Z=0 THEN PRINT "BOEGWAARDE INCL BTW ";
210 PRINT TAB(40)"AANTAL ";N1
220 RETURN
230 :
240 REM ** JA/NEE **
250 PRINT B$ + " <JA/NEE> ";
260 INPUT L$ :L$ =LEFT$(L$,1) :S=0
270 IF L$ ="J" THEN S=1
280 IF L$ ="N" THEN S=2
290 IF S= 0 THEN 250
300 RETURN
310 F$="- BESTAAND BESTAND -" :GOSUB 150 :REM KOP
312 PRINT:B$="BESTAAND BESTAND ? ":GOSUB 240
313 IF S=2 THEN 3230
314 PRINT
315 INPUT "NOEM BESTAAND BESTAND "; N$       
316 B$="WILT U WIJZIGEN  ":GOSUB 250
317 IF S=1 THEN 310
320 REM *** INLEZEN VAN DISK ***
330 F$="-INLEZEN DISK-" :GOSUB 150 :REM KOP
360 OPEN "I",1,  N$          
370 INPUT #1, N$    ,Z,N,Y           :REM NAAM/BTW/AANTAL/DATUM
380 REM ** ARTIKELEN INLEZEN **
390 IF N=0 THEN 440
400 FOR I=1 TO N
410 INPUT #1,A(I,1),A(I,2),A(I,3),A(I,4)
420 INPUT #1,B$(I)
430 NEXT I
440 CLOSE
450 G=0
460 N1=N
470 RETURN :
480 B$="WEGSCHRIJVEN WEET U HET ZEKER" :GOSUB 250
481 IF S=2 THEN 3230
482 IF S=1 THEN 490
490 REM ** NAAR DISK SCHRIJVEN ***
500 F$="-SCHRIJVEN NAAR DISK-" :GOSUB 150
510 IF N <> N1 THEN GOSUB 710   :REM SORTEREN **
520 :
530 :
540 OPEN "O",1,  N$
550 PRINT #1,N$;",";Z;",";N;",";Y
560 REM ** ARTIKELEN SCHRIJVEN **
570 IF N=0 THEN 650
580 FOR I=1 TO N
590 B=B(I)           :REM POINTER
600 FOR J=1 TO 4
610 PRINT#1,A(B,J);     :REM NUM GEGEVENS
620 NEXT J
630 PRINT#1,B$(B)        :REM OMSCHRIJVING
640 NEXT I
650 CLOSE            :REM BESTAND SLUITEN
660 G=O
670 N=N1
680 RETURN
690 :
700 REM ** SORTEREN **
710 IF N1< 2 OR N =N1 THEN 930
720 PRINT"EEN OGENBLIJK, ER WORDT GESORTEERD  !"
730 IF N<1 THEN N=1
740 FOR I= N+1 TO N1
750 X1= 1: X2=I:F=B(I)
760 X3=INT((X2-X1)/2) +X1
770 J=B(X3)
780 IF A(F,1)> A(J,1) THEN 830
790 IF A(F,1) <A(J,1) THEN 810
800 X2=X3
810 IF X2=X3 THEN 860
820 X2=X3 :GOTO 760
830 IF X1=X3 THEN 860
840 X1=X3:GOTO 760
850 REM ** WISSELEN **
860 IF I=X2 THEN 900
870 FOR X=I TO X2 +1 STEP -1
880 B(X)=B(X-1)
890 NEXT X
900 B(X2)=F
910 NEXT I
920 N=N1
930 RETURN
940 :
950 REM ** DISPLAY **
955 PRINT
960 PRINT"1. = ARTIKELNUMMER.................";A(H,1)
970 PRINT"2. = OMSCHRIJVING.................. ";B$(H)
980 B=A(H,2) :GOSUB 2880 :REM ** POSITIONEREN **
990 PRINT"3. = BOEKWAARDE....................";A$
1000 PRINT"4. = BTW-PERCENTAGE................";D(A(H,3))
1010 PRINT"     VOORRAAD IN EENHEDEN..........";A(H,4)
1020 PRINT
1030 PRINT"----------------------------------------------------"
1040 RETURN
1050 :
1060 REM ** ARTIKELNUMMER =1 ***
1070 PRINT"ARTIKELNUMMER  <STOP = 0> ......" ;  
1080 INPUT A
1090 IF A <0 THEN 1070
1100 RETURN  
1110 :
1120 REM ** OMSCHRIJVING **
1130 PRINT"OMSCHRIJVING ARTIKELNR."A(H,1);"......";
1140 INPUT B$(H)
1150 B$(H)=LEFT$(B$(H),15)
1160 RETURN
1170 :
1180 REM ** BOEKWAARDE **
1190 PRINT"BOEKWAARDE ARTIKELNR.  ";A(H,1);"......";
1200 INPUT A(H,2)              
1210 IF A(H,2)<0 THEN 1190
1220 RETURN
1230 :
1240 REM ** BTW-PERCENTAGE =4 **
1250 FOR J=1 TO 3
1260 PRINT D(J);"%=";J;
1270 NEXT J
1280 PRINT:PRINT"GEEF BTW-CODE...................";
1290 INPUT A(H,3)
1300 IF A(H,3)<1 OR A(H,3)> 3 THEN 1250
1310 RETURN
1320 :
1330 REM ** ZOEK ACTIE **
1340 S=2
1350 IF N1 < 1 THEN 1520
1360 S=2 :X1=1 :X2=N+1
1370 X3=X1+INT((X2-X1)/2) :B=B(X3)
1380 IF A< A(B,1) THEN 1410
1390 IF A> A(B,1) THEN 1430
1400 S=1 :X2=X3 :D=X2
1410 IF X2=X3 THEN 1450
1420 X2=X3 :GOTO 1370
1430 IF X1 =X3 THEN 1450
1440 X1 =X3 :GOTO 1370
1450 IF S=1 OR N=N1 THEN 1520
1460 REM ** LINEAIR ZOEKEN **
1470 FOR I=1 TO N1
1480 B=B(I)
1490 IF A<> A(B,1) THEN 1510
1500 S=1 : D=I :I=N1
1510 NEXT I
1520 RETURN 
1530 :
1540 REM ** RUBRIEK **
1550 PRINT"WELKE RUBRIEK <STOP =0>  ";
1560 INPUT J
1570 IF J<0 OR J>4 THEN 1550
1580 RETURN 
1590 :
1600 REM ** ZOEKEN **
1610 GOSUB 1070
1620 IF A=0 THEN 1650
1630 PRINT"EEN OGENBLIK A.U.B "
1640 GOSUB 1340             :REM ** ZOEKEN **
1650 IF S=1 THEN P=D
1660 RETURN
1670 :
1680 REM ** INVOER-ROUTINE ***
1690 F$="-INVOER-" :G=1:Y=Y4
1700  H=B(N1+1)                         
1710 GOSUB 150          :REM KOP
1720 GOSUB 1070         :REM ARTIKELEN
1730 IF A=0 THEN 1830
1740 GOSUB 1340         :REM ZOEK-ACTIE
1750 IF S=1 THEN 1720
1760 A(H,1)=A           :REM OPNEMEN IN BESTAND
1770 GOSUB 1130         :REM ** OMSCHRIJVING
1780 GOSUB 1190         :REM BOEKWAARDE
1790 GOSUB 1250         :REM BTW PERCENTAGE
1800 A(H,4)=0           :REM VOORRAAD 0
1810 N1=N1+1
1820 IF N1+1 < 201 THEN 1700
1825 IF N1+1 > 200 THEN 3650
1830 RETURN
1840 :
1850 REM ** DISPLAY EN CORRECTIE **
1860 IF N1=0 THEN 2360
1870 P=N1
1880 F$="- DISPLAY -"
1890 GOSUB 150
1900 H=B(P) :GOSUB 960           :REM ** DISPLAY
1910 PRINT"0 = STOP      -TERUG NAAR MENU-  ";
1920 PRINT TAB(40)"3 = ZOEKEN "
1930 PRINT"1 = VORIGE    -TERUG BLADEREN-   ";
1940 PRINT TAB(40)"4 = CORRIGEREN "
1950 PRINT"2 = VOLGENDE  -VOORUIT BLADEREN- ";
1960 PRINT TAB(40)"9 = VERWIJDEREN "
1970 PRINT:PRINT"WAT IS UW KEUZE ";
1980 INPUT Q
1990 IF Q=1 THEN P=P-1       :REM TERUG BLADEREN
2000 IF P<=0 THEN P=N1
2010 IF Q=2 THEN P=P +1       :REM VOORUIT
2020 IF P> N1 THEN P=1
2030 IF Q=3 THEN GOSUB 1610     :REM ZOEKEN
2040 IF Q=4 THEN GOSUB 2110     :REM CORRIGEREN
2050 IF Q=9 THEN GOSUB 2250     :REM VERWIJDEREN
2060 IF Q>2 AND Q< 10 THEN Q=1
2070 IF Q<> 0 THEN 1890
2080 RETURN
2090 :
2100 REM ** CORRIGEREN **
2110 F$="-CORRECTIE-" :GOSUB 150 :REM KOP
2120 GOSUB 960 :GOSUB 1550       :REM DISPLAY/RUBRIEK
2130 G=1 :Y=Y4                   :REM BESTAND VERANDEREN       
2140 IF J=0 THEN 2220
2150 ON J GOSUB 1070,1130,1190,1250
2160 IF J>1 OR A=0 THEN 2210
2170 GOSUB 1340
2180 IF S=1 AND A<> A(H,1) THEN 2150
2190 A(H,1)=A                  :REM NWE WAARDE OPNEMEN
2200 IF D<N THEN N=D
2210 IF J<>0 THEN 2110
2220 RETURN
2230 :
2240 REM ** VERWIJDEREN **
2250 F$="-VERWIJDEREN-" :GOSUB 150     :REM KOP
2260 GOSUB 960                         :REM DISPLAY
2270 B$="ZEKER WETEN " :GOSUB 250      :REM JA/NEE
2280 IF S=2 THEN 2360
2290 REM ** WISSEN **
2300 FOR I=P TO N1
2310 B(I) =B(I+1)
2320 NEXT I
2330 G=1 : Y=Y4                        :REM WIJZIGING  
2340 B(N1)=H: N1=N1-1
2350 IF P>N1 THEN P=N
2360 RETURN
2370 :
2380 REM ** BESTAND-AANMAAK **
2390 F$="-BESTAND-AANMAAK-" :GOSUB 150  :REM KOP
2395 PRINT:GOSUB 250
2396 IF S=2 THEN 2470
2400 PRINT:PRINT:PRINT"GEEF BESTANDSNAAM       ";
2410 INPUT N$
2415 PRINT:PRINT"NIEUW BESTAND IS          "     N$
2420 B$= "BOEKWAARDE INCL. BTW " :GOSUB 250 :REM JA/NEE
2430 Z=S-1
2440 B$="WILT U WIJZIGEN " :GOSUB 250
2450 IF S=1 THEN 2390
2460 G=0
2470 RETURN
2480 :
2490 REM ** VOORRAADOPNAME LIJST ***
2500 F$="-PRINTEN-"   :GOSUB 150    :REM KOP
2505 PRINT:PRINT"ZIT HET PAPIER GOED IN DE PRINTER , EN
2510 B$="STAAT DE PRINTER AAN ?" :GOSUB 250
2520 IF S=2 THEN 2850
2530 I=0                            :REM BLAD TELLER
2540 FOR I=1 TO N
2550 C=B(I)
2560 B=A(C,2) :GOSUB 2880           :REM POSITIONEREN
2570 IF I<> 1 AND 1/15 -INT(I/15) <> 0 THEN 2750
2580 REM ** NIEUWE PAGINA **
2600 T=T+1
2610 LPRINT TAB(5)"VOORRAADOPNAMELIJST            :"N$;
2620 LPRINT TAB(55)"BLADNR.:";T
2630  LPRINT TAB(5)"LAATSTE BESTANDSWIJZIGING :";Y;
2640  LPRINT TAB(55)"DATUM      :"  Y4
2650 IF Z=1 THEN LPRINT TAB(5) "BOEKWAARDE EXCL. BTW"
2660 IF Z=0 THEN LPRINT TAB(5) "BOEKWAARDE INCL. BTW"
2670 LPRINT TAB(5)"-------------------------------------------------------------------------"          
2690 LPRINT TAB(5)"ARTIKELNR.     OMSCHRIJVING";
2700 LPRINT TAB(40)"BTW-PERC.      BOEKWAARDE";
2710 LPRINT TAB(70)"AANTAL"
2720 LPRINT TAB(5)"-------------------------------------------------------------------------"
2750 LPRINT TAB(5) A(C,1);TAB(20)B$(C);
2760 LPRINT TAB(43)D(A(C,3));TAB(51+L)A$; 
2770 IF A(C,4) <>0 THEN LPRINT TAB(65)A(C,4)
2780 IF A(C,4) =0 THEN LPRINT TAB(68)".........."
2790 LPRINT TAB(5)"-------------------------------------------------------------------------"   
2820 NEXT I
2830 LPRINT "**** LAATSTE BLAD ****"
2840  LPRINT FF$                               :REM FORMFEED
2850 RETURN
2860 :
2870 REM ** POSITIONEREN BEDRAG **
2880 B$="--" : W=B-INT(B) :A$=STR$(INT(B))
2890 IF W=0 THEN 2930
2900 W=INT(W*100+.5):B$=STR$ (W)
2910 B$="00" + RIGHT$(B$,LEN(B$)-1)
2920 B$=RIGHT$(B$,2)
2930 A$=A$+","+ B$
2940 IF B<> 0 THEN 2960
2950 A$="- "
2960 L=10 - LEN (A$)
2970 RETURN 
2980 :
2990 REM **CONTROLE **
3000 F$="- CONTROLE -"  :GOSUB 150   :REM KOP
3010 PRINT:PRINT"ZIJN DE GEGEVENS AL OPGESLAGEN ?"
3020 B$ ="NOG SCHRIJVEN " : GOSUB 250 :REM JA/NEE
3030 IF S=1 THEN GOSUB 500
3040 RETURN
3050 :
3060 REM **** DATUM ***
3070 F$="- DATUM -" : GOSUB 150         :REM KOP
3075 PRINT:PRINT
3080 PRINT"GEEF DATUM   <DD,MM,JJ>  ";
3090 INPUT Y1,Y2,Y3
3100 IF Y1 < 1 OR Y1 > 31 THEN 3070
3110 IF Y2 < 1 OR Y2 >12 THEN 3070
3120 IF Y3 <80 OR Y3>99 THEN 3070
3130  Y4 = Y3 * 10000 + Y2 *100 + Y1
3140 RETURN
3150 :
3160 B$="ZEKER WETEN" :GOSUB 250
3165 IF S=2 THEN 3210
3166 G=1 :REM BESTAND GEWIJZIGD
3180 FOR I= 1 TO N1
3190 A(I,4)=0
3200 NEXT I
3210 RETURN 
3220 :
3230 REM ** MENU **
3240 F$="- MENU - "
3250 GOSUB 150 :REM KOP
3255 PRINT:PRINT
3260 IF Y=<>0 THEN PRINT "DATUM BESTANDSWIJZIGING :";Y             
3270 PRINT
3280 PRINT "0 = SYSTEEM VERLATEN "
3290 PRINT "1 = NIEUW BESTANDS AANMAAK "
3300 PRINT "2 = BESTAAND BESTAND OPVRAGEN "
3310 PRINT "3 = WEGSCHRIJVEN NAAR SOURCE DISK !"
3320 PRINT "4 = INVOEREN VAN ARTIKELGEGEVENS "
3330 PRINT "5 = CORRECTIE EN DISPLAY"
3340 PRINT "6 = SORTEREN VAN ARTIKELGEGEVENS"
3350 PRINT "7 = AFDRUKKEN VOORRAADOPNAMELIJST"
3360 PRINT "8 = VOORRAAD OP NUL"
3370 PRINT"----------------------------------------------------------"
3380 PRINT:PRINT:PRINT"WAT IS UW KEUZE ";
3390 INPUT M
3400 IF G=<>-1 THEN 3420
3410 IF M=>2 THEN 3250
3420 RETURN
3430 :
3440 REM ********** STUURMODULE **********
3450 GOSUB 70
3460 IF Y3=0 THEN GOSUB 3070      :REM DATUM
3470 GOSUB 3240                   :REM MENU
3480 IF G=1 AND (M>=0 AND M<=2) THEN GOSUB 2990
3485 IF M=0 THEN 3650
3490 IF M=1 THEN GOSUB 2390    :REM BESTANDSAANMAAK
3500 IF M=2 THEN GOSUB 310      :REM BESTAAND BESTAND OPVRAGEN
3510 IF M=3 THEN GOSUB 480      :REM WEGSCHRIJVEN
3520 IF M=4 THEN GOSUB 1690       :REM INVOER
3530 IF M=5 THEN GOSUB 1860       :REM CORECTIE
3540 IF M=6 THEN GOSUB 710        :REM SORTEREN
3550 IF M=7 THEN GOSUB 5000      :REM VOORRAADOPN-LST
3560 IF M=8 THEN GOSUB 3160      :REM VOORR OP NUL
3570 IF M<>0 THEN 3470
3580 F$="-BESTAAND BESTAND-" :GOSUB 150 :REM KOP
3585 PRINT:PRINT
3590 PRINT "GEEF BESTAAND BESTANDSNAAM ";
3600 INPUT BESWOORD$
3610 N$=BESWOORD$
3620 GOSUB 320
3630 RETURN
3640 :
3650 F$="- VOL-BESTAND -" :GOSUB 150 :REM KOP
3660 PRINT:PRINT"VOL BESTAND,MEER GEGEVENS KUNNNEN NIET OPGESLAGEN WORDEN !"
3670 PRINT"VOOR MEER GEGEVENS EEN ANDER BESTANDSNAAM MAKEN.
3680 PRINT:PRINT"B.V. BESTANDSNAAM/1   BESTANDSNAAM/2"
3685 PRINT:PRINT:PRINT
3690 PRINT TAB(25)"VOOR WIJZIGEN    = 1";
3700 PRINT TAB(25)"OPSLAAN GEGEVENS = 2";
3710 INPUT Q
3720 IF Q=1 THEN 1860
3730 IF Q=2 THEN 500
3740 IF Q<-1 OR Q>2 THEN 3685
3750 RETURN
3780 :
5000 REM ** VOORRAADOPNAME LIJST ***
5005 IF N=0 THEN 5690
5010 F$="- VOORRAADOPNAMELIJST -" :GOSUB  150:REM KOP
5020 PRINT:PRINT
5030 PRINT" 0 = STOP   -TERUG MENU- " 
5040 PRINT" 1 = VOORRAADOPNAMELIJST PRINTEN "           
5050 PRINT" 2 = VOORRAADOPNAMELIJST LATEN ZIEN <- DISPLAY ->"
5055 PRINT" WAT IS UW KEUZE ";
5060 INPUT Q
5070 IF Q=1 THEN 2490
5080 IF Q=2 THEN 5102
5090 IF Q<-1 OR Q>2 THEN 5000
5100 IF Q=0 THEN 3230
5102 PRINT CHR$(27)"E"
5105 N=5
5106 K=1
5107 I=0
5108 T=T+1 :PRINT
5109 GOSUB 5650
5110 FOR I=K TO N
5130 C=B(I)              
5140 B=A(C,2) :GOSUB 2880           :REM POSITIONEREN
5150 IF I<> 1 AND 1/15 -INT(I/15) <> 0 THEN 5290
5160 REM ** NIEUWE PAGINA **
5180 PRINT TAB(5)"VOORRAADOPNAMELIJST            :"N$;
5190 PRINT TAB(55)"BLADNR.    :";T 
5200 PRINT TAB(5)"LAATSTE BESTANDSWIJZIGING      :";Y;
5210 PRINT TAB(55)"DATUM      :";Y4 
5220 IF Z=1 THEN PRINT TAB(5) "BOEKWAARDE EXCL. BTW"
5230 IF Z=0 THEN PRINT TAB(5) "BOEKWAARDE INCL. BTW"
5240 PRINT TAB(5)"-------------------------------------------------------------------------"          
5250 PRINT TAB(5)"ARTIKELNR.   OMSCHRIJVING";
5260 PRINT TAB(40)" BTW-PERC.      BOEKWAARDE";
5270 PRINT TAB(70)"AANTAL"
5280 PRINT TAB(5)"-------------------------------------------------------------------------"
5290 PRINT TAB(5) A(C,1);TAB(20)B$(C);
5300 PRINT TAB(43)D(A(C,3));TAB(51+L)A$; 
5310 IF A(C,4) <>0 THEN PRINT TAB(70)A(C,4)
5320 IF A(C,4) =0 THEN  PRINT TAB(68)".........."
5330 PRINT TAB(5)"-------------------------------------------------------------------------"   
5340 NEXT I
5342 PRINT
5344 PRINT TAB(5)" TYPE <RETURN> TERUG-MENU"
5345 PRINT TAB(5)" 1= VOLGENDE 5 ARTIKELEN"
5347 PRINT TAB(5)" 2= VORIGE 5 ARTIKELEN "
5348 PRINT TAB(5)" 3= CORRECTIE !               ";
5390 INPUT"WAT IS UW KEUZE ";P                   
5395 IF P=0 THEN 5620
5400 IF P=1 THEN N=N+5 :K=K+5  : GOTO 5480
5450 IF P=2 AND N>5 THEN  N=N-5 :K=K-5 : GOTO 5480                    
5460 IF P=3 THEN GOSUB 1860
5470 IF P<-1 OR P>3 THEN 5344
5480 PRINT CHR$(27)"E"
5496 GOSUB 5650
5500 PRINT TAB(5)"VOORRAADOPNAMELIJST            :"N$; 
5510 PRINT TAB(55)"BLADNR.    :";T
5520 PRINT TAB(5)"LAATSTE BESTANDSWIJZIGING      :";Y;
5530 PRINT TAB(55)"DATUM      :";Y4 
5540 IF Z=1 THEN PRINT TAB(5)"BOEKWAARDE EXCL.BTW"
5550 IF Z=2 THEN PRINT TAB(5)"BOEKWAARDE INCL.BTW"
5560 PRINT TAB(5)"-------------------------------------------------------------------------"
5570 PRINT TAB(5)"ARTIKELNR.       OMSCHRIJVING";
5580 PRINT TAB(40)"BTW-PERC.       BOEKWAARDE";
5590 PRINT TAB(70)"AANTAL"
5600 PRINT TAB(5)"-------------------------------------------------------------------------"
5610 GOSUB 5110
5620 RETURN
5630 :
5650 PRINT TAB(5)"*** ARTIKELINVOER-DISPLAY ***";
5660 PRINT TAB(55)"AANTAL     :";N1
5670 PRINT TAB(5)"*************************************************************************"
5680 :
5690 RETURN
5700 END

5670 PRINT TAB(5)"********************************************