10 REM *** KAARTENBAK   - LIJSTEN - ***
20 DIM T$(5,2),T(6,2),C(15),A$(15),A(15),B$(200,10),B(200)     
30 GOTO 2460
40 :
50 REM *** INITIALISEREN ***
60 FOR I= 1 TO 200 : B(I) =I : NEXT I
70 A1=80                      :REM REGELLENGTE
80 G=-1                       :REM BESTAND NIET INGELEZEN 
90 H=-1 : H1 = -1             :REM GEEN KOPREGELS/PRINTFORA  XVMAT
100 FF$=CHR$(12)              :REM KARAKTER FORMFEED
110 LF$= CHR$(138)            :REM KARAKTER LINEFEED
120 RETURN
130 :
140 REM ** KOP **
150 PRINT CHR$(27)"E"
160 PRINT"** KAARTENBAK **                      -LIJSTEN-"
170 PRINT F$;TAB(40)"BESTAND   :";    
174 IF R>0 THEN PRINT N$
175 PRINT TAB(40)"GEVULD    :";N
180 PRINT:PRINT
190 RETURN
210 REM ** INLEZEN VAN SOURCE DISK **
220 F$="- LEZEN -" :GOSUB 150
225 PRINT:PRINT
230 B$="INLEZEN VAN SOURCE DISK ":GOSUB 460
240 IF S= 2 THEN 430
245 ON ERROR GOTO 7000
250 OPEN "I",1,N$
260 INPUT #1,BESWOORD$                  :REM NAAM BESTAND
270 INPUT #1,R,N,W,Y,E,X,X                :REM STUURGEGEVENS
280 IF N=0 THEN 430
290 G=0 : GOSUB 150                     :REM KOP
300 REM * RUBRIEKSNAMEN INLEZEN *
310 FOR I=1 TO R
320 INPUT #1,A$(I),A(I)                 :REM RUBRIEKSNAAM,LENGTE
330 NEXT I
340 REM ** INHOUD RUBRIEKEN LEZEN **
350 S=INT(R/2+.005)*2
360 FOR I= 1 TO N                       :REM AANTAL RECORDS
370 FOR J= 1 TO S STEP 2
380  INPUT #1,B$(I,J),B$(I,J+1)         :REM RUBRIEKSINHOUD
390 NEXT J
400 IF S<R THEN INPUT #1,B$(I,R)
410 NEXT I
420 CLOSE
430 RETURN
440 :
450 REM ** JA/NEE **
460 PRINT B$ + " <JA/NEE> ";
470 INPUT L$:L$=LEFT$(L$,1) :S=0
480 IF L$="J" THEN S=1
490 IF L$="N" THEN S=2
500 IF S=0 THEN 460
510 RETURN
520 :
530 REM *** RUBRIEKEN ***
540 PRINT"TE SELECTEREN RUBRIEKEN."
550 A=INT((R+1)/2)
560 FOR I= 1 TO A
570 PRINT I;TAB(4)A$(I);
580 PRINT TAB(20)"<";ABS(A(I)) ;">";     
590 IF I +A > R THEN 620
600 PRINT TAB(27) I+A ;TAB(30) A$(I+A);
610 PRINT TAB(45)"<";ABS(A(I+A));">"
620 NEXT I
630 IF A+A > R THEN PRINT
640 PRINT"---------------------------------------------------------------------"
650 PRINT"WELKE RUBRIEK ? GEEF  <NUMMER/STOP = 0> ";
660 INPUT J
670 IF J <0 OR J> R THEN 650
680 RETURN
690 :
700 REM  ** UITDRAAI PRINTREGEL **
710 GOSUB 150              :REM ** KOP
720 IF K1=0 THEN 780
730 FOR I=1 TO K1 : REM AANTAL REGELS
740 B=INT (C(I)/100 + .0005 ) : J = C(I) -B *100
750 PRINT "VAN";B;"T/M";B + ABS(A(J)) -1 ;
760 PRINT TAB(20)A$(J)
770 NEXT I
780 PRINT"--------------------------------------------------------------------"
790 RETURN
800 :
810 REM ** PRINTREGEL **
820 F$="- PRINTREGEL -"
825 PRINT:PRINT
830 IF H< 0 THEN 890
840 REM ** WIJZIGEN ? **
850 GOSUB 710              REM UITDRAAI PRINTREGEL
860 B$="WIJZIGEN  " + F$: GOSUB 460
870 IF S=2 THEN 1060
880 REM ** PRINT REGEL INVOEREN **
890 P=1
900 FOR K=1 TO 15
910 K1 = K -1
920 GOSUB 710              :REM UITDRAAI PRINTREGEL
930 PRINT"VRIJE POSITIE(S)  :";A1 +1 -P
940 GOSUB 540
950 IF J=0 THEN 1030
960 REM ** POSITIE **
970 PRINT"EERSTE VRIJE POSITIES  ";P;
980 PRINT"GEEF POSITIE - " + A$(J);
990 INPUT B
1000 IF B=0 THEN 1030
1010 IF B> A1 OR B < P THEN 970
1020 C(K) =B * 100 +J : P = B + ABS(A(J))
1030 IF J=0 OR B =0 THEN K= 15
1040 NEXT K
1050 H=1                  :REM PRINT FORMAT AANGEMAAKT
1060 RETURN
1070 :
1080 REM ** PRINTREGEL-AFDRUK **
1090 F$="- FORMAT PRINTREGEL -" :GOSUB 150 :REM KOP
1095 PRINT:PRINT
1100 FOR I= 1 TO K1
1110 B=INT(C(I)/100 +.005) :J = C(I) -B * 100
1120 PRINT"VAN";B;"T/M";B + ABS(A(J));
1130 PRINT TAB(20)A$(J)
1140 NEXT I
1150 B$="GECONTROLEERD " : GOSUB 460     :REM ** JA/NEE
1160 RETURN
1170 :
1180 REM ** KOPREGELS-SCHERM **
1190 GOSUB 150
1200 IF T(6,J) = 0 THEN 1250
1210 FOR K=1 TO T(6,J)
1220 PRINT"VAN";T(K,J);"T/M";T(K,J) + LEN(T$(K,J))-1;
1230 PRINT TAB(15)T$(K,J)
1240 NEXT K
1250 PRINT"---------------------------------------------------------------------"   
1260 RETURN
1270 :
1280 REM ** KOPREGEL-REGEL **
1290 GOSUB 1190                         :REM ** KOPREGEL-SCHERM
1300 PRINT"EERSTE VRIJE POSITIE ";P
1310 PRINT"OP WELKE POSITIE <STOP = 0> ";
1320 INPUT A
1330 IF A=0 OR A> A1 THEN 1390
1340 IF A< P OR A< 0 THEN 1310
1350  PRINT"BESCHIKBAAR ";A1 +1-A;"POSITIE(S).  ";
1360 PRINT"WELKE TEKST VANAF POS.  ";A
1370 INPUT A$
1380 IF A+LEN(A$) -1 > A1 THEN A$ = LEFT$(A$,A1-A)
1390 RETURN
1400 :
1410 REM ** KOP - INVOER **
1420 FOR J= 1 TO 2
1430 F$="KOPREGEL" + STR$(J)
1435 PRINT:PRINT
1440 IF H1 < 0 THEN 1500
1450 REM ** WIJZIGEN **
1460 GOSUB 1190                          :REM ** KOPREGEL-SCHERM **
1470 B$="WIJZIGEN " + F$ : GOSUB 460     :REM ** JA/NEE
1480 IF S=2 THEN 1580
1490 REM ** INVOEREN WIJZIGEN **
1500 T(6,J)=0 :P=1                       :REM TELLER=0 /POS TELLER
1510 FOR I= 1 TO 5                       :REM VIJF REGELS RUIMTE
1520 GOSUB 1290                           :REM KOPREGEL-SCHERM
1530 T(I,J) = A : T$(I,J) = A$ : P = A + LEN (A$)
1540 IF A <> 0 THEN T(6,J) =I
1550 IF P > A1 THEN A=0       
1560 IF A=0 THEN I=5
1570 NEXT I
1580 NEXT J
1590 H1 =1                                :REM KOPREGELS AFGEMAAKT
1600 RETURN
1610 :
1620 REM ** SORTEER-KEUZE **
1630 F$ ="- SORTEER-KEUZE -" :GOSUB 150
1635 PRINT
1640 GOSUB 540
1650 IF J= 0 THEN 1670
1660 E=J : GOSUB 1700
1670 RETURN
1680 :
1690 REM ** SORTEREN **
1700 F$="- SORTEREN -" :GOSUB 150
1705 PRINT
1706 PRINT"EVEN GEDULD A.U.B. ER WORDT GESORTEERD !"
1710 IF N< 2 THEN 1920
1720 FOR I= 2 TO N
1730 X1 =1 : X2 = I : K=B(I)
1740 X3=X1 + INT((X2 -X1)/2) :L=B(X3)
1750 IF A(E) < 0 THEN 1790
1760 IF B$(K,E) > B$(L,E) THEN 1850
1770 IF B$(K,E) < B$(L,E) THEN 1830
1780 X2 = X3 : GOTO 1880
1790 K1 = VAL (B$(K,E)) : L1=VAL(B$(L,E))
1800 IF K1 > L1 THEN 1850
1810 IF K1 < L1 THEN 1830
1820 X2=X3
1830 IF X2 = X3 THEN 1880
1840 X2 = X3 : GOTO 1740
1850 IF X1 = X3 THEN 1880
1860 X1 = X3 : GOTO 1740
1870 REM ** WISSELEN **
1880 IF I=X2 THEN 1910
1890 FOR J= I TO X2 + 1 STEP -1 : B(J) = B(J-1) : NEXT J
1900 B(X2) = K
1910 NEXT I
1920 RETURN
1930 :
1940 REM ** PRINT UIVOER **
1950 REM ** CONTROLE PRINTER **
1960 F$="- LIJST CONTROLE -" :GOSUB 150
1965 PRINT:PRINT
1970 B$="LIJST OP HET SCHERM -CONTROLE-  " :GOSUB 460
1975 PRINT"********************************************************************"
1980 IF S= 2 THEN 2600
1990 B=0                           :REM BLAD TELLER
2000 FOR I= 1 TO N  
2010 IF I<> 1 AND I/51 - INT(I/51) <> 0 THEN 2160
2020 REM ** NIEUWE BLADZIJDE **
2030 B=B+1
2040 PRINT FF$ : PRINT TAB(A1-10) "PAG";B
2050 PRINT
2060 REM ** PRINT REGEL AFDRUKKEN **
2070 FOR J= 1 TO 2
2080 IF T(6,J) =0 THEN 2130
2090 FOR K=1 TO T(6,J)
2100 PRINT TAB(T(K,J))T$(K,J);
2110 NEXT K
2130 NEXT J
2140 PRINT
2150 REM REGEL PRINTEN **
2160 FOR K=1 TO K1
2170 A=INT(C(K)/100) : J = C(K) -A * 100
2180 IF A(J) < 0 THEN PRINT TAB(A) VAL (B$(B(I),J));
2190 IF A(J) >0 THEN PRINT TAB(A)B$(B(I),J);
2200 NEXT K
2220 NEXT I
2225 PRINT
2230 B$="IS DEZE OPSTELLING IN ORDE  ": GOSUB 460
2236  IF S= 2 THEN 2240
2237 IF S=1 THEN 2600
2240 RETURN
2250 :
2260 REM ** MENU **
2270 F$="- MENU -": GOSUB 150
2275 PRINT:PRINT
2280 IF G=-1 THEN PRINT"BESTAND NIET INGELEZEN !"
2290 IF G=0 AND H1 =-1 THEN PRINT"GEEN KOPREGELS GEVULD !"
2300 IF G=0 AND H=-1 THEN PRINT "GEEN PRINTFORMAT GEVULD !"
2310 PRINT:PRINT
2320 PRINT"0 = SYSTEEM VERLATEN"
2330 PRINT"1 = INLEZEN VAN SOURCE DISK"
2340 PRINT"2 = KOPREGELS SAMENSTELLEN "
2350 PRINT"3 = PRINTREGELS SAMENSTELLEN"
2360 PRINT"4 = OP VOLGORDE SORTEREN"
2370 PRINT"5 = LIJST UITVOEREN OP PRINTER  <EERST CONTROLE !>"
2380 PRINT:PRINT"WAT IS UW KEUZE  ";
2390 INPUT M
2400 IF M=0 THEN CHAIN "ADMIN"
2410 IF G=-1 AND M<> 1 THEN 2270
2420 IF (H=-1 OR H1=-1) AND M=5  THEN 2270
2430 RETURN
2440 :
2450 REM ** STUURMODULE **
2460 GOSUB 60
2470 GOSUB 2270                         :REM MENU
2475 IF M=1 AND R>0 THEN GOSUB 2980 :GOSUB 2270
2480 IF M=1 THEN GOSUB 2550             :REM KIES BESTAND
2490 IF M=2 THEN GOSUB 1420             :REM KOPREGEL
2500 IF M=3 THEN GOSUB 820              :REM PRINTREGEL
2510 IF M=4 THEN GOSUB 1630             :REM SORTEREN
2520 IF M=5 THEN GOSUB 1960           :REM PRINTEN
2530 IF M<> 0 THEN 2470
2540 REM ** OPVRAGEN BESTAND **
2550 F$="-KIES BESTAND-" :GOSUB 150
2560 PRINT"VAN WELK BESTAND WILT U EEN LIJST SAMENSTELLEN  ";
2570 INPUT N$
2580 PRINT:PRINT
2590 GOTO 220
2600 REM ** PRINT-UITVOER **
2610 REM ** CONTROLE PRINTER **
2620 F$="- LIJST PRINTEN -" :GOSUB 150
2630 PRINT:PRINT
2640 B$="STAAT DE PRINTER AAN " :GOSUB 460
2650 IF S= 2 THEN 2910
2660 B=0                           :REM BLAD TELLER
2670 FOR I= 1 TO N
2680 IF I<> 1 AND I/51 - INT(I/51) <> 0 THEN 2830
2690 REM ** NIEUWE BLADZIJDE **
2700 B=B+1
2710 LPRINT  : LPRINT TAB(A1-10) "PAG";B
2720 LPRINT
2730 REM ** PRINT REGEL AFDRUKKEN **
2740 FOR J= 1 TO 2
2750 IF T(6,J) =0 THEN 2800
2760 FOR K=1 TO T(6,J)
2770 LPRINT TAB(T(K,J))T$(K,J);
2780 NEXT K
2790 LPRINT
2800 NEXT J
2810 LPRINT
2820 REM REGEL PRINTEN **
2830 FOR K=1 TO K1
2840 A=INT(C(K)/100) : J = C(K) -A * 100
2850 IF A(J) < 0 THEN LPRINT TAB(A) VAL (B$(B(I),J));
2860 IF A(J) >0 THEN LPRINT TAB(A)B$(B(I),J);
2870 NEXT K
2890 NEXT I
2900 LPRINT FF$
2910 RETURN
2920 :
2930 F$="-KIES BESTAND-" :GOSUB 150
2940 LPRINT"VAN WELK BESTAND WILT U EEN LIJST SAMENSTELLEN ? ";
2950 INPUT N$
2960 LPRINT:LPRINT
2970 GOTO 220
2980 LPRINT"U HEBT REEDS EEN BESTAND OPGEVRAAGT !"
2990 B$="WILT U EEN NIEUW BESTAND OPVRAGEN ":GOSUB 460
3000 IF S= 2 THEN 3050
3010 GOTO 2480 : M=1
3050 RETURN
3060 :
7000 CLOSE
7010 PRINT"BESTANDSNAAM ";"<<< "; N$ ;" >>>";" IS NIET IN TE LEZEN ! 
7020 PRINT"DRUK < OP 0 > VOOR OPNIEUW ";
7030 INPUT A$
7040 CHAIN "KARTLIST"
";"<<< "; 