10 REM ***************************************************** 20 REM * R.A.M.P./F.M. - RAM PROGRAM FOR FILE MANAGEMENT 25 REM * with: REP.ublic - Rgen for Public Domain 30 REM * AUTHOR: ERIK DE RUIJTER - NOVEMBER 1983 & JULY 1984 40 REM ***************************************************** 100 DEF FNDISP$(VELDN)=CHR$(VELDN + 64 - 33*(VELDN > 26)) 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 PRINT CLS$ : PRINT STRING$(80,"=") 2010 PRINT FNADR$(2,10);"Aanmaak Report Definition voor programma ";SSI$;NAAMPROG$ 2020 PRINT FNADR$(4,20);"K O P P E N";SSO$ 2030 PRINT FNADR$(6,5);"Hoeveel (kop) regels komen er bovenaan een bladzijde ?" 2040 IVER = 6 : IHOR = 65 : ILEN = 1 : IM = 9 : GOSUB 15000 2050 N.KOP = II 2060 IF II = 0 THEN 2200 2070 DIM KOP$(N.KOP) 2075 PRINT FNADR$(8,20);"Geef de ";SSI$;" K O P T E K S T E N" 2080 FOR L=1 TO N.KOP 2090 PRINT FNADR$(10+L,1);"**";RIGHT$(STR$(L),1);"**" 2100 NEXT : PRINT SSO$ 2110 IHOR=1 : ILEN=79 : IM=0 2120 FOR L=1 TO N.KOP 2130 IVER = 10+L : GOSUB 15000 2140 KOP$(L)=INVOER$ 2150 NEXT 2200 PRINT CLS$ : PRINT TAB(30);"HERHAAL: ";N.KOP;" KOPREGELS" 2210 FOR L=1 TO N.KOP : PRINT KOP$(L) : NEXT 2215 PRINT FNADR$(12,30);SSI$;"** GEGEVENS ** BLAD-LAYOUT **";SSO$ 2220 PRINT FNADR$(14,5);"Aantal regels per blad ( = 72) ?" 2230 IVER=14 : IHOR = 47 : ILEN = 2 : IM = 99 : GOSUB 15000 2240 IF INVOER$ = "" OR II < 2 THEN II=72 2250 PLEN = II : PRINT FNADR$(14,46);PLEN 2260 PRINT FNADR$(15,5);"Regels onderaan de bladzijde (RTN = 3) ?" 2270 IHOR = 55 : IVER=15 : ILEN=1 : IM=9 : GOSUB 15000 2280 IF INVOER$ = "" OR II < 1 THEN II=3 2290 P.ONDER=II : PRINT FNADR$(15,54);P.ONDER 2300 PRINT FNADR$(16,1);"----Moeten er lege regels voor en/of na afzonderlijke records (J/N) ?----" 2310 IHOR=75 : IVER=16 : IM=0 : GOSUB 15000 2320 IF INVOER$ < > "J" AND INVOER$ < > "N" THEN 2310 2330 L$=INVOER$ : IF L$ = "N" THEN P.VOOR= 0 : P.ACHTER = 0 : GOTO 2500 2340 PRINT FNADR$(18,5);"lege regel(s) voor het record ( = 0) ?" 2350 IVER=18 : IHOR=50 : IM=9 : GOSUB 15000 2360 P.VOOR = II 2370 PRINT FNADR$(19,5); " ,, ,, achter ,, ( ,, = 0) ?" 2380 IVER=19 : GOSUB 15000 2390 P.ACHTER=II 2500 REM REGELINDELING 2510 DIM PL(N.VELD),PP(N.VELD) 2520 PRINT FNADR$(20,5);"**** RAPPORT LAYOUT AANMAKEN ****" 2530 PRINT FNADR$(21,5);"Hoeveel regels gebruikt 1 record (1-9; = 1) ?" 2540 IVER=21 : IHOR = 60 : ILEN = 1 : IM=9 : GOSUB 15000 2550 IF INVOER$ = "" OR II=0 THEN II=1 2560 PRINT FNADR$(21,59);II 2570 N.PART=II 2600 PRINT CLS$ : PRINT TAB(10);"----- REGEL -- INDELING -----" 2610 FOR LV=1 TO N.VELD 2620 IF PL(LV) = 0 THEN 2680 2630 IF PP(LV) = 0 THEN 2680 2640 PRINT FNADR$(1+PP(LV),PL(LV)); 2650 PRINT STRING$(VLEN(LV),FNDISP$(LV)) 2680 NEXT : REM VELDEN INGEVULD 2685 PRINT SSI$ : FOR L=1 TO N.PART 2690 PRINT FNADR$(1+L,1);RIGHT$(STR$(L),1) 2695 NEXT : PRINT SSO$ 2700 PRINT FNADR$(11,1);STRING$(80,"-") 2710 PRINT FNADR$(13,5);SSI$;"S(top) / T(oevoegen) / V(erwijderen) / W(ijzigen) ?";SSO$ 2720 IVER=13 : IHOR=60 : ILEN =1 : IM=0 : GOSUB 15000 2730 IF INVOER$ < > "S" AND INVOER$ < > "T" AND INVOER$ < > "V" AND INVOER$ < > "W" THEN 2720 2740 IF INVOER$ = "T" THEN GOSUB 10000 : GOTO 2600 2750 IF INVOER$ = "V" THEN GOSUB 10400 : GOTO 2600 2760 IF INVOER$ = "W" THEN GOSUB 10200 : GOTO 2600 2770 GOTO 9000 : REM EINDE 9000 REM MAAK PARAMETERBESTAND - EINDE 9005 PRINT FNADR$(14,10);"BEZIG MET AANMAAK PARAMETERBESTAND ";NAAMPROG$+".RPR" 9010 QQ$=CHR$(34) : REM QUOTE 9020 OPEN "O" , 1 , NAAMPROG$+".RPR" 9030 PRINT #1, "2000 REM reportparameters" 9040 PRINT #1, "2005 N.KOP =";N.KOP;" : DIM RKOP$(N.KOP)" 9050 FOR L=1 TO N.KOP : LH=2000+10*L 9060 PRINT #1, LH;" RKOP$(";L;") = ";QQ$;KOP$(L);QQ$ 9070 NEXT 9100 PRINT #1, "2100 PLEN =";PLEN;" : PDOWN =";P.ONDER 9110 PRINT #1, "2110 RVOOR =";P.VOOR;" : RACHTER =";P.ACHTER 9120 PRINT #1, "2120 RAANT =";N.PART 9130 PRINT #1, "2140 DIM RHOR(N.VELD) , RVER(N.VELD)" 9140 FOR L=1 TO N.VELD : LH=2140 + 10*L 9150 PRINT #1,LH;" RHOR(";L;") =";PL(L);" : RVER(";L;") =";PP(L) 9160 NEXT 9170 PRINT #1, "2910 KVELD1 =";KP 9180 PRINT #1, "2920 KHULP1 =";KN;" : KDEK1 =";KH 9190 CLOSE #1 9200 PRINT FNADR$(23,5);"AANMAAK GEREED - EINDE" 9210 CLOSE : END 10000 REM TOEVOEGEN 10005 FOR L=1 TO N.VELD : REM CHECK OF KOMPLEET 10010 IF PP(L) = 0 OR PL(L) = 0 THEN 10020 : REM GAATJE 10015 NEXT : PRINT FNADR$(14,5);"ALLES GEDEFINIEERD !" : GOSUB 11000 :RETURN 10020 PRINT FNADR$(14,5);"Welk veld toevoegen (1 -";N.VELD;" ) ?" 10025 IVER=14 : IHOR = 40 : ILEN=2 : IM = N.VELD : GOSUB 15000 10030 IF II < 1 THEN 10025 10035 IF PP(II) < > 0 AND PL(II) < > 0 THEN PRINT FNADR$(14,60);"INGEVULD - WIJZIG !" : GOSUB 11000 : RETURN 10040 VN=II 10045 PRINT FNADR$(14,60);SSI$;VNAAM$(VN) 10050 PRINT FNADR$(15,60);"lengte";VLEN(VN);" scherm: ";FNDISP$(VN);SSO$ 10055 PRINT FNADR$(16,5);"regel (1 -";N.PART;"; = 1 ) ?" 10060 IVER=16 : IHOR = 40 : ILEN=1 : IM=N.PART : GOSUB 15000 10065 IF INVOER$ = "" OR II < 1 THEN II = 1 10070 PRINT FNADR$(16,39);II : PP(VN)=II 10075 PRINT FNADR$(18,5);"positie (1 -";80-VLEN(VN);" ) ?" 10080 IVER=18 : ILEN=2 : IM=80-VLEN(VN) : GOSUB 15000 10085 IF II < 1 THEN 10080 10090 PL(VN)=II 10095 IF KP > 0 THEN 10130 10100 PRINT FNADR$(16,50);"Dit veld dekoderen (J/N) ?" 10105 IHOR=75 : IVER=16 : ILEN=1 : IM=0 : GOSUB 15000 10110 IF INVOER$ < > "J" THEN 10130 10120 GOSUB 11100 10130 RETURN 10200 REM WIJZIGEN 10210 PRINT FNADR$(14,5);"Welk veld wijzigen (1 -";N.VELD;" ) ?" 10220 IVER=14 : IHOR = 40 : ILEN=2 : IM=N.VELD : GOSUB 15000 10230 IF II < 1 THEN 10220 10240 VN=II : IF PP(VN) = 0 OR PL(VN) = 0 THEN PRINT FNADR$(14,50);"NIET INGEVULD !" : GOSUB 11000 : RETURN 10250 PRINT FNADR$(15,50);SSI$;VNAAM$(VN);SSO$;" ( = ";FNDISP$(VN);" )" 10260 PRINT FNADR$(16,5);"regel (RTN =";PP(VN);" ) ?" 10265 IVER=16 : IHOR= 30 : IM=N.PART : ILEN=1 : GOSUB 15000 10270 IF INVOER$ = "" OR II < 1 THEN II=PP(VN) 10275 PP(VN)=II : PRINT FNADR$(16,29);II 10280 PRINT FNADR$(18,5);"positie (1 -";80-VLEN(VN);" ) ; RTN =";PL(VN);" ?" 10285 IVER=18 : IHOR = 40 : ILEN=2 : IM=80-VLEN(VN) : GOSUB 15000 10290 IF INVOER$ = "" OR II < 1 THEN II = PL(VN) 10295 PL(VN)=II : PRINT FNADR$(18,39);II 10300 IF KP > 0 AND KP < > VN THEN 10395 : REM DEKODERING KAN NIET 10305 IF KP = VN THEN L1$ = "WEL" : L2$=", W(eghalen) " ELSE L1$ = "NIET" : L2$=" " 10310 PRINT FNADR$(19,5);"VELD IS ";L1$;" GEDEKODEERD. zo L(aten)";L2$;"OF A(anpassen) ?" 10315 IVER=19 : IHOR=75 : ILEN=1 : IM=0 : GOSUB 15000 10320 IF INVOER$ < > "L" AND INVOER$ < > "A" AND INVOER$ < > "W" THEN 10315 10325 IF KP < > VN AND INVOER$ = "W" THEN 10315 10330 IF INVOER$ = "W" THEN KP=0 : KN=0 : KH=0 : VLEN(VN)=KL.ORG : GOTO 10395 10340 IF INVOER$ = "L" THEN 10395 10350 GOSUB 11100 : REM A(anpassen) --> Opnieuw dekodering aangeven 10395 RETURN 10400 REM VERWIJDEREN 10410 PRINT FNADR$(14,5);"Welk veld verwijderen (1 -";N.VELD;") ?" 10420 IVER=14 : IHOR = 40 : ILEN=2 : IM=N.VELD : GOSUB 15000 10430 IF II < 1 THEN 10420 10440 VN=II 10450 IF PP(VN) = 0 AND PL(VN) = 0 THEN PRINT FNADR$(14,50);"VELD NIET IN DEFINITIE !" : GOSUB 11000 : RETURN 10460 PRINT FNADR$(16,5);"veld ";VNAAM$(VN);" weergegeven met ";FNDISP$(VN);" weghalen (J/N) ?" 10470 IVER=16 : IHOR=70 : ILEN=1 : IM=0 : GOSUB 15000 10480 IF INVOER$ = "N" THEN 10410 10490 PP(VN) = 0 : PL(VN)=0 10500 IF KP=VN THEN KP=0 : KN=0 : KH=0 : VLEN(VN) = KL.ORG 10510 RETURN 11000 REM WACHTLUS 11010 FOR LI=1 TO 1500 : NEXT : RETURN 11100 REM DEKODERING AANGEVEN VOOR VELD VN 11105 PRINT FNADR$(20,5);"veldnummer in hulptabel ( RTN = 1) ?" 11120 IVER=20 : IHOR = 40 : ILEN=2 : IM=HN.VELD : GOSUB 15000 11125 IF INVOER$ = "" OR II < 1 THEN II = 1 11130 IF HVLEN(II) < > VLEN(VN) THEN PRINT FNADR$(20,60);"LENGTEN KLOPPEN NIET !" : GOTO 10115 11135 PRINT FNADR$(20,39);II : KP = VN : KN=II 11140 PRINT FNADR$(20,50);"dekoderen door: " 11145 IHOR=65 : GOSUB 15000 11150 IF II < 1 OR II = KN OR HVLEN(II) < VLEN(VN) THEN 10145 11155 PRINT FNADR$(21,65);HVNAAM$(II) 11160 KH= II : KL.ORG=VLEN(VN) : VLEN(VN) = HVLEN(KH) 11170 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