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 SMF = SMM-13500 : REM RUIMTE VOOR DATA, BEPAALD DOOR RAM 110 PRINT CLS$ : PRINT STRING$(80,"=") 120 PRINT TAB(10);"***** Republic ** Generator Bestandsdefinitie *****" 130 PRINT STRING$(80,"=") 140 PRINT FNADR$(8,5);"HOE HEET DE TE GENEREREN PARAMETERTABEL (MAX. 8 CHAR.) ?" 150 IVER=8 : IHOR=70 : ILEN=8 : GOSUB 15000 160 NAAMPROG$=INVOER$ 170 PRINT FNADR$(12,5);"IS DIT DE HOOFDTABEL (.PR";SSI$;"M";SSO$;") OF DE HULPTABEL (.PR";SSI$;"A";SSO$;") ?" 180 IVER = 12 : ILEN = 1 : GOSUB 15000 190 IF INVOER$ < > "M" AND INVOER$ < > "A" THEN 180 200 SOORTPAR$ = INVOER$ : SOORTEXT$ = ".PR"+SOORTPAR$ : IF SOORTPAR$ = "A" THEN GOTO 240 210 PRINT FNADR$(14,5);"WELKE AUTEURSNAAM MOET VERMELD WORDEN ?" 220 IVER=14 : IHOR = 50 : ILEN=20 : GOSUB 15000 230 NAAM.AUT$=INVOER$ 240 PRINT FNADR$(16,5);"HOEVEEL VELDEN GAAT HET RECORD BEVATTEN ?" 250 IM=97 : IVER = 16 : ILEN=2 : GOSUB 15000 260 IM=0 : N.VELD=II 270 PRINT FNADR$(22,5);"O.K., DAN MAG JE NU DE VELDEN SPECIFICEREN" 280 L= N.VELD 290 DIM VNAAM$(L), VLEN(L) 300 FOR L=1 TO 1500 : NEXT 310 PRINT CLS$ 320 FOR VN=1 TO N.VELD : REM VN= VELDNUMMER T.B.V. LUS 330 IF VN > 4 THEN GOSUB 2000 : BP= 19 : GOTO 350: REM DOORSCROLLEN 340 BP= 6*(VN-1)+1 : REM BASISPOSITIE VRAAGOPBOUW 350 PRINT FNADR$(BP,1);"" 360 PRINT FNADR$(BP+1,5);SSI$;"VELD # ";VN;SSO$;TAB(20);"LENGTE ?" 370 IVER=BP+1 : IHOR = 30 : ILEN = 2 : IM=50 : GOSUB 15000 375 IF II < 1 THEN 370 380 VLEN(VN)=II 390 PRINT FNADR$(BP+2,5);"VELDNAAM ?" 400 IVER=BP+2 : IHOR=18 : ILEN=20 : IM=0 : GOSUB 15000 410 VNAAM$(VN)=INVOER$ 420 PRINT FNADR$(BP+4,1);"" 430 PRINT STRING$(80,"-") 440 NEXT VN 450 REM VELDDEFINITIE GEREED : NOG EVEN REKENEN 460 NUMCHAR = 0 : FOR L=1 TO N.VELD 470 NUMCHAR=NUMCHAR + VLEN(L) 480 NEXT : NUMREC=INT(SMF/NUMCHAR) 490 GOSUB 2000 : REM LAATSTE 3 VELDEN 500 PRINT "OK, VOLDOENDE GEGEVENS. IK MAAK AAN BESTAND ";NAAMPROG$;SOORTEXT$ 510 OPEN "O",1,NAAMPROG$+SOORTEXT$ 520 QO$=CHR$(34) 530 IF SOORTPAR$ = "A" THEN 700 600 PRINT #1, "110 LET NAAMPROG$= ";QO$;NAAMPROG$;QO$;" : LET NAAM.AUT$= ";QO$;NAAM.AUT$;QO$ 610 PRINT #1, "120 LET N.VELD= ";N.VELD;" : LET N.REC= ";NUMREC; " : LET N.CHAR= ";NUMCHAR 620 PRINT #1, "130 DIM VNAAM$(N.VELD), VLEN(N.VELD)" 630 FOR VN=1 TO N.VELD : L$=STR$(VN) 640 UIT$=STR$(140+10*VN) + "VNAAM$("+L$+") = "+QO$+VNAAM$(VN)+QO$ 650 UIT$=UIT$+" : VLEN("+L$+") = "+STR$(VLEN(VN))660 PRINT #1, UIT$ 670 NEXT VN : GOTO 1000 700 PRINT #1, "1520 LET HN.VELD= ";N.VELD;" : LET HN.REC= ";NUMREC; " : LET HN.CHAR= ";NUMCHAR 710 PRINT #1, "1530 DIM HVNAAM$(";N.VELD;"), HVLEN(";N.VELD;")" 720 FOR VN=1 TO N.VELD : L$=STR$(VN) 730 UIT$= STR$(1540+10*VN) + "HVNAAM$("+L$+") = "+QO$+VNAAM$(VN)+QO$ 740 UIT$=UIT$+" : HVLEN("+L$+") = "+STR$(VLEN(VN))750 PRINT #1, UIT$ 760 NEXT VN 1000 CLOSE #1 1010 PRINT FNADR$(22,70);"KLAAR..." 1020 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 2090 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) 2070 PRINT TAB(5);"VELDNAAM ";VNAAM$(L) 2080 PRINT : PRINT STRING$(80,"-") 2090 NEXT L 2100 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) 15200 IHOR=IHOR + 1 : REM 15000 NU ONGEDAAN 15210 IF IM=0 THEN RETURN 15220 II=VAL(INVOER$) 15230 IF ABS(II) > ABS(IM) THEN PRINT CHR$(7) : GOTO 15000 ELSE RETURN A