home *** CD-ROM | disk | FTP | other *** search
/ 64'er Special 2 / 64er_Magazin_Sonderheft_02_86-02_1986_Markt__Technik_de.d64 / adressverwaltung (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  4KB  |  159 lines

  1. 100 rem--- adressverwaltung mit indexsequentieller dateiorganisation -----------
  2. 110 rem--- (w) 1985 by martin hecht,stgt ---------------------------------------
  3. 120 :
  4. 130 :
  5. 140 :
  6. 150 rem--- dimensionierungen ---------------------------------------------------
  7. 160 :
  8. 170 dm=100:rem maximale datensatzanzahl
  9. 180 :
  10. 190 dim id$(dm):rem indexfeld (enthaelt nachnamen)
  11. 200 dim in(dm):rem enthaelt zugehoerige recordnummern
  12. 210 dim ds$(5):rem datenfelder
  13. 220 :
  14. 230 :
  15. 240 :
  16. 250 rem--- hauptmenue ----------------------------------------------------------
  17. 260 :
  18. 270 wl=0:print:print
  19. 280 print tab(11) "adressenverwaltung"
  20. 290 print
  21. 300 print tab(8)"-1-: dateiarbeit beginnen"
  22. 310 print tab(8)"-2-: adressen eingeben"
  23. 320 print tab(8)"-3-: adressen ausgeben"
  24. 330 print tab(8)"-4-: dateiarbeit beenden"
  25. 340 print
  26. 350 :
  27. 360 print tab(11) "ihre wahl (1-4)";:input wl
  28. 370 :
  29. 380 if wl=1 then gosub 490:rem dateiarbeit beginnen
  30. 390 if wl=2 then gosub 710:rem adressen eingeben
  31. 400 if wl=3 then gosub 1110:rem adressen ausgeben
  32. 410 if wl=4 then goto 1480:rem dateiarbeit beenden
  33. 420 :
  34. 430 goto 270:rem zurueck zum hauptmenue
  35. 440 :
  36. 450 :
  37. 460 :
  38. 470 rem--- dateiarbeit beginnen ------------------------------------------------
  39. 480 :
  40. 490 lf=1:sa=2:dn$="reladr":rl=67:gosub 1800:rem relative datei 'reladr' oeffnen
  41. 500 :
  42. 510 open 2,8,3,"seqadr,s,r":rem sequentielle datei 'seqadr' zum lesen oeffnen
  43. 520 :
  44. 530 gosub 1620:rem floppy-fehlerkanal auslesen
  45. 540 if er<>0 then ad=0:goto 590:rem datei ist noch nicht angelegt
  46. 550 :
  47. 560 input#2,ad:rem anzahl der datensaetze
  48. 570 for i=1 to ad:input#2,id$(i),in(i):next i:rem indexdatei einlesen
  49. 580 :
  50. 590 fl=1:rem kennzeichnung fuer 'datei im rechner'
  51. 600 :
  52. 610 close 2:rem sequentielle datei schliessen
  53. 620 :
  54. 630 print:print:print tab(7) "dateiarbeit kann beginnen !"
  55. 640 :
  56. 650 return
  57. 660 :
  58. 670 :
  59. 680 :
  60. 690 rem--- adressen eingeben ---------------------------------------------------
  61. 700 :
  62. 710 if fl=0 then print:print tab(8) "keine datei im rechner !":return
  63. 720 :
  64. 730 rem adresse eingeben
  65. 740 print:print
  66. 750 input "nachname (15) :";ds$(1)
  67. 760 input "vorname (10) :";ds$(2)
  68. 770 input "strasse (15) :";ds$(3)
  69. 780 input "wohnort (15) :";ds$(4)
  70. 790 input "telefon (11) :";ds$(5)
  71. 800 :
  72. 810 rem adresse in indexdatei vermerken
  73. 820 ad=ad+1:rem anzahl der adressen um 1 erhoehen
  74. 830 id$(ad)=ds$(1):rem nachname
  75. 840 in(ad)=rn:rem recordnummer
  76. 850 :
  77. 860 rem adressfelder auf richtige laenge bringen
  78. 870 le$="               ":rem leerstring zum auffuellen der felder
  79. 880 ds$(1)=left$(ds$(1)+left$(le$,abs(15-len(ds$(1)))),15)
  80. 890 ds$(2)=left$(ds$(2)+left$(le$,abs(10-len(ds$(2)))),10)
  81. 900 ds$(3)=left$(ds$(3)+left$(le$,abs(15-len(ds$(3)))),15)
  82. 910 ds$(4)=left$(ds$(4)+left$(le$,abs(15-len(ds$(4)))),15)
  83. 920 ds$(5)=left$(ds$(5)+left$(le$,abs(11-len(ds$(5)))),11)
  84. 930 :
  85. 940 rem adresse fuer speicherung zusammenfassen
  86. 950 rc$=""
  87. 960 for i=1 to 5:rc$=rc$+ds$(i):next i
  88. 970 :
  89. 980 rem adresse speichern
  90. 990 rn=ad:rp=1:gosub 1930:rem auf record (nr.=ad) positionieren
  91. 1000 print#lf,rc$:rem adresse in record schreiben
  92. 1010 gosub 1600:rem floppy-fehlerkanal auslesen
  93. 1020 :
  94. 1030 print:print:printtab(5)"adresse ist gespeichert !"
  95. 1040 :
  96. 1050 return
  97. 1060 :
  98. 1070 :
  99. 1080 :
  100. 1090 rem--- adressen ausgeben ---------------------------------------------------
  101. 1100 :
  102. 1110 if fl=0 then print:print tab(8) "keine datei im rechner !":return
  103. 1120 :
  104. 1130 print:print:input "nachname";nn$:rem index erfragen
  105. 1140 :
  106. 1150 for i=1 to ad:rem indexdatei durchsuchen
  107. 1160 if nn$=id$(i) then gn=i:i=ad:next i:goto 1220:rem index gefunden
  108. 1170 next i
  109. 1180 :
  110. 1190 print:print:print tab(5) "adresse ist nicht vorhanden !"
  111. 1200 return
  112. 1210 :
  113. 1220 rn=gn:rp=1:gosub 1930:rem auf record (nr. = in(i)) positionieren
  114. 1230 input#lf,rc$:rem record einlesen
  115. 1240 :
  116. 1250 rem record aufteilen
  117. 1260 ds$(1)=mid$(rc$,1,15):rem nachname
  118. 1270 ds$(2)=mid$(rc$,16,10):rem vorname
  119. 1280 ds$(3)=mid$(rc$,26,15):rem strasse
  120. 1290 ds$(4)=mid$(rc$,41,15):rem wohnort
  121. 1300 ds$(5)=mid$(rc$,56,11):rem wohnort
  122. 1310 :
  123. 1320 rem record ausgeben
  124. 1330 print:print
  125. 1340 print "nachname: ";ds$(1)
  126. 1350 print "vorname: ";ds$(2)
  127. 1360 print "strasse: ";ds$(3)
  128. 1370 print "wohnort: ";ds$(4)
  129. 1380 print "telefon: ";ds$(5)
  130. 1390 :
  131. 1400 print:print:print "weiter mit 'space' !"
  132. 1410 get t$:if t$<>chr$(32) then 1410:rem warten auf 'return'
  133. 1420 :
  134. 1430 return
  135. 1440 :
  136. 1450 :
  137. 1460 :
  138. 1470 rem--- dateiarbeit beenden -------------------------------------------------
  139. 1480 print#15,"s:seqadr":rem indexdatei auf diskette loeschen
  140. 1490 :
  141. 1500 open 2,8,3,"seqadr,s,w":rem seq. datei 'seqadr' zum schreiben oeffnen
  142. 1510 print#2,ad:rem anzahl der datensaetze
  143. 1520 for i=1 to ad:print#2,id$(i)","in(i):next i:rem indexdatei speichern
  144. 1530 :
  145. 1540 gosub 2040:rem relative datei schliessen
  146. 1550 :
  147. 1560 end:rem programm beenden
  148. 1570 :
  149. 1580 :
  150. 1590 :
  151. 1600 rem--- floppy-fehlerkanal auslesen -----------------------------------------
  152. 1610 :
  153. 1620 input#15,er,er$,tr,sk
  154. 1630 :
  155. 1640 return
  156. 1650 :
  157. 1660 :
  158. 1670 :
  159.