DataMuseum.dk

Presents historical artifacts from the history of:

RegneCentralen RC759 "Piccoline"

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RegneCentralen RC759 "Piccoline"

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦44a9d929d⟧ TextFile

    Length: 11264 (0x2c00)
    Types: TextFile
    Names: »BASETEST«

Derivation

└─⟦eca9022c5⟧ Bits:30002661 Datalære sådan - løsningsdiskette
    └─ ⟦this⟧ »BASETEST« 

TextFile

0010 // dette er et program, der aftester databasesystemet«nul»
0015 DIM svar$ OF 1,søge$ OF 20,søgefelt$ OF 8
0016 n:= 0
0020 EXEC omgivelser
0025 REPEAT 
0030   CLEAR 
0040   PRINT "vælg opgave"
0050   PRINT "  1. valg af register"
0060   PRINT "  2. indlæsnig af poster"
0070   PRINT "  3. udskrivning af hele registeret"
0080   PRINT "  4. søgning en bestemt post"
0090   PRINT "  5. søgning et ebestemt felt"
0100   PRINT "  6. rette en post"
0110   PRINT "  7. slette en post"
0120   PRINT "  8. slette register"
0130   PRINT 
0140   INPUT "tast opgave:": nr
0150   IF nr=1 THEN
0160     INPUT "reg-navn: ": filnavn$
0170     INPUT "Nyt/Gammelt": svar$
0180     IF svar$ IN "Nn" THEN EXEC opret(filnavn$)
0190     EXEC brug(filnavn$)
0200   ENDIF 
0210   //
0220   IF nr=2 THEN
0230     CLEAR 
0240     svar$:= "J"
0250     REPEAT 
0260       EXEC indlæspost
0270       INPUT "flere poster (J/N):": svar$
0280     UNTIL svar$ IN "Nn"
0290   ENDIF 
0300   //
0310   IF nr=3 THEN
0320     CLEAR 
0330     EXEC brugskærm
0340     EXEC skrivud(1,antalposter)
0350   ENDIF 
0360   //
0370   IF nr=4 THEN
0380     CLEAR 
0390     INPUT "tast søgenøgle: ": søge$
0400     EXEC findipost(søge$)
0410   ENDIF 
0420   //
0430   IF nr=5 THEN
0440     CLEAR 
0450     INPUT "tast søgefeltets navn: ": søgefelt$
0460     INPUT "tast søgenøglen: ": søge$
0470     EXEC findifelt(søgefelt$,søge$)
0480   ENDIF 
0490   //
0500   IF nr=6 THEN
0510     CLEAR 
0520     INPUT "hvad skal rettes: ": søge$
0530     fra:= 1
0540     REPEAT 
0550       lokaliser(søge$,fra,antalposter,n)
0560       IF n>0 THEN
0570         EXEC vispost(n)
0580         INPUT "-skal den rettes:": svar$
0590         IF svar$ IN "Jj" THEN EXEC retpost(n)
0600       ENDIF 
0610       fra:= n+1
0620     UNTIL n<0
0630   ENDIF 
0640   //
0650   IF nr=7 THEN
0660     CLEAR 
0670     INPUT "hvad skal slettes: ": søge$
0680     fra:= 1
0690     REPEAT 
0700       lokaliser(søge$,fra,antalposter,n)
0710       IF n>0 THEN
0720         EXEC vispost(n)
0730         INPUT "-skal den slettes: ": svar$
0740         IF svar$ IN "Jj" THEN EXEC sletpost(n)
0750       ENDIF 
0760       fra:= n+1
0770     UNTIL n<0
0780   ENDIF 
0790   //
0800 UNTIL nr<=0
0810 //------------------------------------------------------------
1000 PROC omgivelser
1010   DIM filnavn$ OF 8,feltnavne$(10) OF 8,felt$ OF 8
1020   antalfelter:= 0
1030   postlængde:= 0
1040   antalposter:= 0
1050   skærmpå:= TRUE
1060 ENDPROC omgivelser
1070 //
1080 //
1500 PROC opret(filnavn$) CLOSED
1510   CLOSE  // lukker eventuelt fejlagtigt åbne filer«nul»
1520   IMPORT antalfelter,postlængde,antalposter,feltnavne$
1530   CLEAR 
1540   INPUT "hvor mange felter i en post: ": antalfelter
1550   postlængde:= 25*antalfelter
1560   DIM postindhold$(antalfelter) OF 25,post$ OF postlængde
1570   DIM felter$ OF 8*antalfelter
1580   felter$:= ""
1590   post$:= ""
1600   FOR i:= 1 TO antalfelter DO
1610     PRINT "navn på felt nr ";i;" (max 8 tegn)";
1620     INPUT ":": feltnavne$(i)
1630     t:= LEN(feltnavne$(i))+1
1640     FOR l:= t TO 8 DO feltnavne$(i)(l:l):= " "
1650     felter$:= felter$+feltnavne$(i)
1660     postindhold$(i):= "                         "
1670     post$:= post$+postindhold$(i)
1680   NEXT i
1690   CREATE filnavn$+".RAN",(postlængde*101) DIV 1024+1
1700   CREATE filnavn$+".def",1
1710   OPEN FILE 1,filnavn$+".RAN", RANDOM postlængde+2
1720   OPEN FILE 2,filnavn$+".DEF", RANDOM 90
1730   WRITE FILE 2,1: antalfelter,felter$
1740   FOR i:= 1 TO 100 DO
1750     WRITE FILE 1,i: post$
1760   NEXT i
1770   WRITE FILE 1,101: antalposter
1780   CLOSE 
1790 ENDPROC opret
2000 PROC brug(filnavn$) CLOSED
2005   CLOSE  // lukker evt fejlagtigt åbne filer«nul»
2010   IMPORT antalfelter,postlængde,antalposter,feltnavne$
2015   DIM felter$ OF 80
2020   OPEN FILE 2,filnavn$+".DEF", RANDOM 90
2030   READ FILE 2,1: antalfelter,felter$
2040   CLOSE FILE 2
2041   FOR i:= 1 TO antalfelter DO feltnavne$(i):= felter$((i-1)*8+1:i*8)
2050   postlængde:= antalfelter*25
2060   OPEN FILE 1,filnavn$+".RAN", RANDOM postlængde+2
2070   READ FILE 1,101: antalposter
2080 ENDPROC brug
2090 //
2100 //
2500 PROC indlæspost CLOSED
2510   IMPORT antalfelter,antalposter,feltnavne$,postlængde
2520   DIM svar$ OF 1,postindhold$(antalfelter) OF 25
2525   DIM post$ OF postlængde
2526   post$:= ""
2530   nr:= antalposter+1
2540   CLEAR 
2550   FOR i:= 1 TO antalfelter DO
2560     PRINT AT(1,i),"felt nr ";i;"  ";feltnavne$(i);
2570     PRINT "                           <"
2580     INPUT AT(21,i),":": postindhold$(i)
2590   NEXT i
2600   INPUT AT(10,12),"- kan posten godkendes (J/N): ": svar$
2610   IF svar$ IN "Nn" THEN
2620     REPEAT 
2630       INPUT AT(10,14),"Hvilket feltnr skal rettes (0 stopper rettelse)?": i
2640       IF 0<i AND i<11 THEN
2650         PRINT AT(21,i),"                           <"
2660         INPUT AT(21,i),":": postindhold$(i)
2670       ENDIF 
2680       PRINT AT(10,14),"                              ";
2690       PRINT "                                   "
2700     UNTIL i<=0
2710   ENDIF 
2711   FOR i:= 1 TO antalfelter DO
2712     FOR j:= LEN(postindhold$(i))+1 TO 25 DO postindhold$(i)(j:j):= " "
2713     post$:= post$+postindhold$(i)
2714   NEXT i
2720   WRITE FILE 1,nr: post$
2730   antalposter:= antalposter+1
2740   WRITE FILE 1,101: antalposter
2750 ENDPROC indlæspost
3000 PROC retpost(nr) CLOSED
3010   IMPORT antalfelter,feltnavne$,antalposter,postlængde
3020   DIM svar$ OF 1,postindhold$(antalfelter) OF 25,post$ OF postlængde
3030   IF 0<nr AND nr<=antalposter THEN
3040     READ FILE 1,nr: post$
3050     FOR f:= 1 TO antalfelter DO postindhold$(f):= post$((f-1)*25+1:f*25)
3060     CLEAR 
3070     FOR i:= 1 TO antalfelter DO
3080       PRINT AT(1,i+1),"felt nr ";i;"  ";feltnavne$(i);
3090       PRINT "                           <"
3100       PRINT AT(21,i+1),":";postindhold$(i)
3110     NEXT i
3120     REPEAT 
3130       INPUT AT(10,14),"Hvilket feltnr skal rettes (0 stopper rettelse)?": i
3140       IF 0<i AND i<11 THEN
3150         PRINT AT(21,i+1),"                           <"
3160         INPUT AT(21,i+1),":": postindhold$(i)
3170       ENDIF 
3180       PRINT AT(10,14),"                              ";
3190       PRINT "                                   "
3200     UNTIL i<=0
3210     post$:= ""
3220     FOR i:= 1 TO antalfelter DO
3230       FOR j:= LEN(postindhold$(i))+1 TO 25 DO postindhold$(i)(j:j):= " "
3240       post$:= post$+postindhold$(i)
3250     NEXT i
3260     WRITE FILE 1,nr: post$
3270   ENDIF 
3280 ENDPROC retpost
3500 PROC findifelt(felt$,søgenøgle$) CLOSED
3510   IMPORT antalfelter,feltnavne$,antalposter,postlængde,skærmpå
3520   DIM svar$ OF 1,postindhold$(antalfelter) OF 25,post$ OF postlængde
3530   feltnr:= 0
3540   FOR i:= 1 TO antalfelter DO
3550     IF felt$=feltnavne$(i) THEN feltnr:= i
3560   NEXT i
3570   IF feltnr=0 THEN
3580     PRINT "feltnavn findes ikke i denne fil"
3590     STOP 
3600   ELSE 
3610     READ FILE 1,101: antalposter
3620     FOR nr:= 1 TO antalposter DO
3630       READ FILE 1,nr: post$
3640       FOR f:= 1 TO antalfelter DO postindhold$(f):= post$((f-1)*25+1:f*25)
3650       IF søgenøgle$ IN postindhold$(feltnr) THEN
3660         CLEAR 
3670         PRINT "en mulighed er:"
3680         FOR i:= 1 TO antalfelter DO
3690           PRINT AT(1,i),"felt nr ";i;"  ";feltnavne$(i);
3700           PRINT "                           <"
3710           INPUT AT(21,i),":": postindhold$(i)
3720         NEXT i
3730         PRINT 
3740         IF skærmpå THEN
3750           INPUT AT(60,22),"-tast return:": svar$
3760           CLEAR 
3770         ENDIF 
3780       ENDIF 
3790     NEXT nr
3800   ENDIF 
3810 ENDPROC findifelt
4000 PROC findipost(søgenøgle$) CLOSED
4010   IMPORT antalfelter,feltnavne$,antalposter,postlængde,skærmpå
4020   DIM svar$ OF 1,postindhold$(antalfelter) OF 25,post$ OF postlængde
4030   READ FILE 1,101: antalposter
4040   FOR nr:= 1 TO antalposter DO
4050     READ FILE 1,nr: post$
4060     FOR f:= 1 TO antalfelter DO postindhold$(f):= post$((f-1)*25+1:f*25)
4070     IF søgenøgle$ IN post$ THEN
4080       CLEAR 
4090       PRINT "en mulighed er:"
4100       FOR i:= 1 TO antalfelter DO
4110         PRINT AT(1,i),"felt nr ";i;"  ";feltnavne$(i);
4120         PRINT "                           <"
4130         PRINT AT(21,i),":";postindhold$(i)
4140       NEXT i
4150       PRINT 
4160       IF skærmpå THEN
4170         INPUT AT(60,22),"-tast return:": svar$
4180         CLEAR 
4190       ENDIF 
4200     ENDIF 
4210   NEXT nr
4220 ENDPROC findipost
4500 PROC sletpost(nr) CLOSED
4510   IMPORT antalfelter,feltnavne$,antalposter,postlængde
4520   DIM svar$ OF 1,postindhold$(antalfelter) OF 25,post$ OF postlængde
4530   IF 0<nr AND nr<=antalposter THEN
4540     READ FILE 1,antalposter: post$
4550     WRITE FILE 1,nr: post$
4560     post$:= " "
4570     WRITE FILE 1,antalposter: post$
4580     antalposter:= antalposter-1
4590     WRITE FILE 1,101: antalposter
4600   ENDIF 
4610 ENDPROC sletpost
5000 PROC skrivud(fra,til) CLOSED
5010   IMPORT antalfelter,antalposter,feltnavne$,skærmpå,postlængde
5020   DIM post$ OF postlængde
5030   DIM postindhold$(antalfelter) OF 25,svar$ OF 1
5040   CLEAR 
5050   IF til>antalposter THEN til:= antalposter
5060   IF fra<1 THEN fra:= 1
5070   FOR nr:= fra TO til DO
5080     READ FILE 1,nr: post$
5090     FOR f:= 1 TO antalfelter DO postindhold$(f):= post$((f-1)*25+1:f*25)
5100     PRINT USING "post nr ###:": nr
5110     FOR i:= 1 TO antalfelter DO
5120       PRINT feltnavne$(i);":   ";postindhold$(i)
5130     NEXT i
5140     PRINT 
5150     PRINT 
5160     IF skærmpå THEN
5170       INPUT AT(60,22),"-tast return:": svar$
5180       CLEAR 
5190     ENDIF 
5200   NEXT nr
5210 ENDPROC skrivud
5500 PROC vispost(nr) CLOSED
5510   IMPORT antalfelter,feltnavne$,antalposter,postlængde,skærmpå
5520   DIM svar$ OF 1,postindhold$(antalfelter) OF 25,post$ OF postlængde
5530   IF 0<nr AND nr<=antalposter THEN
5540     READ FILE 1,nr: post$
5550     FOR f:= 1 TO antalfelter DO postindhold$(f):= post$((f-1)*25+1:f*25)
5560     CLEAR 
5570     FOR i:= 1 TO antalfelter DO
5580       PRINT AT(1,i),"felt nr ";i;"  ";feltnavne$(i);
5590       PRINT "                           <"
5600       PRINT AT(21,i),":";postindhold$(i)
5610     NEXT i
5620   ENDIF 
5630 ENDPROC vispost
6000 PROC brugskærm CLOSED
6010   SELECT OUTPUT "console"
6020   skærmpå:= TRUE
6030 ENDPROC brugskærm
7000 PROC lokaliser(søgenøgle$,fra,til,REF fundetnr) CLOSED
7010   IMPORT antalfelter,feltnavne$,antalposter,postlængde
7020   DIM svar$ OF 1,postindhold$(antalfelter) OF 25,post$ OF postlængde
7030   fundetnr:= -1
7040   READ FILE 1,101: antalposter
7050   IF fra<1 THEN fra:= 1
7060   IF til>antalposter THEN til:= antalposter
7070   nr:= fra-1
7080   REPEAT 
7090     nr:= nr+1
7100     READ FILE 1,nr: post$
7110     IF søgenøgle$ IN post$ THEN fundetnr:= nr
7120   UNTIL fundetnr>0 OR nr>=til
7130 ENDPROC lokaliser
«eof»