home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / sh2x / sh28b.d64 / direktzugriff (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  4KB  |  149 lines

  1. 90 DIM NAME$(100), REC%(100)
  2. 95 GOSUB 1310 : REM BLOCKBELEGUNG
  3. 100 OPEN 1,8,15: REM BEFEHLSKANAL OEFFNEN
  4. 110 OPEN 2,8,2,"INFODATEI,S,R": REM SEQ.DATEI OEFFNEN
  5. 120 INPUT#1,A: REM FEHLER AUFGETRETEN?
  6. 130 IF A<>0 THEN GOTO 140: REM JA, DANN WEITER
  7. 132 INPUT#2,AD: REM ADRESSANZAHL LESEN
  8. 134 FOR I=1 TO AD
  9. 136 : INPUT#2,NAME$(I): INPUT#2,REC%(I)
  10. 137 : IF NAME$(I)="*" THEN NAME$(I)=""
  11. 138 NEXT I
  12. 140 CLOSE 2: REM SEQUENTIELLE DATEI SCHLIESSEN
  13. 150 :
  14. 160 OPEN 2,8,2,"#": REM DIREKTZUGRIFFS-DATEI OEFFNEN
  15. 170 :
  16. 180 :
  17. 190 REM *** MENUE ***
  18. 200 PRINT:PRINT "1=EINTRAGEN/2=SUCHEN/3=BLAETTERN/4=AENDERN/5=ENDE":PRINT
  19. 210 GET A$: IF A$="" THEN GOTO 210
  20. 220 :
  21. 230 IF A$<>"5" THEN ON VAL(A$) GOSUB 340,1060,430,550: GOTO 200
  22. 240 :
  23. 250 CLOSE 2: REM RELATIVE DATEI SCHLIESSEN
  24. 260 PRINT#1,"S:INFODATEI": REM SEQ.DATEI LOESCHEN
  25. 270 OPEN 2,8,2,"INFODATEI,S,W": REM SEQ.DATEI OEFFNEN
  26. 280 PRINT#2,AD: REM ADRESSANZAHL SPEICHERN
  27. 282 FOR I=1 TO AD
  28. 284 : IF NAME$(I)="" THEN NAME$(I)="*"
  29. 286 : PRINT#2,NAME$(I): PRINT#2,REC%(I)
  30. 288 NEXT I
  31. 290 CLOSE 2: CLOSE 1: REM ALLE DATEIEN SCHLIESEN
  32. 300 END
  33. 310 :
  34. 320 :
  35. 330 REM *** NEUE ADRESSE EINTRAGEN ***
  36. 340 PRINT "*EINTRAGEN*"
  37. 350 GOSUB 650: REM ADRESSE ABFRAGEN
  38. 360 AD=AD+1
  39. 370 REC=AD: GOSUB 1210 : REM UMRECHNUNG
  40. 375 NAME$(AD)=N$: REC%(AD)=REC: GOSUB 950: REM INDEX SORTIEREN
  41. 380 GOSUB 740: REM SATZ SCHREIBEN
  42. 390 RETURN
  43. 400 :
  44. 410 :
  45. 420 REM *** BLAETTERN ***
  46. 430 PRINT "*BLAETTERN*"
  47. 435 SNR=1: GOTO 475
  48. 440 GET A$: IF A$="" THEN GOTO 440
  49. 450 IF A$<>CHR$(29) AND A$<>CHR$(157) THEN RETURN
  50. 460 IF A$=CHR$(29) AND SNR<AD THEN SNR=SNR+1
  51. 470 IF A$=CHR$(157) AND SNR>1 THEN SNR=SNR-1
  52. 475 REC=REC%(SNR)
  53. 480 GOSUB 1210: REM UMRECHNUNG
  54. 490 GOSUB 810 : REM ADRESSE LESEN
  55. 500 PRINT: PRINT N$: PRINT W$: PRINT T$: PRINT
  56. 510 GOTO 440
  57. 520 :
  58. 530 :
  59. 540 REM *** AENDERN ***
  60. 550 PRINT "*AENDERN*"
  61. 560 GOSUB 650 : REM ADRESSE ABFRAGEN
  62. 570 GOSUB 1210: REM UMRECHNUNG
  63. 575 NAME$(SNR)=N$: REC%(SNR)=REC: GOSUB 950: REM INDEX SORTIEREN
  64. 580 GOSUB 730: REM SATZ SCHREIBEN
  65. 590 RETURN
  66. 600 :
  67. 610 :
  68. 640 REM *** ADRESSE ABFRAGEN ***
  69. 650 N$="": W$="": T$=""
  70. 660 INPUT "NAME";N$
  71. 670 INPUT "WOHNORT";W$
  72. 680 INPUT "TELEFON";T$
  73. 690 RETURN
  74. 700 :
  75. 710 :
  76. 720 REM *** DATENSATZ SCHREIBEN ***
  77. 730 IF N$="" THEN N$="*": REM ACHTUNG: DAS SCHREIBEN VON
  78. 740 IF W$="" THEN W$="*": REM 'LEERSTRINGS' MUSS VER-
  79. 750 IF T$="" THEN T$="*": REM MIEDEN WERDEN !!!
  80. 755 PRINT#1,"B-P:";2;1  : REM BUFFER-POINTER SETZEN
  81. 760 PRINT#2,N$ CHR$(13) W$ CHR$(13) T$: REM 1 PRINT#-BEFEHL !!!
  82. 765 PRINT#1,"U2:";2;0;SPUR;SEKT : REM PUFFER AUF DISK SCHREIBEN
  83. 770 RETURN
  84. 780 :
  85. 790 :
  86. 800 REM *** DATENSATZ LESEN ***
  87. 810 PRINT#1,"U1:";2;0;SPUR;SEKT
  88. 812 PRINT#1,"B-P:";2;1
  89. 818 INPUT#2,N$: IF N$="*" THEN N$=""
  90. 820 INPUT#2,W$: IF W$="*" THEN W$=""
  91. 830 INPUT#2,T$: IF T$="*" THEN T$=""
  92. 840 RETURN
  93. 850 :
  94. 860 :
  95. 940 REM *** SORTIEREN ***
  96. 950 FOR I=1 TO AD-1
  97. 960 : FOR J=I TO AD
  98. 970 :   IF NAME$(I)<=NAME$(J) THEN 1000
  99. 980 :   S$=NAME$(I): NAME$(I)=NAME$(J): NAME$(J)=S$
  100. 990 :   S=REC%(I): REC%(I)=REC%(J): REC%(J)=S
  101. 1000 : NEXT J
  102. 1010 NEXT I
  103. 1020 RETURN
  104. 1030 :
  105. 1040 :
  106. 1050 REM *** ADRESSE SUCHEN ***
  107. 1060 INPUT "GESUCHTER NAME";SN$
  108. 1070 FOR SNR=1 TO AD
  109. 1080 : IF NAME$(SNR)<>SN$ THEN GOTO 1150
  110. 1090 : REC=REC%(SNR)
  111. 1100 : GOSUB 1210: REM UMRECHNUNG
  112. 1110 : GOSUB 810 : REM SATZ LESEN
  113. 1120 : PRINT: PRINT N$: PRINT W$: PRINT T$: PRINT
  114. 1130 : INPUT "WEITERSUCHEN(J/N)";A$
  115. 1140 : IF A$<>"J" THEN RETURN
  116. 1150 NEXT SNR
  117. 1160 RETURN
  118. 1170 :
  119. 1180 :
  120. 1200 REM *** RECORDNR.=>SPUR/SEKTOR ***
  121. 1210 IF REC<358 THEN AA=0:BB=22:DD=1:GOTO 1250
  122. 1220 IF REC>471 THEN AA=357:BB=20:DD=19:GOTO 1250
  123. 1230 IF REC<580 THEN AA=471:BB=19:DD=25:GOTO 1250
  124. 1240 AA=579:BB=18:DD=31
  125. 1250 SPUR=INT(((REC-AA)-1)/(BB-1))+DD
  126. 1260 SEKT=REC-AA-(SPUR-DD)*BB+(SPUR-DD-1)
  127. 1270 RETURN
  128. 1280 :
  129. 1290 :
  130. 1300 REM *** BLOCKBELEGUNG ***
  131. 1310 OPEN 1,8,15
  132. 1320 OPEN 2,8,2,"#"
  133. 1330 PRINT#1,"U1:";2;0;18;0 : REM SEKTOR 0 VON SPUR 18 LESEN
  134. 1340 :
  135. 1350 PRINT#1,"B-P:";2;4     : REM AB BYTES FUER SPUR 1 MANIPUL.
  136. 1360 FOR I=1 TO 4*17        : REM SPUR 1-17 ALS BELEGT
  137. 1370 : PRINT#2,CHR$(0);     : REM KENNZEICHNEN
  138. 1380 NEXT
  139. 1390 :
  140. 1400 PRINT#1,"B-P:";2;4+4*18: REM AB BYTES FUER SPUR 19 MANIPUL.
  141. 1410 FOR I=1 TO 4*12        : REM SPUR 19-30 ALS BELEGT
  142. 1420 : PRINT#2,CHR$(0);     : REM KENNZEICHNEN
  143. 1430 NEXT
  144. 1440 :
  145. 1450 PRINT#1,"U2:";2;0;18;0 : REM BAM ZURUECKSCHREIBEN
  146. 1460 PRINT#1,"I"            : REM MANIPUL.DIRECTORY HOLEN
  147. 1470 CLOSE 1: CLOSE 2
  148. 1480 RETURN
  149.