10 REM *** VOORRAADBEHEER ***
20 REM  ** ARTIKEL INVOER **
25 DIM K$(100),D$(100)
30 DIM A(200,7),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"*** Auto Onderhoudskaart system    ****  --------------  ****  "
170 PRINT F$;TAB(40) N$
180 IF G<0 THEN 220
185 PRINT:
210 PRINT TAB(40)"AANTAL ";N1
215 PRINT:PRINT
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
320 REM *** INLEZEN VAN DISK ***
330 F$="-INLEZEN DISK-" :GOSUB 150 :REM KOP
360 OPEN "I",1,  "AUTOBEST"
370 INPUT #1, N$    ,Z,N,D$            :REM NAAM/BTW/AANTAL/Kenteken
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),A(I,5),A(I,6),A(I,7)         
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,  "AUTOBEST"
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 7
610 PRINT#1,A(B,J);     :REM NUM GEGEVENS
620 NEXT J
630 PRINT#1,B$(B)        :REM OMSCHRIJVING
635 PRINT K$(B)
636 PRINT D$(B)
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 **
952 PRINT"Klantnaam . ";N$ ;
953 PRINT TAB(40)"Kenteken. ";D$
955 PRINT:PRINT
960 PRINT"1. = Datum.........................";A(H,1)
970 PRINT"2. = Faktuurnummer.................";A(H,2)
980 PRINT"3. = Omschrijving...................";B$(H)
990 B=A(H,3) :GOSUB 2880 :REM positioneren
991 PRINT"4. = Olie..........................";A$        
993 B=A(H,4):GOSUB 2880 :REM positioneren
994 PRINT"5. = Arbeidsloon...................";A$
995 B=A(H,5):GOSUB 2880: REM positioneren
996 PRINT"6. = Onderdelen....................";A$
998 B=A(H,6):GOSUB 2880 : REM positioneren
1000 PRINT"7. = Onderdelen Garantie...........";A$
1010 B=A(H,7) : GOSUB 2880 :REM positioneren
1015 PRINT"8. = Werk derden...................";A$
1016 PRINT"9. = Klantnaam.....................";N$
1017 PRINT"10.= Kenteken......................";D$
1020 PRINT
1030 PRINT"----------------------------------------------------"
1040 RETURN
1050 :
1060 REM ** Datum **               
1065 A=0
1070 PRINT"Datum..<DD,MM,JJ> <0,0,0 = Stop >";
1072 A=0
1080 INPUT A1,A2,A3
1081 IF A3=0 THEN 1730
1082 IF A1 < -1 OR A1 > 31 THEN 1070
1083 IF A2 < -1 OR A2 > 12 THEN 1070
1084 IF A3 < -1 OR A3 > 99 THEN 1070
1085 A4=A3 +100  * A2 +10000 * A1   
1086 A=A4
1100 RETURN  
1110 :
1120 REM ** Faktuurnummer **
1130 PRINT"Faktuur nummer ..................";     
1140 INPUT A(H,2)
1150 IF A(H,2)<0 THEN 1130
1160 RETURN
1170 :
1180 REM ** Omschrijving **
1190 PRINT"Omschrijving.....................";    
1200 INPUT B$(H)
1210 B$(H)=LEFT$(B$(H),15)
1220 RETURN
1221 :
1222 :
1230 REM : Olie 
1232 PRINT"Olie.............................";         
1235 INPUT A(H,3)
1236 RETURN
1237 :
1240 REM : Arbeidsloon 
1242 PRINT"Arbeidsloon......................";
1243 INPUT A(H,4)
1244 RETURN
1245 :
1250 REM : Onderdelen 
1252 PRINT"Onderdelen.......................";
1254 INPUT A(H,5)
1255 RETURN
1256 :
1260 REM : Onderdelen garantie 
1270 PRINT"Onderdelen garantie..............";
1272 INPUT A(H,6)
1273 RETURN
1274 :
1280 REM : Werk derden
1283 PRINT"Werk derden......................";   
1285 INPUT A(H,7)
1287 RETURN
1290 REM :KLANTNAAM
1292 PRINT"Klantnaam............................";
1293 INPUT N$
1294 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>9 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 Datum    
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  Faktuurnummer
1775 GOSUB 1180         :REM Omschrijving
1780 GOSUB 1230         :REM Olie 
1785 GOSUB 1240         :REM Arbeidsloon
1786 GOSUB 1250         :REM Onderdelen
1789 GOSUB 1260         :REM Onderdelen garantie
1790 GOSUB 1280         :REM Werk derden
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 950          :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 950:GOSUB 1550       :REM DISPLAY/RUBRIEK
2130 G=1 :Y=Y4                   :REM BESTAND VERANDEREN       
2140 IF J=0 THEN 2220
2150 ON J GOSUB 1070,1120,1180,1230,1240,1250,1260,1280,1290
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 ***
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>  Stop = 0 ";
3090 INPUT Y1,Y2,Y3
3095 IF Y1 =0 AND Y3 =0 THEN 3140
3100 IF Y1 < 0 OR Y1 > 31 THEN 3070
3110 IF Y2 < 0 OR Y2 >12 THEN 3070
3120 IF Y3 <83 OR Y3>100 THEN 3070
3122 H$=STR$(Y1) :D$=RIGHT$(H$,LEN(H$)-1) + " "
3123 H$= LEFT$("JANFEBMRTAPRMEIJUNJULAUGSEPOKTNOVDEC",Y2*3)
3125 D$=D$+RIGHT$(H$,3) :D$=D$ +STR$(Y3 +1900)
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
3270 PRINT
3280 PRINT TAB(20)"0 = Systeem verlaten "
3290 PRINT TAB(20)"1 = Invoer                   "
3300 PRINT TAB(20)"2 = Display en correctie "       
3310 PRINT TAB(20)"3 = Gegevens opslaan 
3320 PRINT TAB(20)"4 = Gegevens inlezen ** "
3330 PRINT TAB(20)"5 = Overzicht Onderhouskaart "
3340 PRINT
3370 PRINT TAB(15)"---------------------------------------"
3380 PRINT:PRINT"Wat is uw keuze ";
3390 INPUT M
3400 IF G <>-1 THEN 3420
3410 IF M < > 4 THEN 3250
3420 RETURN
3430 :
3440 REM ********** STUURMODULE **********
3450 GOSUB 70
3470 GOSUB 3240                   :REM MENU
3480 IF G=1 AND (M>=0 AND M<=2) THEN GOSUB 2990
3485 IF M=0 THEN GOSUB             
3490 IF M=1 THEN GOSUB 1690    :REM INvoer 
3500 IF M=2 THEN GOSUB 1860      :REM Display en correctie       
3510 IF M=3 THEN GOSUB 480      :REM WEGSCHRIJVEN
3520 IF M=4 THEN GOSUB 330        : REM Inlezen 
3530 IF M=5 THEN GOSUB 5000       : REM Overzicht 
3540 IF M=6 THEN GOSUB 710        :REM SORTEREN
3550 IF M=7 THEN GOSUB 5000      :REM VOORRAADOPN-LST
3570 IF M<>0 THEN 3470
3630 RETURN
3640 :
3780 :
5000 REM : overzicht
5010 F$="- Overzicht onderhoud -" :GOSUB  150:REM KOP
5020 PRINT:PRINT
5030 PRINT TAB(10)"Klantnaam.    ";N$
5040 PRINT TAB(10)"Kenteken .    ";D$
5105 N=5
5106 K=1
5107 I=0
5108 T=T+1 :PRINT
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
5250 PRINT"Datum. Fak.Nr.  Omschrijving.     Olie.  Arbeid.  Ond. ";
5260 PRINT"Ond/Gar. Werkderden."
5280 PRINT "-------------------------------------------------------------------------"
5290 PRINT A(C,1) ;TAB(9)A(C,2);TAB(17)B$(C);
5300 PRINT TAB(35)A(C,3);TAB(42)A(C,4);TAB(51)A(C,5);TAB(59)A(C,6);
5310 PRINT TAB(67)A(C,7)
5330 PRINT "-------------------------------------------------------------------------"   
5340 NEXT I
5342 PRINT
5344 PRINT TAB(5)" 0= 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 3230
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      :";D$
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"
5610 GOSUB 5110
5620 RETURN
5630 :
5700 REM : KLANTNAAM KENTEKEN
5710 F$="- Klantnummer -": GOSUB 100
5720 PRINT:
5730 PRINT TAB(10)"WELKE KLANT ";
5740 INPUT K$
5750 RETURN
AM KENTEKEN
5710 F$="- Klantnummer -"