10 REM ** VERZENDLIJST - ETIKETTEN- **
20 DATA NUMMER,1,1,AANHEF,3,1,"NAAM 1",3,7
30 DATA NAAM 2",4,1,ADRES,5,1,POSTCODE,6,1
40 DATA WOONPLAATS,6,9,LAND,7,1,CODE,0,0
50 DIM A$(11),A(11),B$(200,10),B(200),P(15)
60 GOTO 2460
70 :
80 REM ** INITIALISEREN **
90 T=0:G=-1:Q=0 :REM BESTANDSGROOTE/NIET GELEZEN
100 REM ** MAT B VULLEN VAN 1 T/M 200 **
110 FOR I=1 TO 200 : B(I) =I : NEXT I
120 LF$=CHR$(138) :REM LINEFEED
130 D=7           :REM GROOT ETIKET
140 RETURN
150 :
160 REM ** KOP VAN HET SCHERM AFDRUKKEN **
170 PRINT CHR$(27)"E" :REM SCHERM WISSEN
180 PRINT"**** VERZENDLIJST ****                 -- ETIKETTEN --  "
190 PRINT F$;TAB(40)"BESTAND    :";                               
194 IF R>0 THEN PRINT N$
195 PRINT TAB(40)"GEVULD     :";N
200 PRINT
210 RETURN
220 :
230 REM ** INLEZEN VAN SOURCE DISK **
240 F$="- LEZEN -":GOSUB 170
245 PRINT:PRINT
250 B$="INLEZEN BESTAND VAN SOURCE DISK ":GOSUB 510
260 IF S=2 THEN 480
265 ON ERROR GOTO 7000
270 OPEN"I",1, N$
280 INPUT #1, BESWOORD$             :REM NAAM BESTAND
290 INPUT #1,R,N,W,Y,E,X,X         :REM STUURVARIABELEN
300 REM ** GEBRUIKSNAMEN OPBOUWEN **
310 IF N=0 THEN 470
320 G=0  : GOSUB 170
330 REM ** RUBRIEK-NAMEN INLEZEN **
340 FOR I=1 TO R     
350 INPUT #1,A$(I),A(I)       :REM RUBRIEKNM  EN RUBRIEKLENGTE
360 NEXT I
370 REM ** INHOUD RUBRIEKEN **
380 S=INT(R/2 +.005)*2
390 FOR I= 1 TO N
400 FOR J= 1 TO S STEP 2
410 INPUT #1,B$(I,J),B$(I,J+1)
420 NEXT J
430 IF S<R THEN INPUT #1,B$(I,R)
440 NEXT I
450 REM ** EXTRA RUBRIEK TOEVOEGEN **
460 R=R +1 :  A$(R) = "VASTE TEKST " :A(R)=0
470 CLOSE
480 RETURN
490 :
500 REM ** JA/NEE **
510 PRINT B$ + "  <JA/NEE> ";
520 INPUT L$:L$=LEFT$(L$,1) :S=0
530 IF L$="J" THEN S=1
540 IF L$="N" THEN S=2
550 IF S=0 THEN 510
560 RETURN
570 :
580 REM ** RUBRIEKEN **
590 R1=R :IF M=3 THEN R1=R-1
600 PRINT"TE SELECTEREN RUBRIEKEN." : A = INT((R1 +1)/2)
610 FOR I=1 TO A
620 PRINT I;TAB(5)A$(I);
630 IF I+A> R1 THEN 650
640 PRINT TAB(22)I+A;TAB(25)A$(I+A)
650 NEXT I                        
660 IF A +A > R1 THEN PRINT
670 PRINT"-------------------------------------------------------"
680 PRINT"WELKE RUBRIEK ? GEEF <NUMMER/STOP = 0> ";
690 INPUT J
700 IF J< 0 OR J> R1 THEN 680
710 RETURN
720 :
730 REM ** SORTEER KEUZE **
740 F$="SORTEER-KEUZE ":GOSUB 170
750 GOSUB 590                     :REM RUBRIEKEN
760 IF J=0 THEN 780
770 E=J : GOSUB 810
780 RETURN
790 :
800 REM SORTEREN
810 F$="- SORTEREN -":GOSUB 170
815 PRINT:PRINT
820 PRINT"EEN OGENBLIK GEDULD A.U.B."
830 IF N<2 THEN 1040
840 FOR I= 2 TO N
850 X1 =1 : X2 =I :K=B(I)
860 X3=X1 +INT((X2-X1)/2) : L=B(X3)
870 IF A(E) < 0 THEN 910
880 IF B$(K,E) < B$(L,E) THEN 950
890 IF B$(K,E) > B$(L,E) THEN 970
900 X2=X3 : GOTO 1000
910 K1=VAL(B$(K,E)) :L1 = VAL(B$(L,E))
920 IF K1< L1 THEN 950
930 IF K1> L1 THEN 970
940 X2=X3
950 IF X2 = X3 THEN 1000
960 X2=X3 :GOTO 860
970 IF X1 = X3 THEN 1000
980 X1=X3 :GOTO 860
990 REM ** WISSELEN **
1000 IF I = X2 THEN 1020
1010 FOR J=I TO X2 + 1 STEP -1 : B(J) = B(J-1) :NEXT J
1020 B(X2)=K
1030 NEXT I
1040 RETURN
1050 :
1060 REM ** ETIKET ONTWERP **
1070 F$="- ETIKET-ONTWERP -" :GOSUB 170
1075 PRINT:PRINT
1080 J=1
1090 PRINT TAB(5)"....5....1....5....2....5....3...."      
1100 FOR I= 1 TO D              :REM AANTAL PRINT REGELS
1110 A=1: B=34
1120 PRINT I;TAB(5);
1130 P=INT(P(J)/10000 +.0005)
1140 K=INT((P(J) - P* 10000)/100 +.0005)
1150 H=P(J) - P * 10000 -K *100
1160 IF I<> P THEN 1280
1170 B=K-1
1180 L=ABS(A(H)) :B$ =LEFT$(A$(H),L)
1190 IF H=R THEN B$ = T$
1200 IF A> B THEN 1220
1210 FOR C=A TO B : PRINT "."; :NEXT C 
1220 PRINT B$; : A=B + LEN(B$) +1
1230 B=B+L
1240 IF A> B THEN 1260
1250 FOR C=A TO B : PRINT "#";:NEXT C
1260 A=B+1 : B=34 : J=J+1
1270 IF J<= T THEN 1130
1280 IF A> B THEN 1300
1290 FOR C=A TO B : PRINT "."; : NEXT C
1300 PRINT
1310 NEXT I
1320 RETURN 
1330 :
1340 REM ** ETIKETTEN **
1350 REM ** WELKE RUBRIEK IN GEBRUIK ? **
1360 IF Q=1 AND M=4 THEN 1830
1370 IF Q=1 THEN 1480
1380 RESTORE : J=1 : T=0
1390 FOR I= 1 TO 9
1400 READ L$,P,K             :REM INTERNE DATAFILE UITLEZEN   
1410 FOR J=1 TO R
1420 IF L$ <> A$ (J) OR P =0 THEN 1460
1430 REM ** REGEL OPSLAAN **
1440 T=T +1 : P(T) = P * 10000 + K * 100 +J
1450 J=R
1460 NEXT J
1470 NEXT I
1480 S=0 : H=T : Q=1 :REM HULPVARIABELEN
1490 FOR A=H TO 2 STEP -1
1500 FOR B=1 TO A
1510 IF P(A) > P(B) THEN 1530
1520 FOR J=1 TO 3 : L=P(A) : P(A)=P(B) :P(B)=L :NEXT J
1530 NEXT B
1540 NEXT A
1550 IF M=4 THEN 1830
1560 T= H+S : GOSUB 1070   :REM ETIKET-ONTWERP
1570 S=0 : H=T
1580 PRINT"WELKE PRINTREGEL WIJZIGEN <STOP = 0> ";
1590 INPUT P
1600 IF P=0 THEN 1830
1610 IF P < 0 OR P> D THEN 1570
1620 REM ** REGEL OPZOEKEN **
1630 FOR I= 1 TO H
1640 IF P <> INT(P(I)/10000 + .0005) THEN 1660
1650 P(I) =999999! : S=S -1
1660 NEXT I
1670 GOSUB 590                 :REM ** WELKE RUBRIEK ***
1680 IF J=0 THEN 1490
1690 REM ** POSITIE **
1700 PRINT"REGEL " ;P;"RUBRIEK ";A$(J)
1710 PRINT"OP WELKE POSITIE <STOP = 0>  ";           
1720 INPUT K            
1730 IF K=0 THEN 1490
1740 IF K< 1 OR K> 34 THEN 1700
1750 REM ** VASTE TEKST **
1760 IF J<> R THEN 1810
1770 PRINT"GEEF VASTE TEKST  ";
1780 INPUT T$ : A(R) = LEN(T$)
1790 IF A(R) < 35 THEN 1810
1800 T$ = LEFT$(T$,38)
1810 H=H+1 : P(H) = P * 10000 + K * 100 + J
1820 GOTO 1670
1830 RETURN
1840 :
1850 REM ** ETIKETTEN PRINTEN **
1860 GOSUB 1360    :REM ** ETIKET- ONTWERP **
1870 F$="- ETIKETTEN PRINTEN " : GOSUB 170
1880 PRINT :PRINT
1890 PRINT"HOEVEEL ETIKETTEN PER ADRES ";
1900 INPUT Q
1910 IF Q=0 THEN 2210
1920 IF Q=<0 THEN 1870
1930 REM ** CONTROLE OP PRINTER **
1940 B$="STAAT DE PRINTER AAN ":GOSUB 510
1950 IF S=2 THEN 2210
1960 Z=0
1970 REM ** PRINTEN **
1980 FOR I= 1 TO N                     :REM AANTAL ADRESSEN 
1990 FOR A=1 TO Q                      :REM AANTAL ETIKETTEN
2000 J=1
2010 FOR B=1 TO D
2020 P= INT(P(J)/10000 + .0005)
2030 IF B<> P THEN 2110
2040 H=INT((P(J)-P*10000)/100 +.0005)
2050 K=P(J)-P * 10000 -H *100 : C =B(I)
2060 IF A(K) < 0 THEN LPRINT TAB(H)VAL(B$(C,K));
2070 IF A(K) > 0 AND K<> R THEN  LPRINT TAB(H)B$(C,K);
2080 IF K=R THEN  LPRINT TAB(H)T$;
2090 J=J+1
2100 IF J <= T THEN 2020
2110  LPRINT 
2120 NEXT B
2130 LPRINT: LPRINT
2140 IF Z<> 0 THEN 2180
2150 B$="ETIKET GOED IN DE PRINTER " : GOSUB 510
2160 Z=1 : IF S=1 THEN 2180
2170 Z=0 : A=Q : I=N
2180 NEXT A
2190 NEXT I
2200 IF Z=0 THEN 1940
2210 RETURN
2220 :
2230 REM ** MENU **
2240 F$="- MENU -":GOSUB 170
2250 IF G=-1 THEN PRINT "BESTAND NIET INGELEZEN !"
2255 PRINT
2260 IF D=7 THEN PRINT "* BREED ETIKET"
2270 IF D<7 THEN PRINT "* SMAL ETIKET"
2280 PRINT
2290 PRINT "0 = STOPPEN PROGAMMA VERLATEN"
2300 PRINT "1 = INLEZEN VAN SOURCE DISK
2310 PRINT "2 = ETIKETONTWERP"
2320 PRINT "3 = SORTEREN OP VOLGORDE"
2330 PRINT "4 = ETIKETTEN PRINTEN"
2340 PRINT "5 = AFDRUK MET BREED ETIKET"
2350 PRINT "6 = AFDRUK MET SMAL ETIKET"
2355 PRINT:PRINT
2360 PRINT "WAT IS UW KEUZE ";
2370 INPUT M
2380 IF M=0 THEN CHAIN "ADMIN"
2385 IF M=2 THEN GOSUB 1360
2390 IF M=5 THEN D=7
2400 IF M=6 THEN D=4
2410 IF G=-1 AND M<>1 THEN 2240
2420 IF M<0 OR M>4 THEN 2240
2430 RETURN
2440 :
2450 REM ** STUURMODULE ***
2460 GOSUB 90                          :REM INITIALISEREN
2470 GOSUB 2240                        :REM MENU
2480 IF M=1 THEN GOSUB 2530           :REM INLEZEN
2490 IF M=2 THEN GOSUB 1360            :REM ETIKET-ONTWERP
2500 IF M=3 THEN GOSUB 740             :REM SORTEREN
2510 IF M=4 THEN GOSUB 1860            :REM ETIKETTEN
2520 IF M<> 0 THEN 2470
2530 F$="- INLEZEN BESTAND -":GOSUB 170:GOSUB 90       
2535 N$=""
2540 PRINT:PRINT
2550 PRINT"KAARTENBAK/SYSTEEM     -ETIKETTEN AFDRUK-"
2560 PRINT
2570 PRINT"VAN WELK BESTAND WILT U ETIKETTEN AFDRUKKEN ";
2580 INPUT N$
2590 GOTO 240
7000 CLOSE
7010 PRINT"BESTANDSNAAM ";"<<< "; N$ ;" >>>";" IS NIET IN TE LEZEN ! 
7020 PRINT"DRUK < OP 0 > VOOR OPNIEUW ";
7030 INPUT A$
7040 CHAIN "ETIKET"
M ";"<<< "; N$ ;