home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
sh2x
/
sh28b.d64
/
direktzugriff
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
4KB
|
149 lines
90 DIM NAME$(100), REC%(100)
95 GOSUB 1310 : REM BLOCKBELEGUNG
100 OPEN 1,8,15: REM BEFEHLSKANAL OEFFNEN
110 OPEN 2,8,2,"INFODATEI,S,R": REM SEQ.DATEI OEFFNEN
120 INPUT#1,A: REM FEHLER AUFGETRETEN?
130 IF A<>0 THEN GOTO 140: REM JA, DANN WEITER
132 INPUT#2,AD: REM ADRESSANZAHL LESEN
134 FOR I=1 TO AD
136 : INPUT#2,NAME$(I): INPUT#2,REC%(I)
137 : IF NAME$(I)="*" THEN NAME$(I)=""
138 NEXT I
140 CLOSE 2: REM SEQUENTIELLE DATEI SCHLIESSEN
150 :
160 OPEN 2,8,2,"#": REM DIREKTZUGRIFFS-DATEI OEFFNEN
170 :
180 :
190 REM *** MENUE ***
200 PRINT:PRINT "1=EINTRAGEN/2=SUCHEN/3=BLAETTERN/4=AENDERN/5=ENDE":PRINT
210 GET A$: IF A$="" THEN GOTO 210
220 :
230 IF A$<>"5" THEN ON VAL(A$) GOSUB 340,1060,430,550: GOTO 200
240 :
250 CLOSE 2: REM RELATIVE DATEI SCHLIESSEN
260 PRINT#1,"S:INFODATEI": REM SEQ.DATEI LOESCHEN
270 OPEN 2,8,2,"INFODATEI,S,W": REM SEQ.DATEI OEFFNEN
280 PRINT#2,AD: REM ADRESSANZAHL SPEICHERN
282 FOR I=1 TO AD
284 : IF NAME$(I)="" THEN NAME$(I)="*"
286 : PRINT#2,NAME$(I): PRINT#2,REC%(I)
288 NEXT I
290 CLOSE 2: CLOSE 1: REM ALLE DATEIEN SCHLIESEN
300 END
310 :
320 :
330 REM *** NEUE ADRESSE EINTRAGEN ***
340 PRINT "*EINTRAGEN*"
350 GOSUB 650: REM ADRESSE ABFRAGEN
360 AD=AD+1
370 REC=AD: GOSUB 1210 : REM UMRECHNUNG
375 NAME$(AD)=N$: REC%(AD)=REC: GOSUB 950: REM INDEX SORTIEREN
380 GOSUB 740: REM SATZ SCHREIBEN
390 RETURN
400 :
410 :
420 REM *** BLAETTERN ***
430 PRINT "*BLAETTERN*"
435 SNR=1: GOTO 475
440 GET A$: IF A$="" THEN GOTO 440
450 IF A$<>CHR$(29) AND A$<>CHR$(157) THEN RETURN
460 IF A$=CHR$(29) AND SNR<AD THEN SNR=SNR+1
470 IF A$=CHR$(157) AND SNR>1 THEN SNR=SNR-1
475 REC=REC%(SNR)
480 GOSUB 1210: REM UMRECHNUNG
490 GOSUB 810 : REM ADRESSE LESEN
500 PRINT: PRINT N$: PRINT W$: PRINT T$: PRINT
510 GOTO 440
520 :
530 :
540 REM *** AENDERN ***
550 PRINT "*AENDERN*"
560 GOSUB 650 : REM ADRESSE ABFRAGEN
570 GOSUB 1210: REM UMRECHNUNG
575 NAME$(SNR)=N$: REC%(SNR)=REC: GOSUB 950: REM INDEX SORTIEREN
580 GOSUB 730: REM SATZ SCHREIBEN
590 RETURN
600 :
610 :
640 REM *** ADRESSE ABFRAGEN ***
650 N$="": W$="": T$=""
660 INPUT "NAME";N$
670 INPUT "WOHNORT";W$
680 INPUT "TELEFON";T$
690 RETURN
700 :
710 :
720 REM *** DATENSATZ SCHREIBEN ***
730 IF N$="" THEN N$="*": REM ACHTUNG: DAS SCHREIBEN VON
740 IF W$="" THEN W$="*": REM 'LEERSTRINGS' MUSS VER-
750 IF T$="" THEN T$="*": REM MIEDEN WERDEN !!!
755 PRINT#1,"B-P:";2;1 : REM BUFFER-POINTER SETZEN
760 PRINT#2,N$ CHR$(13) W$ CHR$(13) T$: REM 1 PRINT#-BEFEHL !!!
765 PRINT#1,"U2:";2;0;SPUR;SEKT : REM PUFFER AUF DISK SCHREIBEN
770 RETURN
780 :
790 :
800 REM *** DATENSATZ LESEN ***
810 PRINT#1,"U1:";2;0;SPUR;SEKT
812 PRINT#1,"B-P:";2;1
818 INPUT#2,N$: IF N$="*" THEN N$=""
820 INPUT#2,W$: IF W$="*" THEN W$=""
830 INPUT#2,T$: IF T$="*" THEN T$=""
840 RETURN
850 :
860 :
940 REM *** SORTIEREN ***
950 FOR I=1 TO AD-1
960 : FOR J=I TO AD
970 : IF NAME$(I)<=NAME$(J) THEN 1000
980 : S$=NAME$(I): NAME$(I)=NAME$(J): NAME$(J)=S$
990 : S=REC%(I): REC%(I)=REC%(J): REC%(J)=S
1000 : NEXT J
1010 NEXT I
1020 RETURN
1030 :
1040 :
1050 REM *** ADRESSE SUCHEN ***
1060 INPUT "GESUCHTER NAME";SN$
1070 FOR SNR=1 TO AD
1080 : IF NAME$(SNR)<>SN$ THEN GOTO 1150
1090 : REC=REC%(SNR)
1100 : GOSUB 1210: REM UMRECHNUNG
1110 : GOSUB 810 : REM SATZ LESEN
1120 : PRINT: PRINT N$: PRINT W$: PRINT T$: PRINT
1130 : INPUT "WEITERSUCHEN(J/N)";A$
1140 : IF A$<>"J" THEN RETURN
1150 NEXT SNR
1160 RETURN
1170 :
1180 :
1200 REM *** RECORDNR.=>SPUR/SEKTOR ***
1210 IF REC<358 THEN AA=0:BB=22:DD=1:GOTO 1250
1220 IF REC>471 THEN AA=357:BB=20:DD=19:GOTO 1250
1230 IF REC<580 THEN AA=471:BB=19:DD=25:GOTO 1250
1240 AA=579:BB=18:DD=31
1250 SPUR=INT(((REC-AA)-1)/(BB-1))+DD
1260 SEKT=REC-AA-(SPUR-DD)*BB+(SPUR-DD-1)
1270 RETURN
1280 :
1290 :
1300 REM *** BLOCKBELEGUNG ***
1310 OPEN 1,8,15
1320 OPEN 2,8,2,"#"
1330 PRINT#1,"U1:";2;0;18;0 : REM SEKTOR 0 VON SPUR 18 LESEN
1340 :
1350 PRINT#1,"B-P:";2;4 : REM AB BYTES FUER SPUR 1 MANIPUL.
1360 FOR I=1 TO 4*17 : REM SPUR 1-17 ALS BELEGT
1370 : PRINT#2,CHR$(0); : REM KENNZEICHNEN
1380 NEXT
1390 :
1400 PRINT#1,"B-P:";2;4+4*18: REM AB BYTES FUER SPUR 19 MANIPUL.
1410 FOR I=1 TO 4*12 : REM SPUR 19-30 ALS BELEGT
1420 : PRINT#2,CHR$(0); : REM KENNZEICHNEN
1430 NEXT
1440 :
1450 PRINT#1,"U2:";2;0;18;0 : REM BAM ZURUECKSCHREIBEN
1460 PRINT#1,"I" : REM MANIPUL.DIRECTORY HOLEN
1470 CLOSE 1: CLOSE 2
1480 RETURN