10 REM ** KAARTENBAK -INVOER/CORRECTIE ***
20 DIM A$(10),A(10),B$(200,10),B(200)
30 GOTO 2930
40 :
50 REM ** INITIALISEREN **
60 T=200 :G=-1
70 REM ** MAT B VULLEN VAN 1 T/M 200 **
80 FOR I=1 TO T : B(I) = I : NEXT I
90 LF$=CHR$(138)      :REM LINEFEED KARAKTER
100 RETURN
110 :
120 REM ** KOP VAN HET SCHERM AFDRUKKEN **
130 PRINT CHR$(27)"E"                     :REM SCHERM WISSEN
140 PRINT"*** KAARTENBAK ***           -- INVOER & CORRECTIE --"
150 PRINT F$;TAB(30)"BESTAND   : ";    
155 IF R=0 THEN 160
156 IF R>1 THEN PRINT N$
160 PRINT TAB(30)"GEVULD    :";N;" VRIJ :"T-N;
170 PRINT
180 RETURN
190 :
200 REM ** OPSLAAN OP SOURCE DISK **
210 GOSUB 2100        :REM ** SORTEREN **
220 F$ ="- SCHRIJVEN -":GOSUB 130
225 PRINT:PRINT
230 B$="GEGEVENS OPSLAAN OP SOURCE DISK ":GOSUB 750
240 IF S=2 THEN 440
250 REM ** FEITELIJK WEGSCHRIJVEN **
260 REM ** STUURFILE **
270 OPEN "O",1, N$  
280 PRINT #1,BESWOORD$
290 PRINT#1,R;",";N;",";W;",";Y;",";E;",";X;",";X
300 REM ** RUBRIEKSGEGEVENS OPSLAAN **
310 FOR I=1 TO R
320 PRINT #1,A$(I);",";A(I)
330 NEXT I
340 REM ** INHOUD RUBRIEKEN OPSLAAN **
350 S=INT(R/2+.005)*2
360 FOR I=1 TO N
370 FOR J=1 TO S STEP 2
380 PRINT #1,B$(B(I),J);",";B$(B(I),J+1)
390 NEXT J
400 IF S< R THEN PRINT #1,B$(B(I),R)
410 NEXT I
420 G=0                   :REM OPGESLAGEN     
430 D=N :IF N=0 THEN D=1
440 CLOSE
450 RETURN
460 :
470 REM ** INLEZEN VAN SOURCE DISK **
480 REM INLEZEN STUURFILE **
490 F$="- LEZEN -" :GOSUB 130
495 PRINT :PRINT
500 B$="INLEZEN BESTAND" :GOSUB 750
510 IF S=2 THEN 690
515 ON ERROR GOTO 7000
520 OPEN "I",1, N$ 
530 INPUT #1,BESWOORD$ 
540 INPUT #1,R,N,W,Y,E,X,X           :REM STUURVARIABELEN
550 GOSUB 130 :I=0
560 REM ** RUBRIEKSNAMEN OPBOUWEN **
570 FOR I= 1 TO R
580 INPUT #1,A$(I),A(I)
590 NEXT I
600 REM ** INHOUD RUBRIEKEN LEZEN **
610 IF N=0 THEN 690
620 S=INT(R/2+.005) *2
630 FOR I=1 TO N
640 FOR J= 1 TO S STEP 2
650 INPUT #1,B$(I,J),B$(I,J+1)            
660 NEXT J
670 IF S<R THEN INPUT #1,B$(I,R)
680 NEXT I
690 G=0            :REM GEGEVENS INGELEZEN
700 D=N : IF N=0 THEN D=1
710 CLOSE
720 RETURN
730 :
740 REM ** JA/NEE **
750 PRINT B$ + " <JA/NEE> ";
760 INPUT L$ :L$=LEFT$(L$,1) :S=0
770 IF L$="J" THEN S=1
780 IF L$="N" THEN S=2
790 IF S=0 THEN 750
800 RETURN
810 :
820 REM ** CONTROLE OP SCHRIJVEN **
830 F$="-CONTROLE -" :GOSUB 130
835 PRINT:PRINT:
840 PRINT"GEGEVENS STAAN NOG NIET OP SOURCE DISK !"
850 B$="NOG OPSLAAN " : GOSUB 750
860 IF S=1 THEN GOSUB 210
870 RETURN 
880 :
890 REM ** TOEVOEGEN **
900 F$="- TOEVOEGEN -" : GOSUB 130
910 PRINT
912 PRINT"WILT U STOPPEN MET INVOEREN ! GEEF ' & ' EN <RETURN> "
913 PRINT
920 IF W=2 THEN PRINT"    " ;A$(1);TAB(17);Y+1
925 PRINT"   ******************"                   
926 PRINT
930 K=1 : IF W=2 THEN K=2
940 H=B(N+1)                   :REM POINTER HULP
950 FOR J=K TO R
960 GOSUB 1090                 :REM GEGEVENS INVOER
970 IF L=0 THEN J=R            :REM LUS OP MAX. ZETTEN
980 NEXT J
990 IF L=0 THEN 1060
1000 N=N+1 :Y=Y+1
1010 IF W <> 2 THEN 1050
1020 REM ** NUM.WAARDE OMZETTEN IN STRING *
1030 B$(H,1)=STR$(Y) :IF Y<0 THEN 1050
1040 L=LEN(B$(H,1)) :B$(H,1) = "+" + RIGHT$(B$(H,1),L-1)
1050 IF N+1 <= T THEN 900
1055 IF N +1 > T THEN 1060
1060 RETURN
1070 :
1080 REM ** GEGEVENS INVOER **
1090 PRINT J ;" : "+A$(J);TAB(25);
1100 INPUT B$(H,J)
1110 IF LEN(B$(H,J)) <= ABS(A(J)) THEN 1130
1120 B$(H,J) = LEFT$(B$(H,J),ABS(A(J))) :REM AFKAPPEN
1130 L=1 : IF LEFT$ (B$(H,J),1) = "&" THEN L=0
1140 G=1                    :REM BESTANDWIJZIGING
1150 RETURN
1160 :
1170 REM ** RUBRIEKEN **
1180 PRINT"WELKE RUBRIEK ? GEEF <NUMMER/STOP=0> ";
1190 INPUT J
1200 IF J<0 OR J> R THEN 1180
1210 RETURN
1220 :
1230 REM ** DISPLAY **
1235 PRINT:PRINT:PRINT
1240 K=1 : IF W=2 THEN K=2
1250 IF W=2 THEN PRINT "NUMMER:";VAL(B$(H,1))
1260 PRINT "RUB.NR.";TAB(10)"RUBRIEKSNAAM";TAB(26)"INHOUD"
1262 PRINT"********************************"
1265 PRINT
1270 FOR J=K TO R
1280 PRINT J;TAB(10)A$(J);TAB(26)B$(H,J)
1290 NEXT J
1300 PRINT "-----------------------------------------------------------"
1310 RETURN
1320 :
1330 REM *** DISPLAY EN CORRECTIE ***
1340 P=N:           REM *** HULP TELLER ***
1350 IF P<1 THEN 1620
1360 F$="- DISPLAY -":GOSUB 130
1370 H=B(P):GOSUB 1240
1380 PRINT"0 = STOP       -TERUG MENU-      ";
1390 PRINT TAB(42)"3 = ZOEKEN"
1400 PRINT"1 = VORIGE     -TERUG BLADEREN-  "; 
1410 PRINT TAB(42)"4 = CORRECTIE"
1420 PRINT"2 = VOLGENDE   -VOORUIT BLADEREN-";   
1430 PRINT TAB(42)"9 = VERWIJDEREN"
1435 PRINT:PRINT:
1440 PRINT "WAT IS UW KEUZE";
1450 INPUT Q
1460 REM *** Q > 10 ***
1470 REM *** ZOEKEN OP NUMMER ***
1480 IF Q<10 OR W=0 THEN 1530
1490 FOR I=1 TO N
1500 IF Q<>VAL(B$(B(I),1)) THEN 1520
1510 P=I:I=N
1520 NEXT I
1530 IF Q=1 THEN P=P-1
1540 IF P=0 THEN P=N
1550 IF  Q=2 THEN P=P+1
1560 IF P>N THEN P=1
1570 IF Q=3 THEN GOSUB 1860
1580 IF Q=4 THEN GOSUB 1650
1590 IF Q=5 THEN GOSUB 2590
1600 IF Q=9 THEN GOSUB 1750
1610 IF Q<>0 THEN 1350
1620 RETURN
1630 :
1640 REM *** CORRECTIE ***
1650 F$="- CORRECTIE -":GOSUB 130:GOSUB 1240
1660 GOSUB 1180
1670 IF W=2 AND J=1 THEN 1720      :REM *** AUTO NRS. ***
1680 IF J=0 THEN 1720
1690 L$=B$(H,J):GOSUB 1090
1700 IF L=0 THEN B$(H,J)=L$
1710 IF L=1 AND J=E THEN D=P
1720 RETURN
1730 :
1740 REM *** VERWIJDEREN ***
1750 F$="- VERWIJDEREN -":GOSUB 130:GOSUB 1240
1755 PRINT:PRINT
1760 B$="VERWIJDEREN - ZEKER WETEN -":GOSUB 750
1770 IF S=2 THEN 1830             
1780 REM *** PLAATS VRIJMAKEN ***
1790 FOR I=P TO N-1:B(I)=B(I+1):NEXT I:    REM *** SCHUIVEN ***
1800 B(N)=H:N=N-1:                   REM *** VRIJE PLAATS ***
1810 IF P>N THEN P=N : Y=Y-1
1820 Q=1
1830 RETURN
1840 :
1850 REM *** ZOEKEN ***
1860 F$="- ZOEKEN -":GOSUB 130:       REM *** KOP ***
1870 PRINT :PRINT
1880 FOR I=1 TO R:PRINT I;TAB(10)A$(I):NEXT I
1890 PRINT"--------------------------------------------------------------"
1900 GOSUB 1180:                       REM *** RUBRIEKEN ***
1910 IF J=0 THEN 2070
1920 REM *** VOORWAARDEN ***
1930 PRINT"WAARAAN DIENT  ";A$(J);"  TE VOLDOEN  ";
1940 INPUT L$:L=LEN(L$):L1=VAL(L$)
1950 REM *** ZOEKPROCES ***
1960 PRINT"EVEN GEDULD AUB"
1970 FOR I=1 TO N
1980 IF A(J)>0 THEN 2010
1990 IF L1<>VAL(B$(B(I),J)) THEN 2030
2000 GOTO 2020
2010 IF L$<>LEFT$(B$(B(I),J),L) THEN 2030
2020 J=0:P=I:I=N:                        REM *** LUS OP MAX ***
2030 NEXT I
2040 IF J=0 THEN 2070
2045 PRINT:PRINT
2050 PRINT"NIET GEVONDEN"
2060 FOR J=1 TO 200:NEXT J       :          REM *** WACHTLUS ***
2070 RETURN
2080 :
2090 REM *** SORTEREN ***
2100 F$="- SORTEREN -":GOSUB 130:         REM *** KOP ***
2105 PRINT:PRINT
2110 IF N<2 OR D=N THEN 2350
2120 FOR I=D TO N
2130 X1=1:X2=I:K=B(I)
2140 X3=X1+INT((X2-X1)/2):L=B(X3)
2150 IF A(E)<0 THEN 2210
2160 REM *** ALFANUMMERIEK ***
2170 IF B$(K,E)<B$(L,E) THEN 2250
2180 IF B$(K,E)>B$(L,E) THEN 2270
2190 X2=X3 :GOTO 2300
2200 REM *** NUMMERIEK ***
2210 K1=VAL(B$(K,E)):L1=VAL(B$(L,E))
2220 IF K1<L1 THEN 2250
2230 IF K1>L1 THEN 2270
2240 X2=X3
2250 IF X2=X3 THEN 2300
2260 X2=X3:GOTO 2140
2270 IF X1=X3 THEN 2300
2280 X1=X3:GOTO 2140
2290 REM *** WISSELEN ***
2300 IF I=X2 THEN 2340
2310 FOR J=I TO X2+1 STEP -1:B(J)=B(J-1):NEXT J
2320 B(X2)=K
2330 NEXT I
2340 D=N
2350 RETURN
2360 :
2370 REM *** BESTAND NAAR PRINTER ***
2380 F$="- AFDRUK BESTAND -":GOSUB 130
2390 PRINT :PRINT
2400 B$="STAAT DE PRINTER AAN":GOSUB 750
2410 IF S=2 THEN 2560
2420 FOR I=1 TO N
2430 IF (I-1)/5-INT((I-1)/5)<>0 THEN 2480
2440 LPRINT
2450 LPRINT "BESTANDSNAAM";N$
2460 FOR J=1 TO R:LPRINT A$(J);" / ";   :NEXT J
2470 LPRINT:LPRINT
2480 H=B(I)
2490 FOR J=1 TO R
2500 IF A(J)>0 THEN LPRINT B$(H,J);
2510 IF A(J)<0 THEN LPRINT VAL(B$(H,J));
2520 LPRINT " / ";
2530 NEXT J
2540 LPRINT
2550 NEXT I
2560 RETURN
2570 :
2580 REM *** RECORDS NAAR PRINTER ***
2590 B$="STAAT DE PRINTER AAN":GOSUB 750
2600 IF S=2 THEN 2700
2610 LPRINT "BESTAND :";N$
2620 K=1:IF W=2 THEN K=2
2630 IF W=2 THEN LPRINT"NUMMER :";B$(H,1)
2640 LPRINT "RUBRIEKSNR.";TAB(13)"RUBRIEKSNAAM";
2650 LPRINT TAB(28)"INHOUD"
2660 FOR J=K TO R
2670 LPRINT TAB(8)J;TAB(13) A$(J);TAB(29) B$(H,J)
2680 NEXT J
2690 LPRINT
2700 RETURN
2710 :
2720 REM *** MENU ***
2730 F$="- MENU -":GOSUB 130
2733 PRINT
2735 IF N+1 > T THEN PRINT "** GEVULD BESTAND TOT MAX. 200 ! **"  
2736 PRINT
2740 IF G=-1 THEN PRINT"BESTAND NIET INGELEZEN "
2750 IF G=1 THEN PRINT"BESTAND NIET WEGGESCHREVEN"
2760 PRINT:PRINT:PRINT:
2770 PRINT"0 = STOPPEN - VERLATEN SYSTEEM -"
2780 PRINT"1 = TOE VOEGEN VAN NIEUWE RECORDS."
2790 PRINT"2 = DISPLAY/CORRECTIE/VERWIJDEREN."
2800 PRINT"3 = GEGEVENS VAN SOURCE DISK. **"
2810 PRINT"4 = GEGEVENS NAAR SOURCE DISK SCHRIJVEN."
2820 B$="":IF G<>-1 THEN B$=" VAN "+A$(E)
2830 PRINT"5 = SORTEREN OP VOLGORDE.";B$
2840 PRINT"6 = COMPLETE BESTAND NAAR PRINTER STUREN."
2850 PRINT
2860 PRINT"WAT IS UW KEUZE ";
2870 INPUT M
2880 IF G<>-1 THEN 2900
2890 IF M<>3 AND M<>0 THEN 2730
2900 RETURN
2910 :
2920 REM *** STUURMODULE ***
2930 GOSUB 60  :                 REM *** INITIALISEREN ***
2940 GOSUB 2730 :                REM *** MENU ***
2945 IF M=1 AND N=>T THEN 2940
2950 IF G=1 AND (M=0 OR M=3) THEN GOSUB 830
2955 IF M=0 THEN CHAIN "ADMIN"
2960 IF M=1 THEN GOSUB 900  :     REM *** TOEVOEGEN ***
2970 IF M=2 THEN GOSUB 1340:     REM *** DISPLAY ***
2980 IF M=3 THEN GOSUB 3040 :      REM *** LEZEN ***
2990 IF M=4 THEN GOSUB 210       REM *** SCHRIJVEN ***
3000 IF M=5 THEN GOSUB 2100:     REM *** SORTEREN ***
3010 IF M=6 THEN GOSUB 2380:     REM *** PRINTEN ***
3020 IF M<>0 THEN 2940
3030 :
3040 REM ** BESTAAND BESTAND OPVRAGEN **
3050 F$="- KIES BESTAAND BESTAND -" : GOSUB 130
3060 PRINT:PRINT
3065 PRINT"**-KAARTENBAK/SYSTEEM-**"
3066 PRINT
3070 PRINT "WELK BESTAAND BESTAND WILT U MEE WERKEN ";
3080 INPUT N$
3100 GOTO 490
3110 :
7000 CLOSE
7010 PRINT"BESTANDSNAAM ";"<<< "; N$ ;" >>>";" IS NIET IN TE LEZEN ! 
7020 PRINT"DRUK < OP 0 > VOOR OPNIEUW ";
7030 INPUT A$
7040 CHAIN "INVOCOR" 
";"<<< "; N$ ;" >>>";" IS NIET IN TE LEZEN ! 
7020 PRINT"DRUK < OP 0 > VOOR OPNIEUW ";
7030 INPUT A$
7040 CHAIN "IN