10 REM *********************************************** 20 REM R.A.M.P./F.M. - RAM PROGRAM FOR FILE MANAGEMENT 30 REM AUTHOR: ERIK DE RUIJTER - NOVEMBER 1983 40 REM *********************************************** 100 SMF = SMM-13500 : REM RUIMTE VOOR DATA, BEPAALD DOOR RAM 110 PRINT CLS$ : PRINT STRING$(80,"=") 120 IF IM=0 THEN 1540 IF LJ% = 32 OR LJ%=45 THEN IF LI% < 4 THEN 15160 130 PRINT STRING$(80,"=") 140 PRINT FNADR$(8,5);"HOE HEET HET TE GENEREREN PROGRAMMA ?" 150 IVER=8 : IHOR=45 : ILEN=8 : GOSUB 15000 160 NAAMPROG$=INVOER$ 170 PRINT FNADR$(12,5);"WELKE AUTEURSNAAM MOET VERMELD WORDEN ?" 180 IVER=12 : ILEN=20 : GOSUB 15000 190 NAAM.AUT$=INVOER$ 200 PRINT FNADR$(16,5);"HOEVEEL VELDEN GAAT HET RECORD BEVATTEN ?" 210 IM=99 : IHOR = 50 : IVER = 16 : ILEN=2 : GOSUB 15000 220 IM=0 : N.VELD=II 230 PRINT FNADR$(22,5);"O.K., DAN MAG JE NU DE VELDEN SPECIFICEREN" 240 L= N.VELD 250 DIM VNAAM$(L), VLEN(L), VNUM(L), VJUST(L), VPR.POS(L) 260 FOR L=1 TO 1500 : NEXT 290 PRINT CLS$ 300 FOR VN=1 TO N.VELD : REM VN= VELDNUMMER T.B.V. LUS 310 IF VN > 4 THEN GOSUB 2000 : BP= 19 : GOTO 330: REM DOORSCROLLEN 320 BP= 6*(VN-1)+1 : REM BASISPOSITIE VRAAGOPBOUW 330 PRINT FNADR$(BP,1);"" 340 PRINT FNADR$(BP+1,5);SSI$;"VELD # ";VN;SSO$;TAB(20);"LENGTE ?" 350 IVER=BP+1 : IHOR = 30 : ILEN = 2 : IM=50 : GOSUB 15000 360 VLEN(VN)=II 370 PRINT FNADR$(BP+2,5);"VELDNAAM ?" 380 IVER=BP+2 : IHOR=18 : ILEN=20 : IM=0 : GOSUB 15000 390 VNAAM$(VN)=INVOER$ 400 PRINT FNADR$(BP+3,5);"PRINTPOSITIE (0 = X) ?" 410 IVER=BP+3 : IHOR=30 : ILEN=2 : IM=80 : GOSUB 15000 415 IF II < VPR.POS(VN-1) + VLEN(VN-1) THEN 410 420 VPR.POS(VN)=II 430 PRINT FNADR$(BP+1,40);"NUMERIEK (0 / MAX. VAL.) ?"; 440 ILEN= VLEN(VN) : IF ILEN > 10 THEN ILEN = 10 450 IM= VAL(STRING$(ILEN,"9")) 460 IVER=BP+1 : IHOR=65 : GOSUB 15000 470 VNUM(VN)=II 475 IF II=0 THEN VJUST(VN)=0 : GOTO 500 : REM ALLEEN NUTTIG VOOR NUMERIEKE 480 PRINT FNADR$(BP+2,40);"MET 000 OPVULLEN (J/N) ?" 485 IVER=BP+2 : ILEN=1 : IM=0 : GOSUB 15000 490 IF INVOER$="J" THEN VJUST(VN)=1 : GOTO 500 ELSE IF INVOER$="N" THEN VJUST(VN)=0 ELSE GOTO 485 500 PRINT FNADR$(BP+4,1);"" 510 PRINT STRING$(80,"-") 540 NEXT VN 550 REM VELDDEFINITIE GEREED : STEL KOP SAMEN 560 NUMCHAR = 0 : FOR L=1 TO N.VELD 570 NUMCHAR=NUMCHAR + VLEN(L) 580 NEXT : NUMREC=INT(SMF/NUMCHAR) 600 GOSUB 2000 : REM LAATSTE 3 VELDEN 610 PRINT FNADR$(19,10);"JE HEBT MAXIMAAL ";NUMREC;" RECORDS IN RAM. STEL NU DE KOP SAMEN" 620 PRINT 630 FOR L=5 TO 75 STEP 5 : PRINT TAB(L);L; : NEXT : PRINT 640 FOR L=1 TO N.VELD 650 LT=VPR.POS(L) : PRINT FNADR$(22,LT);"X" 660 NEXT 670 IVER=23 : IHOR=2 : ILEN=78 : IM=0 : GOSUB 15000 680 NKOP$= " "+INVOER$ 800 OPEN "O",1,NAAMPROG$+".PAR" 810 QO$=CHR$(34) 820 PRINT #1, "110 LET NAAMPROG$= ";QO$;NAAMPROG$;QO$;" : LET NAAM.AUT$= ";QO$;NAAM.AUT$;QO$ 830 PRINT #1, "120 LET N.VELD= ";N.VELD;" : LET N.REC= ";NUMREC; " : LET N.CHAR= ";NUMCHAR 840 PRINT #1, "130 DIM VNAAM$(N.VELD), VLEN(N.VELD), VNUM(N.VELD), VJUST(N.VELD), VPR.POS(N.VELD)" 850 PRINT #1, "140 LET NKOP$= ";QO$;NKOP$;QO$ 860 FOR VN=1 TO N.VELD : L$=STR$(VN) 870 UIT$=STR$(140+10*VN) + "VNAAM$("+L$+") = "+QO$+VNAAM$(VN)+QO$ 880 UIT$=UIT$+" : VLEN("+L$+") = "+STR$(VLEN(VN))890 UIT$=UIT$+" : VNUM("+L$+") = "+STR$(VNUM(VN)) 900 UIT$=UIT$+" : VJUST("+L$+") = "+STR$(VJUST(VN)) 910 UIT$=UIT$+" : VPR.POS("+L$+") = "+STR$(VPR.POS(VN)) 920 PRINT #1, UIT$ 930 NEXT VN 940 CLOSE #1 950 PRINT CLS$ : PRINT FNADR$(5,10);"PARAMETERBESTAND A:";NAAMPROG$;".PAR IS GEREED" 960 PRINT TAB(10);"JE KUNT ZELF MERGEN MET RAMPARAM.ASC, JOINRAMP.ASC EN RAMP/FM.ASC;" 970 PRINT TAB(10);"OOK SUBMIT RAMPMERG (ZOJUIST AANGEMAAKT) HELPT" 980 PRINT FNADR$(23,55);"GENERATION COMPLETED..." 1000 OPEN "O",1,"RAMPMERG.SUB" 1010 PRINT #1, "PIP ";NAAMPROG$;".ASC= RAMPARAM.ASC , ";NAAMPROG$;".PAR , RAMP/FM.ASC" 1015 PRINT #1, "PIP ";NAAMPROG$;".JOY = RAMPARAM.ASC , ";NAAMPROG$;".PAR , JOINRAMP.ASC" 1020 CLOSE #1 1100 END 2000 REM BOUW SCHERM OP VAN VN-3 TOT VN-1 2010 PRINT CLS$ 2020 FOR L=VN-3 TO VN-1 2030 IF L< 1 THEN 2100 2040 BP= 6*(L-(VN-3))+1 2050 PRINT FNADR$(BP,1);"" 2060 PRINT TAB(5);SSI$;"VELD #";L;SSO$;TAB(20);"LENGTE ";VLEN(L);TAB(40);"NUMERIEK";TAB(65);VNUM(L) 2070 PRINT TAB(5);"VELDNAAM ";VNAAM$(L);TAB(40);"GEJUSTIFICEERD ";VJUST(L) 2080 PRINT TAB(5);"PRINTPOSITIE ";VPR.POS(L) 2090 PRINT : PRINT STRING$(80,"-") 2100 NEXT L 2110 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$=SPACE$(ILEN) : 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 15230 IF ABS(II) > ABS(IM) THEN PRINT CHR$(7) : GOTO 15000 ELSE RETURN > ABS(IM) THEN PRINT CHR$(7) : GOTO 15000 ELSE RETURN 15230 IF ABS(II) > ABS(IM) THEN PRINT CHR$(7) : GOTO 15000 ELSE RETUR