home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / sh6x / sh62a.d64 / adressdatei (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  6KB  |  228 lines

  1. 100 REM INDEXSEQUENTIELLE ADRESSDATEI
  2. 110 REM IDEE:1985 MARTIN HECHT,STGT
  3. 120 REM GEAENDERT F. EXBASIC LEVEL 2
  4. 130 REM 64'ER SONDERHEFT 62/H.BEILER
  5. 140 REM -------------------------------
  6. 150 REM DIMENSIONIERUNGEN
  7. 160 FORI=1TO5:READDX$(I):NEXT
  8. 170 DM=300:REM MAXIMALE DATENSATZANZAHL
  9. 190 DIM ID$(DM):REM INDEXFELD (ENTHAELT NACHNAMEN)
  10. 200 DIM IN(DM):REM ENTHAELT ZUGEHOERIGE RECORDNUMMERN
  11. 210 DIM DS$(5):REM DATENFELDER
  12. 240 GOSUB490:PRINT"[147]":GOSUB5000
  13. 241 REM *************
  14. 250 REM * HAUPTMENUE*
  15. 251 REM *************
  16. 260     1:(null)1:2:POKE650,128
  17. 270 WL=0:PRINT"[147]":XY=2:GOSUB5100
  18. 272 X=10:Y=2:GOSUB3000
  19. 280 PRINT" [193]DRESSENVERWALTUNG "
  20. 282 PRINTTAB(7)"MIT [197][216][208][193][206][196][197][196] [194][193][211][201][195] [204][197][214][197][204] [201][201]":PRINT
  21. 290 XY=10:GOSUB5100
  22. 292 X=7:Y=6:GOSUB3000
  23. 295 PRINT"<[204]> [204]ISTE DER [211]UCHBEGRIFFE"
  24. 310 PRINTTAB(7)"<1> [193]DRESSEN EINGEBEN"
  25. 320 PRINTTAB(7)"<2> [193]DRESSEN AUSGEBEN"
  26. 330 PRINTTAB(7)"<3> [196]ATEI SCHLIESSEN/[197][206][196][197]"
  27. 340 GETT$:IFT$="L"THEN2500
  28. 341 IFT$="1"THEN710
  29. 342 IFT$="2"THEN1110
  30. 343 IFT$="3"THEN1480
  31. 430 GOTO340:REM WARTESCHLEIFE TASTENDRUCK
  32. 440 :
  33. 460 REM ********************
  34. 470 REM * DATEI EROEFFNEN  *
  35. 480 REM ********************
  36. 490 LF=1:SA=2:DN$="RELADR":RL=115:GOSUB1800:REM RELATIVE DATEI 'RELADR' OEFFNEN
  37. 500 :
  38. 510 OPEN2,8,3,"SEQADR,S,R":REM SEQUENTIELLE DATEI 'SEQADR' ZUM LESEN OEFFNEN
  39. 520 :
  40. 530 GOSUB 1620:REM FLOPPY-FEHLERKANAL AUSLESEN
  41. 540 IF ER<>0 THEN AD=0:GOTO 590:REM DATEI IST NOCH NICHT ANGELEGT
  42. 550 :
  43. 560 INPUT#2,AD:REM ANZAHL DER DATENSAETZE
  44. 570 FOR I=1 TO AD:INPUT#2,ID$(I),IN(I):NEXT I:REM INDEXDATEI EINLESEN
  45. 580 :
  46. 590 FL=1:REM KENNZEICHNUNG FUER 'DATEI IM RECHNER'
  47. 600 :
  48. 610 CLOSE 2:REM SEQUENTIELLE DATEI SCHLIESSEN
  49. 620 X=4:Y=17:GOSUB3000:XY=1:GOSUB5100:X=7:Y=18:GOSUB3000
  50. 630 PRINTTAB(9)"[196]ATEN EINGEBEN/LESEN"
  51. 640 :
  52. 650 RETURN
  53. 660 :
  54. 680 REM *********************
  55. 690 REM * ADRESSEN EINGEBEN *
  56. 700 REM *********************
  57. 710 IFFL=0THENX=7:Y=23:GOSUB3000:PRINT" [196]ATEI NICHT GEOEFFNET  ! "
  58. 712 IFFL=0THEN(null)2:X=0:Y=23:GOSUB3000:PRINTLE$:GOTO340
  59. 720 PRINT"[147]":XY=1:GOSUB5100:X=7:Y=2:GOSUB3000:PRINT" [193]DRESSDATEN EINGEBEN"
  60. 730 REM ADRESSE EINGEBEN
  61. 740 GOSUB5200
  62. 742 X=12:Y=4
  63. 745 FORI=1TO4:Y=Y+2:GOSUB3000:(null)"";DS$(I),25:NEXT
  64. 746 Y=Y+2:GOSUB3000:(null)"";DS$(5),15
  65. 800 :
  66. 810 REM ADRESSE IN INDEXDATEI VERMERKEN
  67. 820 AD=AD+1:REM ANZAHL DER ADRESSEN UM 1 ERHOEHEN
  68. 830 ID$(AD)=DS$(1):REM NACHNAME
  69. 840 IN(AD)=RN:REM RECORDNUMMER
  70. 850 :
  71. 860 REM ADRESSFELDER AUF RICHTIGE LAENGE
  72. 880 DS$(1)=LEFT$(DS$(1)+LEFT$(LE$,ABS(25-LEN(DS$(1)))),25)
  73. 890 DS$(2)=LEFT$(DS$(2)+LEFT$(LE$,ABS(25-LEN(DS$(2)))),25)
  74. 900 DS$(3)=LEFT$(DS$(3)+LEFT$(LE$,ABS(25-LEN(DS$(3)))),25)
  75. 910 DS$(4)=LEFT$(DS$(4)+LEFT$(LE$,ABS(25-LEN(DS$(4)))),25)
  76. 920 DS$(5)=LEFT$(DS$(5)+LEFT$(LE$,ABS(15-LEN(DS$(5)))),15)
  77. 930 :
  78. 940 REM ADRESSE FUER SPEICHERUNG ZUSAMMENFASSEN
  79. 950 RC$=""
  80. 960 FOR I=1 TO 5:RC$=RC$+DS$(I):NEXT I
  81. 970 :
  82. 980 REM ADRESSE SPEICHERN
  83. 990 RN=AD:RP=1:GOSUB 1930:REM AUF RECORD (NR.=AD) POSITIONIEREN
  84. 1000 PRINT#LF,RC$:REM ADRESSE IN RECORD SCHREIBEN
  85. 1010 GOSUB 1600:REM FLOPPY-FEHLERKANAL AUSLESEN
  86. 1020 :
  87. 1030 X=7:Y=23:GOSUB3000:PRINT" [193]DRESSE IST GESPEICHERT ! ":(null)2
  88. 1040 X=0:Y=23:GOSUB3000:PRINTLE$
  89. 1050 GOTO260
  90. 1080 REM *********************
  91. 1090 REM * ADRESSEN AUSGEBEN *
  92. 1100 REM *********************
  93. 1110 IFFL=0THENX=7:Y=23:GOSUB3000:PRINT" [196]ATEI NICHT GEOEFFNET  ! "
  94. 1111 IFFL=0THEN(null)2:X=0:Y=23:GOSUB3000:PRINTLE$:GOTO340
  95. 1112 PRINT"[147]":XY=1:GOSUB5100:X=7:Y=2:GOSUB3000:PRINT" [193]DRESSDATEN AUSGEBEN"
  96. 1113 GOSUB5200
  97. 1114 X=12:Y=6:GOSUB3000
  98. 1130 (null)"";NN$,25:REM INDEX ERFRAGEN
  99. 1140 :
  100. 1150 FOR I=1 TO AD:REM INDEXDATEI DURCHSUCHEN
  101. 1160 IFNN$=ID$(I)THENGN=I:I=AD:NEXTI:GOTO1220:REM INDEX GEFUNDEN
  102. 1170 NEXTI
  103. 1180 :
  104. 1190 X=4:Y=23:GOSUB3000:PRINT"  [193]DRESSE IST NICHT VORHANDEN ! "
  105. 1200 (null)2:X=0:Y=23:GOSUB3000:PRINTLE$:GOTO1114
  106. 1210 :
  107. 1220 RN=GN:RP=1:GOSUB1930:REM AUF RECORD (NR. = IN(I)) POSITIONIEREN
  108. 1222 RC$="":FORI=1TORL
  109. 1230 GET#LF,RT$:RC$=RC$+RT$:REM RECORD EINLESEN
  110. 1240 NEXT
  111. 1250 REM RECORD AUFTEILEN
  112. 1260 DS$(1)=MID$(RC$,1,25):REM NACHNAME
  113. 1270 DS$(2)=MID$(RC$,26,25):REM VORNAME
  114. 1280 DS$(3)=MID$(RC$,51,25):REM STRASSE
  115. 1290 DS$(4)=MID$(RC$,76,25):REM WOHNORT
  116. 1300 DS$(5)=MID$(RC$,101,15):REM TELEFON
  117. 1310 :
  118. 1320 REM RECORD AUSGEBEN
  119. 1330 X=12:Y=6:FORI=2TO5:Y=Y+2:GOSUB3000:PRINTDS$(I):NEXT
  120. 1340 X=4:Y=17:GOSUB3000:XY=3:GOSUB5100
  121. 1350 X=7:Y=18:GOSUB3000
  122. 1352 PRINT"<[196]> [193]DRESSE DRUCKEN"
  123. 1354 PRINTTAB(7)"<[206]> [206]EUE [193]DRESSE SUCHEN"
  124. 1356 PRINTTAB(7)"<[200]> [200]AUPTMENUE"
  125. 1360 GETT$
  126. 1362 IFT$="D"THENGOSUB4000:REM ZUR DRUCKERROUTINE
  127. 1364 IFT$="N"THEN3100:REM NEUER DATENSATZ
  128. 1366 IFT$="H"THEN260:REM HAUPTMENUE
  129. 1430 GOTO1360
  130. 1440 :
  131. 1460 REM ***********************
  132. 1470 REM * DATEIARBEIT BEENDEN *
  133. 1471 REM ***********************
  134. 1480 IFFL=0THENX=7:Y=23:GOSUB3000:PRINT" [203]EINE [196]ATEI IM [211]PEICHER! "
  135. 1482 IFFL=0THEN(null)2:X=0:Y=23:GOSUB3000:PRINTLE$:GOTO340
  136. 1489 PRINT#15,"S:SEQADR":REM INDEXDATEI AUF DISKETTE LOESCHEN
  137. 1490 :
  138. 1500 OPEN 2,8,3,"SEQADR,S,W":REM SEQ. DATEI 'SEQADR' ZUM SCHREIBEN OEFFNEN
  139. 1510 PRINT#2,AD:REM ANZAHL DER DATENSAETZE
  140. 1520 FOR I=1 TO AD:PRINT#2,ID$(I)","IN(I):NEXT I:REM INDEXDATEI SPEICHERN
  141. 1530 :
  142. 1540 GOSUB2040:REM RELATIVE DATEI SCHLIESSEN
  143. 1550 :
  144. 1560 PRINT"[147]":END:REM PROGRAMM BEENDEN
  145. 1570 :
  146. 1580 :
  147. 1590 REM ******************************
  148. 1600 REM *FLOPPY-FEHLERKANAL AUSLESEN *
  149. 1610 REM ******************************
  150. 1620 INPUT#15,ER,ER$,TR,SK
  151. 1640 RETURN
  152. 1670 :
  153. 1680 REM UNTERPROGRAMME ZUR VERWALTUNG VON RELATIVEN DATEIEN
  154. 1700 :
  155. 1730 REM OEFFNEN EINER RELATIVEN DATEI
  156. 1740 REM -----------------------------
  157. 1750 REM  LF = LOGISCHE FILENUMMER
  158. 1760 REM  SA = SEKUNDAERADRESSE
  159. 1770 REM  DN$= DATEINAME
  160. 1780 REM  RL = RECORDLAENGE
  161. 1790 :
  162. 1800 OPEN 15,8,15:REM FLOPPY-KOMMANDOKANAL OEFFNEN
  163. 1810 OPEN LF,8,SA,DN$+",L,"+CHR$(RL):REM DATEI OEFFNEN
  164. 1820 :
  165. 1830 RETURN
  166. 1840 :
  167. 1870 REM POSITIONIEREN AUF EINEN RECORD
  168. 1880 REM ------------------------------
  169. 1890 REM  SA = SEKUNDAERADRESSE
  170. 1900 REM  RN = RECORDNUMMER
  171. 1910 REM  RP = POSITION INNERHALB DES RECORDS
  172. 1920 :
  173. 1930 HB=INT(RN/256):LB=RN-256*HB:REM RECORDNUMMER IN LOW/HIGH AUFTEILEN
  174. 1940 PRINT#15,"P"+CHR$(SA)+CHR$(LB)+CHR$(HB)+CHR$(RP)
  175. 1950 :
  176. 1960 RETURN
  177. 1970 :
  178. 2000 REM SCHLIESSEN EINER (RELATIVEN) DATEI
  179. 2010 REM ----------------------------------
  180. 2020 REM  LF = LOGISCHE FILENUMMER
  181. 2030 :
  182. 2040 CLOSE LF:REM RELATIVE DATEI SCHLIESSEN
  183. 2050 CLOSE15:REM FLOPPY-FEHLERKANAL SCHLIESSEN
  184. 2060 :
  185. 2070 RETURN
  186. 2500 IFFL=0THENX=7:Y=23:GOSUB3000:PRINT" [196]ATEI NICHT GEOEFFNET  ! "
  187. 2510 IFFL=0THEN(null)2:X=0:Y=23:GOSUB3000:PRINTLE$:GOTO340
  188. 2520 PRINT"[147]"
  189. 2530 FORI=1TOAD
  190. 2540 PRINTID$(I)
  191. 2550 NEXT
  192. 2560 POKE198,0:WAIT198,1:GOTO260
  193. 3000 POKE211,X:POKE214,Y:SYS58640:RETURN
  194. 3095 REM **************************
  195. 3096 REM * NEUEN DATENSATZ SUCHEN *
  196. 3097 REM **************************
  197. 3100 X=12:Y=4:FORI=1TO5:Y=Y+2:GOSUB3000
  198. 3102 PRINTLEFT$(LE$,25):NEXT
  199. 3110 GOTO1114
  200. 3995 REM ***********************
  201. 3996 REM * ADRESSEN AUSDRUCKEN *
  202. 3997 REM ***********************
  203. 3999 REM ADRESSEN DRUCKEN
  204. 4000 OPEN4,4,7
  205. 4010 FORI=1TO5
  206. 4020 PRINT#4,DX$(I);DS$(I)
  207. 4030 NEXT
  208. 4040 PRINT#4:CLOSE4
  209. 4050 RETURN
  210. 4999 REM WINDOW
  211. 5000 OL$="":OL$=OL$+"[176][146]"
  212. 5002 LE$="                                      ":REM LEERSTRING
  213. 5010 FORI=1TO30:MO$=MO$+"[192]":ML$=ML$+" ":NEXT
  214. 5030 OL$=OL$+""+MO$+"[146]":OL$=OL$+"[174][146]"
  215. 5040 MM$="[221][146]"+""+ML$+"[146]"+"[221][146]"
  216. 5042 UL$="":UL$=UL$+"[173][146]"
  217. 5043 UL$=UL$+""+MO$+"[146]":UL$=UL$+"[189][146]"
  218. 5050 RETURN
  219. 5100 PRINTTAB(4)OL$
  220. 5110 FORI=1TOXY:PRINTTAB(4)MM$:NEXT
  221. 5120 PRINTTAB(4)UL$
  222. 5130 RETURN
  223. 5200 MB$=""+LEFT$(ML$,12)+"[146]"
  224. 5210 PRINT:PRINT:FORI=1TO12:PRINTMB$:NEXT
  225. 5212 Y=4:FORI=1TO5:X=2:Y=Y+2:GOSUB3000:PRINT""+DX$(I):NEXT
  226. 5220 RETURN
  227. 50000 DATA"[206][193][205][197] 1...","[206][193][205][197] 2...","[211][212][210][193][211][211][197]..","[215][207][200][206][207][210][212]..","[212][197][204][197][198][207][206].."
  228.