10 REM *********************************************************** 20 REM * REPUBLIC - REPORT GENERATOR FOR PUBLIC DOMAIN 30 REM * AUTHOR: ERIK DE RUIJTER - JULY 1984 40 REM ******************************************************** 50 OPTION BASE 1 100 ON ERROR GOTO 9900 110 LET NAAMPROG$= "BOEKING " : LET NAAM.AUT$= "RUSOF UNLTD. " 120 LET N.VELD= 8 : LET N.REC= 141 : LET N.CHAR= 92 130 DIM VNAAM$(N.VELD), VLEN(N.VELD) 150 VNAAM$( 1) = "BOEKNUMMER " : VLEN( 1) = 4 160 VNAAM$( 2) = "NAAM " : VLEN( 2) = 20 170 VNAAM$( 3) = "INITIALEN " : VLEN( 3) = 15 180 VNAAM$( 4) = "ADRES " : VLEN( 4) = 20 190 VNAAM$( 5) = "POSTKODE " : VLEN( 5) = 7 200 VNAAM$( 6) = "WOONPLAATS " : VLEN( 6) = 20 210 VNAAM$( 7) = "BESTEMMING " : VLEN( 7) = 4 220 VNAAM$( 8) = "AANTAL " : VLEN( 8) = 8 1520 LET HN.VELD= 4 : LET HN.REC= 282 : LET HN.CHAR= 46 1530 DIM HVNAAM$( 4 ), HVLEN( 4 ) 1550 HVNAAM$( 1) = "PLAATSKODE " : HVLEN( 1) = 4 1560 HVNAAM$( 2) = "TRAJEKTKODE " : HVLEN( 2) = 2 1570 HVNAAM$( 3) = "PLAATSNAAM " : HVLEN( 3) = 15 1580 HVNAAM$( 4) = "HALTE " : HVLEN( 4) = 25 2000 REM REPORTPARAMETERS 2005 N.KOP = 5 : DIM RKOP$(N.KOP) 2010 RKOP$( 1 ) = " " 2020 RKOP$( 2 ) = " N.A.W. GEGEVENS BOEKINGEN BLZ. %%P" 2030 RKOP$( 3 ) = " + BOEKNUMMER /BESTEMMING/AANTAL" 2040 RKOP$( 4 ) = " ===================================================================" 2050 RKOP$( 5 ) = " " 2100 PLEN = 72 : PDOWN = 2 2110 RVOOR = 0 : RACHTER = 1 2120 RAANT = 3 2140 DIM RVER(N.VELD) , RHOR(N.VELD) 2150 RVER( 1 ) = 2 : RHOR( 1 ) = 26 2160 RVER( 2 ) = 1 : RHOR( 2 ) = 8 2170 RVER( 3 ) = 1 : RHOR( 3 ) = 4 2180 RVER( 4 ) = 2 : RHOR( 4 ) = 4 2190 RVER( 5 ) = 3 : RHOR( 5 ) = 4 2200 RVER( 6 ) = 3 : RHOR( 6 ) = 13 2210 RVER( 7 ) = 3 : RHOR( 7 ) = 36 2220 RVER( 8 ) = 3 : RHOR( 8 ) = 54 2910 KVELD1 = 7 2920 KHULP1 = 1 : KDEK1 = 3 3000 PRINT CLS$ : PRINT STRING$(80,"=") 3010 PRINT FNADR$(8,10);SSI$;NAAMPROG$;SSO$ 3020 PRINT FNADR$(10,10);"A report-writing program made with help of REP.ublic by ";NAAM.AUT$ 3025 DIM VINH$(N.VELD) 3030 IF KVELD1 = 0 THEN 3500 3035 GOSUB 10000 3040 PRINT FNADR$(12,20);"naam hulptabel ?" 3050 IVER=12 : IHOR=40 : ILEN=14 : IM=0 : GOSUB 15000 3060 IF LEN(INVOER$) > 12 THEN IF MID$(INVOER$,2,1) < > ":" THEN 3050 3070 IF MID$(INVOER$,(LEN(INVOER$)-3),1) < > "." THEN 3050 3080 WH$ = INVOER$ : OPEN "I",1,WH$ 3090 INPUT #1, LI$ 3095 PRINT FNADR$(14,20);"even ";WH$;" inlezen" 3100 HREC = VAL(LI$) : DIM HARRAY$(HREC,2) 3110 FOR L=1 TO HREC 3120 LINE INPUT #1, LI$ 3130 HARRAY$(L,1) = MID$(LI$,HV1,HVLEN(KHULP1)) 3140 HARRAY$(L,2) = MID$(LI$,HV2,HVLEN(KDEK1)) 3150 NEXT : CLOSE #1 3160 IF KHULP1 = 1 THEN 3500 3170 PRINT FNADR$(14,47);"en sorteren op dekodeersleutel" 3180 FOR LI=1 TO HREC-1 3190 FOR LJ=LI TO HREC 3200 IF HARRAY$(LI,1) <= HARRAY$(LJ,1) THEN 3220 3210 SWAP HARRAY$(LI,1) , HARRAY$(LJ,1) : SWAP HARRAY$(LI,2), HARRAY$(LJ,2) 3220 NEXT : NEXT 3500 PRINT FNADR$(16,20);"even de rapportindeling reorganiseren...." 3510 DIM RVUL(N.VELD,2) 3520 FOR L= 1 TO N.VELD 3530 RVUL(L,1) = L : RVUL(L,2) = RVER(L)+.01*RHOR(L) 3540 NEXT 3550 FOR LI=1 TO N.VELD -1 3560 FOR LJ=LI TO N.VELD 3570 IF RVUL(LI,2) < RVUL(LJ,2) THEN 3590 3580 SWAP RVUL(LI,1) , RVUL(LJ,1) : SWAP RVUL(LI,2) , RVUL(LJ,2) 3590 NEXT : NEXT 3600 PRINT FNADR$(18,10);"naam afdrukbestand graag:" 3605 PRINT FNADR$(19,10);"(NO! = einde programma)" 3610 IVER=18 : IHOR=35 : ILEN=14 : IM=0 : GOSUB 15000 3620 IF LEN(INVOER$) > 12 THEN IF MID$(INVOER$,2,1) < > ":" THEN 3610 3625 IF INVOER$ = "NO!" THEN PRINT CLS$ : PRINT "E I N D E" : END 3630 IF MID$(INVOER$,(LEN(INVOER$)-3),1) < > "." THEN 3610 3640 WB$ = INVOER$ : RIT=0 3650 OPEN "I",2,WB$ 3660 PRINT FNADR$(18,50);"type:" 3670 PRINT FNADR$(17,56);" A - RAMP/FM; B - sorted " 3680 IHOR=57 : ILEN=1 : GOSUB 15000 3690 IF INVOER$ < > "B" THEN INVOER$ = "A" 3700 WT$ = INVOER$ 3710 IF WT$ = "A" THEN LINE INPUT #2, LI$ : WERKREC = VAL (LI$) : IF WERKREC < 1 THEN CLOSE : WT$="B" : OPEN "I",2,WB$ 3750 PRINT CLS$ : PRINT FNADR$(3,10);SSI$;"Afdruk-keuze voor bestand ";SSO$;WB$ 3760 PRINT FNADR$(5,10);"A(lle records) of S(elektie opgeven) ?" 3770 IVER=5 : IHOR = 50 : ILEN= 1 : GOSUB 15000 3780 IF INVOER$ < > "A" AND INVOER$ < > "S" THEN 3770 3790 RSEL$ = INVOER$ : IF RSEL$ = "A" THEN 3990 3800 PRINT FNADR$(7,10);"Op welk veld selekteren (1 -";N.VELD;" ) ?" 3810 IVER=7 : IHOR=50 : ILEN=2 : IM=N.VELD : GOSUB 15000 3820 IF II < 1 THEN 3810 3830 VSEL = II :PRINT FNADR$(10,10);SSI$;VNAAM$(VSEL);SSO$ 3840 PRINT FNADR$(9,35);"ONDERGRENS";FNADR$(9,40+VLEN(VSEL));"BOVENGRENS" 3850 IVER=10 : IHOR = 35 : ILEN=VLEN(VSEL) : IM=0 : GOSUB 15000 3860 SONDER$ = INVOER$ 3870 IHOR=40+VLEN(VSEL) : GOSUB 15000 3880 SBOVEN$ = INVOER$ : IF SBOVEN$ < SONDER$ THEN PRINT FNADR$(11,50);"KAN NIET !!" : GOTO 3850 3990 RIT=0 : PNUM=0 3995 GOSUB 10300 : REM 1E KOP 4000 REM LEES 1 RECORD 4010 RIT=RIT+1 4020 IF WT$ = "A" THEN IF RIT > WERKREC THEN 5000 4030 IF WT$ = "B" THEN IF EOF(2) THEN 5000 4040 LINE INPUT #2, RI$ 4050 GOSUB 10100 4060 IF RSEL$ = "A" THEN 4075 4070 IF VINH$(VSEL) < SONDER$ OR VINH$(VSEL) > SBOVEN$ THEN 4000 4075 IF PTEL > PLEN-PDOWN-RVOOR-RACHTER-RAANT THEN GOSUB 10200 : GOSUB 10300 4080 IF RVOOR THEN FOR L=1 TO RVOOR : LPRINT : NEXT : PTEL=PTEL+RVOOR 4090 P.VOR=1 4100 FOR LV=1 TO N.VELD 4110 IF RVUL(LV,2) = 0 THEN 4490 4120 PVEL=RVUL(LV,1) 4130 IF PVEL=KVELD1 THEN GOSUB 10400 4140 IF RVER(PVEL) > P.VOR THEN LPRINT : PTEL=PTEL+1 : P.VOR=P.VOR+1 : GOTO 4140 4150 IF LPOS(X) >= RHOR(PVEL) THEN 4170 4160 LPRINT TAB(RHOR(PVEL));VINH$(PVEL); : GOTO 4200 4170 LPRINT " ";VINH$(PVEL); : REM DIREKT ERACHTER 4200 NEXT LV 4210 LPRINT : PTEL=PTEL+1 4490 IF RACHTER THEN FOR L=1 TO RACHTER : LPRINT : NEXT : PTEL=PTEL+RACHTER 4495 GOTO 4000 5000 CLOSE #2 5005 GOSUB 10200 5010 PRINT FNADR$(22,60);SSI$;RIT;" records gelezen";SSO$ 5020 GOSUB 9999 : PRINT CLS$ : GOTO 3600 9900 REM ERRORTRAP 9910 IF ERL < > 3080 AND ERL < > 3090 THEN 9940 9920 PRINT FNADR$(22,20);"hulptabel ";WH$;" is niet te lezen !" 9930 CLOSE : GOSUB 9999 : RESUME 3050 9940 IF ERL < > 3650 AND ERL < > 3710 AND ERL < > 4040 THEN 9990 9950 PRINT FNADR$(22,20);"bestand ";WB$;" is niet te lezen !" 9960 CLOSE : GOSUB 9999 : RESUME 3600 9990 ON ERROR GOTO 0 9999 FOR LZ = 1 TO 1500 : NEXT 10000 REM BEPAAL MID$-POSITIES HULPTABEL 10010 HV1=1 10020 FOR L=1 TO KHULP1 - 1 : HV1=HV1+HVLEN(L) : NEXT 10030 HV2=1 10040 FOR L=1 TO KDEK1-1 : HV2=HV2+HVLEN(L) : NEXT 10050 RETURN 10100 LI=1 10110 FOR L=1 TO N.VELD 10120 L$ = MID$(RI$,LI,VLEN(L)) 10122 IF RIGHT$(L$,1)=" " THEN L$=LEFT$(L$,LEN(L$)-1) : GOTO 10122 10124 VINH$(L)=L$ 10130 LI=LI+VLEN(L) 10140 NEXT 10150 RETURN 10200 REM EINDE BLAD 10210 FOR L= 1 TO (PLEN - PTEL) 10220 LPRINT 10230 NEXT 10240 PTEL=PLEN 10250 RETURN 10300 PNUM=PNUM+1 10305 FOR L=1 TO N.KOP 10310 LS=INSTR(RKOP$(L),"%%P") : IF LS < 2 THEN LPRINT RKOP$(L) : GOTO 10330 10320 LPRINT LEFT$(RKOP$(L),LS-1);: LPRINT USING "**#";PNUM 10330 NEXT 10340 PTEL = N.KOP 10350 RETURN 10400 IF VINH$(PVEL) = HARRAY$(HREC,1) THEN PVIN=HREC : GOTO 10490 10410 ZL=1 : ZH=HREC 10420 ZTAR=INT((ZL+ZH)/2) 10430 IF HARRAY$(ZTAR,1) = VINH$(PVEL) THEN PVIN=ZTAR : GOTO 10490 10440 IF ZTAR=ZL OR ZTAR = ZH OR ZL=ZH THEN VINH$(PVEL)=STRING$(HVLEN(KDEK1),"@") : RETURN 10450 IF VINH$(PVEL) < HARRAY$(ZTAR,1) THEN ZH=ZTAR ELSE ZL=ZTAR 10460 GOTO 10420 10490 VINH$(PVEL) = HARRAY$(PVIN,2) : RETURN 15000 IHOR=IHOR-1 : REM EENMALIGE VERMINDERING 15010 PRINT FNADR$(IVER, IHOR+1); : LI%=1 15020 FOR LJ%=1 TO ILEN : PRINT "."; : NEXT 15030 IF LI%=1 THEN INVOER$="" 15040 PRINT FNADR$(IVER, IHOR + LI%); : LV$=INPUT$(1) 15050 IF LV$=CHR$(13) AND LI%=1 THEN INVOER$="" : GOTO 15180 15060 IF LV$=CHR$(13) THEN 15180 15070 IF LV$=CHR$(8) THEN LI%=LI%+(LI%>1) : PRINT FNADR$(IVER, IHOR+LI%);".";FNADR$(IVER, IHOR + LI%); : INVOER$=LEFT$(INVOER$,LI%+(LI%>1)) : GOTO 15030 15080 IF LV$= "" THEN LV$=" " 15090 IF LI% > ILEN THEN LI%=ILEN +1 : PRINT CHR$(7) : GOTO 15030 15100 PRINT LV$; 15110 LJ%=ASC(LV$) : IF LJ% < 32 OR LJ% > 126 THEN PRINT CHR$(7) : GOTO 15030 15120 IF IM=0 THEN 15160 15130 IF LJ% > 47 AND LJ% < 58 THEN 15160 : REM CIJFER 15140 IF LJ% = 32 OR LJ%=45 THEN IF LI% < 4 THEN 15160 15150 PRINT CHR$(7) : GOTO 15030 15160 INVOER$= INVOER$ + LV$ 15170 LI%=LI%+1 : GOTO 15030 15180 PRINT FNADR$(IVER, IHOR+LI%);SPACE$(ILEN-LI%+1) 15190 IHOR=IHOR + 1 : REM 15000 NU ONGEDAAN 15200 IF IM=0 THEN RETURN 15210 II=VAL(INVOER$) 15220 IF ABS(II) > ABS(IM) THEN PRINT CHR$(7) : GOTO 15000 ELSE RETURN AAN 15200 IF IM=0 THEN RETURN 15210 II=VAL(INVOER$) 15220 IF ABS(II) > ABS(IM)