home *** CD-ROM | disk | FTP | other *** search
/ M.u.C.S. Disc 2000 / MUCS2000.iso / sigisoft / happy4 / happy4.bas next >
BASIC Source File  |  1997-10-09  |  17KB  |  371 lines

  1. 1 rem
  2. 3 rem 9,"^" KEY 10,"\" KEY 8,"@"
  3. 4 B$="A:\"
  4. 10 DIM D$(1001,9),Q(1001)
  5. 11 GOTO 100
  6. 20 ZZ$=LEFT$(ZZ$,L):ZZ$=ZZ$+STRING$(L-LEN(ZZ$),95):Z2=0:Y=1
  7. 21 LOCATE R,S,O:PRINT ZZ$;
  8. 22 LOCATE R,S+Y-1,1
  9. 23 Z$=INKEY$: IF Z$="" THEN 23 ELSE Z=ASC(Z$): Z1=0: IF Z=0 THEN Z1=ASC(RIGHT$(Z$,1))
  10. 24 IF Z<>13 THEN 28 ELSE IF Z2 >0 THEN 23
  11. 25 IF Y=1 THEN ZZ$=CHR$(13):LOCATE ,,0: RETURN
  12. 26 IF RIGHT$(ZZ$,1)="_" THEN ZZ$=LEFT$(ZZ$,INSTR(ZZ$,"_")-1)
  13. 27 LOCATE ,,0: RETURN
  14. 28 IF Z<>0 THEN 48
  15. 29 IF Z1<>71 THEN 31 ELSE IF Y=1 OR Z2 THEN 23
  16. 30 Y=1:GOTO 22
  17. 31 IF Z1<>75 THEN 34 ELSE IF Y=1 OR Z2 THEN 23
  18. 32 Y=Y-1:GOTO 22
  19. 34 Y=Y+1:GOTO 22
  20. 35 IF Z1<>79 THEN 39 ELSE IF Y>L OR Z2 THEN 23
  21. 36 IF MID$(ZZ$,Y,1)="_" THEN 23
  22. 37 Y=Y+1
  23. 38 IF MID$(ZZ$,Y,1)="_" THEN 22 ELSE 37
  24. 39 IF Z1<>82 THEN 42 ELSE IF RIGHT$(ZZ$,1)<>"_" THEN 23
  25. 40 IF (Z2=0 AND MID$(ZZ$,Y,1)="_") OR Y>L THEN 23
  26. 41 ZZ$=LEFT$(ZZ$,Y-1)+"_"+MID$(ZZ$,Y,L-Y):Z2=Z2+1:GOTO 21
  27. 42 IF Z1<>83 THEN 44 ELSE IF (Z2=0 AND MID$(ZZ$,Y,1)="_") OR Y>L THEN 23
  28. 43 GOSUB 56:ZZ$=LEFT$(ZZ$,Y-1)+MID$(ZZ$,Y+1)+"_":GOTO 21
  29. 44 IF Z1<>117 THEN 46 ELSE IF (Z2=0 AND MID$(ZZ$,Y,1)="_") OR Y>L THEN 23
  30. 45 GOSUB 56:ZZ$=LEFT$(ZZ$,Y-1)+STRING$(L-Y+1,95):GOTO 21
  31. 46 IF Z1<>119 THEN 23 ELSE IF Y=1 THEN 23
  32. 47 ZZ$=MID$(ZZ$,Y)+STRING$(Y-1,95):Y=1:GOTO 21
  33. 48 IF Z<>8 THEN 50 ELSE IF Y=1 THEN 23
  34. 49 ZZ$=LEFT$(ZZ$,Y-2)+MID$(ZZ$,Y)+"_":Y=Y-1:GOTO 21
  35. 50 IF Z<>27 THEN 51 ELSE ZZ$=STRING$(L,95):Y=1:Z2=0: GOTO 21
  36. 51 IF Z=95 OR Y>L THEN 23
  37. 52 ON PK% GOTO 55,53,54
  38. 53 IF Z<46 OR Z>58 THEN 23 ELSE 55
  39. 54 IF Z<>106 AND Z<>110 THEN 23
  40. 55 IF Z=44 THEN 23 ELSE GOSUB 56:ZZ$=LEFT$(ZZ$,Y-1)+Z$+MID$(ZZ$,Y+1):PRINT Z$;:Y=Y+1:GOTO 22
  41. 56 IF Z2 THEN Z2=Z2-1
  42. 57 RETURN
  43. 60 CLS: LOCATE 2,29: PRINT "G E B U R T S T A G E"
  44. 61 LOCATE 4,32: PRINT " Public Domain"
  45. 62 LOCATE 5,32: PRINT "  Version 2.0 "
  46. 63 color 0,7:LOCATE 1,1:PRINT " ------- (c) 1991 by Siegfried Hübner, Obere Vorstadt 21, 8812 Windsbach ------ ":color 7,0
  47. 64 LOCATE 24,5: PRINT "falls Ihnen dieses Programm gefällt, können Sie mir ja mal schreiben."
  48. 69 LOCATE 6, 5: PRINT "_____________________________________________________________________": RETURN
  49. 70 PP=1: LOCATE 22,1: PRINT SPACE$(79)
  50. 71 LOCATE 22,8: PRINT "         MINDESTENS 1 ZEICHEN KORRIGIEREN UND RETURN DRÜCKEN         ": RETURN
  51. 75 LOCATE 22,1: PRINT SPACE$(80)
  52. 76 LOCATE 22,5: PRINT "                       DATEN WERDEN AUF DISK GESPEICHERT             ": RETURN
  53. 80 LOCATE 22,1: PRINT SPACE$(80)
  54. 81 LOCATE 22,5: PRINT "                       DATEN WERDEN VON DISK EINGELESEN              ": RETURN
  55. 90 E$=INKEY$: IF E$="" THEN 90
  56. 91 RETURN
  57. 92 LOCATE 22,1: PRINT SPACE$(80)
  58. 93 LOCATE 22,5: PRINT "               DRUCKER EIN UND TASTE D       ZUM MENÜ MIT = \     "
  59. 94 E$=INKEY$: IF E$="" THEN 94
  60. 95 IF E$="D" OR E$="d" THEN GOSUB  98: RETURN
  61. 96 IF E$="\" THEN 100
  62. 97 GOTO 94
  63. 98 LOCATE 22,5: PRINT "                      DRUCKER IN BETRIEB. BITTE WARTEN               ": RETURN
  64. 100 GOSUB 60: LOCATE 4,5: PRINT "DATENZAHL ";D: LOCATE ,,0
  65. 101 LOCATE 8,30: PRINT "[1] DATEN EINGABE"
  66. 102 LOCATE 10,30: PRINT "[2] DATEN AUSGABE"
  67. 103 LOCATE 12,30: PRINT "[3] DATEN LISTEN"
  68. 104 LOCATE 14,30: PRINT "[4] DATEN SUCHEN"
  69. 105 LOCATE 16,30: PRINT "[5] DATEN DRUCKEN"
  70. 107 LOCATE 18,30: PRINT "[6] LAUFWERK WECHSELN"
  71. 108 LOCATE 20,6: PRINT "[7] DATEN SPEICHERN                           [8] PROGRAMM BEENDEN"
  72. 109 LOCATE 21, 5: PRINT "_____________________________________________________________________"
  73. 120 E$=INKEY$: IF E$="" THEN 120
  74. 121 IF E$="1" THEN 131
  75. 122 IF E$="2" THEN GOSUB 140: GOTO 275
  76. 123 IF E$="3" THEN GOSUB 140: GOTO 379
  77. 124 IF E$="4" THEN GOSUB 140: GOTO 360
  78. 125 IF E$="5" THEN GOSUB 140: GOTO 499
  79. 126 IF E$="6" THEN 169
  80. 127 IF E$="7" THEN GOSUB 150: GOTO 100
  81. 128 IF E$="8" THEN CLS: END
  82. 129 GOTO 120
  83. 131 LOCATE 22,5: PRINT "   VORHANDENE DATEN ZULADEN = ^   NEUBEGINN = \   MENÜ = @    "
  84. 132 E$=INKEY$: IF E$="" THEN 132
  85. 133 IF E$="^" THEN GOSUB 140: GOTO 200
  86. 134 IF E$="\" THEN D=0: GOTO 200
  87. 135 IF E$="@" THEN LOCATE 22,1: PRINT SPACE$(79): GOTO 120
  88. 136 GOTO 132
  89. 137 IF D=0 THEN 139
  90. 138 RETURN
  91. 139 LOCATE 22,5: PRINT "             KEINE DATEN VORHANDEN. BELIEBIGE TASTE DRÜCKEN          ": GOSUB 90: LOCATE 22,1: PRINT SPACE$(79): GOTO 120
  92. 140 IF D<=0 THEN GOSUB 160: RETURN
  93. 141 RETURN
  94. 150 GOSUB 137: N=2: GOSUB 45000: NA$=B$+":geb.dat": GOSUB 75
  95. 151 OPEN NA$ FOR OUTPUT  AS 1
  96. 152 PRINT #1,D
  97. 153 FOR I=1 TO D
  98. 154 FOR M=1 TO 9
  99. 155 PRINT #1,D$(I,M)
  100. 156 NEXT: NEXT: CLOSE 1: RETURN
  101. 160 ON ERROR GOTO 167: NA$=B$+":geb.dat": GOSUB 80
  102. 161 OPEN NA$ FOR INPUT  AS 1
  103. 162 INPUT #1,D
  104. 163 FOR I=1 TO D
  105. 164 FOR M=1 TO 9
  106. 165 INPUT #1,D$(I,M)
  107. 166 NEXT: NEXT: CLOSE 1: IF D=0 THEN 180 ELSE RETURN
  108. 167 IF ERR =53 AND ERR=58 OR ERR=1230 THEN 180
  109. 168 REM
  110. 169 LOCATE 22,5: PRINT "   BISHER LAUFWERK ";B$;"  NEUES LAUFWERK :                "
  111. 170 ZZ$="": R=22: S=45: L=1: PK%=1: GOSUB 20: B$=ZZ$
  112. 171 IF B$=CHR$(13) THEN B$=B$
  113. 172 IF B$="A" OR B$="a" OR B$="B" OR B$="b" OR B$="C" OR B$="c" OR B$="D" OR B$="d" OR B$="E" or B$="e" THEN 174
  114. 173 BEEP: GOTO 170
  115. 174 GOTO 100
  116. 180 LOCATE 22,5: PRINT "   KEINE DATEN AUF DER DISKETTE GEFUNDEN. BELIEBIGE TASTE DRÜCKEN    ": GOSUB 90: GOTO 100
  117. 200 GOSUB 60
  118. 201 LOCATE 22,1: PRINT SPACE$(79): D=D+1: LOCATE 4,62: PRINT "MAXIMAL  :";1000-D
  119. 202 LOCATE 5,62: PRINT "ANZAHL   :";D
  120. 204 IF D>1000 THEN 206
  121. 205 GOTO 209
  122. 206 LOCATE 22,5: PRINT "          DATENEINGABE BEENDET. BELIEBIGE TASTE DRÜCKEN    ": D=D-1: GOSUB 90: GOTO 259
  123. 209 GOSUB 210: GOTO 219
  124. 210 PP=0: LOCATE 9,10: PRINT "[1] VORNAME     :                          "
  125. 211 LOCATE 11,10: PRINT "[2] NACHNAME    :                          "
  126. 212 LOCATE 13,10: PRINT "[3] STRASSE     :                          "
  127. 213 LOCATE 15,10: PRINT "[4] PLZ         :          [5] ORT :                           "
  128. 214 LOCATE 17,10: PRINT "[6] GEBURTSTAG  :   .  .19    "
  129. 215 LOCATE 19,10: PRINT "[7] HINWEISE    :                                      "
  130. 216 LOCATE 20, 5: PRINT "_____________________________________________________________________"
  131. 217 RETURN
  132. 219 ZZ$=""
  133. 220 R=9: S=28: L=20: PK%=1: GOSUB 20: D$(D,1)=ZZ$
  134. 221 IF D$(D,1)=CHR$(13) THEN D$(D,1)="-"
  135. 222 IF PP=1 THEN RETURN
  136. 223 ZZ$=""
  137. 225 R=11: S=28: L=20: PK%=1: GOSUB 20: D$(D,2)=ZZ$
  138. 226 IF D$(D,2)=CHR$(13) THEN BEEP: GOTO 223
  139. 227 IF PP=1 THEN RETURN
  140. 228 ZZ$=""
  141. 230 R=13: S=28: L=20: PK%=1: GOSUB 20: D$(D,3)=ZZ$
  142. 231 IF D$(D,3)=CHR$(13) THEN BEEP: GOTO 228
  143. 232 IF PP=1 THEN RETURN
  144. 233 ZZ$=""
  145. 235 R=15: S=28: L= 4: PK%=2: GOSUB 20: D$(D,4)=ZZ$
  146. 236 IF D$(D,4)=CHR$(13) THEN BEEP: GOTO 233
  147. 237 IF LEN(D$(D,4))<>4 THEN BEEP: GOTO 233
  148. 238 IF PP=1 THEN RETURN
  149. 239 ZZ$=""
  150. 240 R=15: S=48: L=25: PK%=1: GOSUB 20: D$(D,5)=ZZ$
  151. 241 IF D$(D,5)=CHR$(13) THEN BEEP: GOTO 239
  152. 242 IF PP=1 THEN RETURN
  153. 243 ZZ$=""
  154. 245 R=17: S=28: L= 2: PK%=2: GOSUB 20: D$(D,6)=ZZ$
  155. 246 IF D$(D,6)=CHR$(13) THEN D$(D,6)="-"
  156. 247 ZZ$="": R=17: S=31: L= 2: PK%=2: GOSUB 20: D$(D,7)=ZZ$
  157. 248 IF D$(D,7)=CHR$(13) THEN D$(D,7)="-"
  158. 249 ZZ$="": R=17: S=36: L= 2: PK%=2: GOSUB 20: D$(D,8)=ZZ$
  159. 250 IF D$(D,8)=CHR$(13) THEN D$(D,8)="-"
  160. 251 IF PP=1 THEN RETURN
  161. 252 ZZ$=""
  162. 255 R=19: S=28: L=20: PK%=1: GOSUB 20: D$(D,9)=ZZ$
  163. 256 IF D$(D,9)=CHR$(13) THEN D$(D,9)="-"
  164. 257 IF PP=1 THEN RETURN
  165. 259 LOCATE 22,5: PRINT "   WEITER = ^        KORREKTUR = 1 - 7          HAUPTMENÜ = \   ": PP=0
  166. 260 E$=INKEY$: IF E$="" THEN 260
  167. 261 IF E$="^" THEN 201
  168. 262 IF E$="\" THEN GOSUB 150: GOTO 100
  169. 263 IF E$="1" THEN GOSUB 70: ZZ$=D$(D,1): GOSUB 220: GOTO 259
  170. 264 IF E$="2" THEN GOSUB 70: ZZ$=D$(D,2): GOSUB 225: GOTO 259
  171. 265 IF E$="3" THEN GOSUB 70: ZZ$=D$(D,3): GOSUB 230: GOTO 259
  172. 266 IF E$="4" THEN GOSUB 70: ZZ$=D$(D,4): GOSUB 235: GOTO 259
  173. 267 IF E$="5" THEN GOSUB 70: ZZ$=D$(D,5): GOSUB 240: GOTO 259
  174. 268 IF E$="6" THEN GOSUB 70: ZZ$=D$(D,6): GOSUB 245: GOTO 259
  175. 269 IF E$="7" THEN GOSUB 70: ZZ$=D$(D,9): GOSUB 255: GOTO 259
  176. 270 GOTO 260
  177. 275 GOSUB 60
  178. 276 FOR B=1 TO D
  179. 277 LOCATE 5,62: PRINT "DATEN-NR :";B
  180. 278 GOSUB 210: GOSUB 310
  181. 279 LOCATE 22,5: PRINT "  WEITER = ^   ZURÜCK = \   KORREKTUR = 1-7    HAUPTMENÜ = @  ": PP=0
  182. 280 E$=INKEY$: IF E$="" THEN 280
  183. 281 IF E$="^" THEN 292
  184. 282 IF E$="\" THEN 299
  185. 283 IF E$="@" THEN 100
  186. 284 IF E$="1" THEN GOSUB 70: ZZ$=D$(B,1): GOSUB 320: GOTO 279
  187. 285 IF E$="2" THEN GOSUB 70: ZZ$=D$(B,2): GOSUB 325: GOTO 279
  188. 286 IF E$="3" THEN GOSUB 70: ZZ$=D$(B,3): GOSUB 330: GOTO 279
  189. 287 IF E$="4" THEN GOSUB 70: ZZ$=D$(B,4): GOSUB 335: GOTO 279
  190. 288 IF E$="5" THEN GOSUB 70: ZZ$=D$(B,5): GOSUB 340: GOTO 279
  191. 289 IF E$="6" THEN GOSUB 70: ZZ$=D$(B,6): GOSUB 345: GOTO 279
  192. 290 IF E$="7" THEN GOSUB 70: ZZ$=D$(B,9): GOSUB 355: GOTO 279
  193. 291 GOTO 280
  194. 292 IF B=D THEN 294
  195. 293 NEXT
  196. 294 LOCATE 22,5: PRINT "  DATENENDE      ZURÜCK = \                      HAUPTMENÜ = @  ": PP=0
  197. 295 E$=INKEY$: IF E$="" THEN 295
  198. 296 IF E$="@" THEN 100
  199. 297 IF E$="\" THEN 299
  200. 298 GOTO 295
  201. 299 B=B-1
  202. 300 IF B<=0 THEN B=1: GOTO 276
  203. 301 GOTO 277
  204. 310 LOCATE 9,28: PRINT D$(B,1): LOCATE 11,28: PRINT D$(B,2): LOCATE 13,28: PRINT D$(B,3)
  205. 311 LOCATE 15,28: PRINT D$(B,4): LOCATE 15,47: PRINT D$(B,5): LOCATE 17,28: PRINT D$(B,6)
  206. 312 LOCATE 17,31: PRINT D$(B,7): LOCATE 17,36: PRINT D$(B,8): LOCATE 19,28: PRINT D$(B,9): RETURN
  207. 320 R=9: S=28: L=20: PK%=1: GOSUB 20: D$(B,1)=ZZ$
  208. 321 IF D$(B,1)=CHR$(13) THEN D$(B,1)="-"
  209. 322 RETURN
  210. 325 R=11: S=28: L=20: PK%=1: GOSUB 20: D$(B,2)=ZZ$
  211. 326 IF D$(B,2)=CHR$(13) THEN BEEP: ZZ$="": GOTO 325
  212. 327 RETURN
  213. 330 R=13: S=28: L=20: PK%=1: GOSUB 20: D$(B,3)=ZZ$
  214. 331 IF D$(B,3)=CHR$(13) THEN BEEP: ZZ$="": GOTO 330
  215. 332 RETURN
  216. 335 R=15: S=28: L= 4: PK%=2: GOSUB 20: D$(B,4)=ZZ$
  217. 336 IF D$(B,4)=CHR$(13) THEN BEEP: ZZ$="": GOTO 335
  218. 337 IF LEN(D$(B,4))<>4 THEN BEEP: ZZ$="": GOTO 335
  219. 338 RETURN
  220. 340 R=15: S=47: L=25: PK%=1: GOSUB 20: D$(B,5)=ZZ$
  221. 341 IF D$(B,5)=CHR$(13) THEN BEEP: ZZ$="": GOTO 340
  222. 342 RETURN
  223. 345 R=17: S=28: L= 2: PK%=2: GOSUB 20: D$(B,6)=ZZ$
  224. 346 IF D$(B,6)=CHR$(13) THEN D$(B,6)="-"
  225. 347 ZZ$="": R=17: S=31: L= 2: PK%=2: GOSUB 20: D$(B,7)=ZZ$
  226. 348 IF D$(B,7)=CHR$(13) THEN D$(B,7)="-"
  227. 349 ZZ$="": R=17: S=36: L= 2: PK%=2: GOSUB 20: D$(B,8)=ZZ$
  228. 350 IF D$(B,8)=CHR$(13) THEN D$(B,8)="-"
  229. 351 RETURN
  230. 355 R=19: S=28: L=20: PK%=1: GOSUB 20: D$(B,9)=ZZ$
  231. 356 IF D$(B,9)=CHR$(13) THEN D$(B,9)="-"
  232. 357 RETURN
  233. 360 GOSUB 60: LOCATE 4,7: PRINT "MENÜ = *"
  234. 361 GOSUB 210: LOCATE 22,1: PRINT SPACE$(79)
  235. 362 ZZ$="": R=11: S=28: L=19: PK%=1: GOSUB 20: SU$=ZZ$
  236. 363 IF SU$="*" THEN 100 ELSE IF SU$=CHR$(13) THEN BEEP: GOTO 362
  237. 364 FOR B=1 TO D: FOR I=1 TO 20
  238. 365 IF SU$=LEFT$(D$(B,2),I) THEN 368
  239. 366 NEXT : NEXT :LOCATE 22,5: PRINT "           KEINE DATEN VORHANDEN. BELIEBIGE TASTE DRÜCKEN            ": GOSUB 90: LOCATE 22,1: PRINT SPACE$(79): GOTO 361
  240. 368 LOCATE 5,62: PRINT "DATEN-NR :";B: GOSUB 310
  241. 369 LOCATE 22,5: PRINT "  NEUSTART = ^   LÖSCHEN = L     AUSDRUCK =  @     MENÜ = \   "
  242. 370 E$=INKEY$: IF E$="" THEN 370
  243. 371 IF E$="^" THEN GOSUB 210: TEST=0: GOTO 361
  244. 372 IF E$="\" THEN 100
  245. 373 IF E$="L" OR E$="l" THEN GOSUB 40000: GOTO 369
  246. 374 IF E$="@" THEN GOSUB 470: GOTO 369
  247. 375 GOTO 370
  248. 379 LOCATE 22,5: PRINT "   GESAMT = ^          MONAT = \             HAUPTMENÜ = @    "
  249. 380 E$=INKEY$: IF E$="" THEN 380
  250. 381 IF E$="^" THEN 390
  251. 382 IF E$="\" THEN 428
  252. 383 IF E$="@" THEN 100
  253. 384 GOTO 380
  254. 390 GOSUB 60
  255. 391 LOCATE 8,5: PRINT "NAME                 VOR. ORT                              GEBURTSTAG"
  256. 392 V=0: LOCATE 10,5: FOR B=1 TO D: V=V+1
  257. 393 PRINT TAB(5)D$(B,2);TAB(26);LEFT$(D$(B,1),3);".";TAB(31);D$(B,5);TAB(64);D$(B,6)".";D$(B,7);".19";D$(B,8)
  258. 394 IF V=10 THEN 409
  259. 395 IF B=D THEN 399
  260. 396 NEXT
  261. 399 LOCATE 22,5: PRINT "   DATENENDE           ZURÜCK = \              HAUPTMENÜ = @    "
  262. 400 E$=INKEY$: IF E$="" THEN 400
  263. 401 IF E$="\" THEN 418
  264. 402 IF E$="@" THEN 100
  265. 403 GOTO 400
  266. 409 LOCATE 22,5: PRINT "   WEITER = ^        ZURÜCK = \              HAUPTMENÜ = @    "
  267. 410 E$=INKEY$: IF E$="" THEN 410
  268. 411 IF E$="^" THEN V=0: GOSUB 420: LOCATE 10,5: GOTO 396
  269. 412 IF E$="\" THEN 415
  270. 413 IF E$="@" THEN 100
  271. 414 GOTO 410
  272. 415 B=B-20
  273. 416 IF B<=0 THEN B=1: GOSUB 420: GOTO 392
  274. 417 GOSUB 420: LOCATE 10,5: V=0: GOTO 393
  275. 418 B=B-V-10: GOTO 416
  276. 420 FOR T=1 TO 10: LOCATE 9+T,2: PRINT SPACE$(79): NEXT: RETURN
  277. 428 GOSUB 60
  278. 429 LOCATE 22,5: PRINT "   GEWÜNSCHTER MONAT :                      MENÜ MIT = *             "
  279. 430 ZZ$="" : R=22: S=28: L=2: PK%=1: GOSUB 20: MO$=ZZ$: IF MO$="*" THEN 100
  280. 431 MO=VAL(MO$): IF MO$=CHR$(13) OR LEN(MO$)<>2 OR MO<=0 OR MO>12 THEN BEEP: GOTO 430
  281. 441 LOCATE 8,5: PRINT "NAME                 VOR. ORT                              GEBURTSTAG"
  282. 442 V=0: LOCATE 10,5: FOR B=1 TO D
  283. 443 IF MO$<>D$(B,7) THEN 446 ELSE 444
  284. 444 V=V+1: PRINT TAB(5)D$(B,2);TAB(26);LEFT$(D$(B,1),3);".";TAB(31);D$(B,5);TAB(64);D$(B,6)".";D$(B,7);".19";D$(B,8)
  285. 445 IF V=10 THEN 459
  286. 446 IF B=D THEN 449
  287. 447 NEXT
  288. 449 LOCATE 22,5: PRINT "   DATENENDE         NEUSTART = \              HAUPTMENÜ = @    "
  289. 450 E$=INKEY$: IF E$="" THEN 450
  290. 451 IF E$="\" THEN GOSUB 420: GOTO 442
  291. 452 IF E$="@" THEN GOSUB 420: GOTO 429
  292. 453 GOTO 400
  293. 459 LOCATE 22,5: PRINT "   WEITER = ^      NEUSTART = \              HAUPTMENÜ = @    "
  294. 460 E$=INKEY$: IF E$="" THEN 460
  295. 461 IF E$="\" THEN GOSUB 420: GOTO 442
  296. 462 IF E$="^" THEN V=0: GOSUB 420: LOCATE 10,2: GOTO 447
  297. 463 IF E$="@" THEN GOSUB 420: GOTO 429
  298. 464 GOTO 460
  299. 470 GOSUB 92
  300. 471 LPRINT TAB(5)"DATENSATZAUSGABE": LPRINT " "
  301. 472 LPRINT TAB(5)"NAME             :";D$(B,1);" ";D$(B,2)
  302. 473 LPRINT TAB(5)"STRASSE          :";D$(B,3)
  303. 474 LPRINT TAB(5)"PLZ / WOHNORT    :";D$(B,4);" ";D$(B,5)
  304. 475 LPRINT TAB(5)"GEBURTSTAG       :";D$(B,6);".";D$(B,7);".19";D$(B,8)
  305. 476 LPRINT TAB(5)"BEMERKUNGEN      :";D$(B,9): RETURN
  306. 499 LOCATE 22,5: PRINT "   GESAMT = ^          MONAT = @              HAUPTMENÜ = \   "
  307. 500 E$=INKEY$: IF E$="" THEN 500
  308. 501 IF E$="^" THEN 510
  309. 502 IF E$="@" THEN 539
  310. 503 IF E$="\" THEN 100
  311. 504 GOTO 500
  312. 510 GOSUB 92
  313. 511 GOSUB 512: GOTO 515
  314. 512 LPRINT TAB(2)" VORNAME  NACHNAME  STRASSE               PLZ  WOHNORT              GEBURTSTAG"
  315. 513 LPRINT TAB(2)"______________________________________________________________________________": LPRINT " ": RETURN
  316. 515 V=0: FOR B=1 TO D: V=V+1
  317. 516 LPRINT TAB(2)LEFT$(D$(B,1),7);TAB(11);D$(B,2);TAB(21);D$(B,3);TAB(43);D$(B,4);TAB(48);D$(B,5);TAB(69);D$(B,6);".";D$(B,7);".19";D$(B,8)
  318. 517 IF V=55 THEN 529
  319. 518 NEXT: LPRINT " "
  320. 519 LPRINT TAB(2)"______________________________________________________________________________": LPRINT " "
  321. 520 LPRINT TAB(2)"Anzahl der Geburtstage : ";D:GOTO 100
  322. 529 LOCATE 22,5: PRINT "            NEUES PAPIER EINLEGEN. BELIEBIGE TASTE DRÜCKEN           ": GOSUB 90: GOSUB 98: GOSUB 512: GOTO 518
  323. 531 MO=VAL(MO$): IF MO$=CHR$(13) OR LEN(MO$)<>2 OR MO<=0 OR MO>12 THEN BEEP: GOTO 540
  324. 539 LOCATE 22,5: PRINT "   GEWÜNSCHTER MONAT :                      MENÜ MIT = *             "
  325. 540 ZZ$="" : R=22: S=28: L=2: PK%=1: GOSUB 20: MO$=ZZ$: IF MO$="*" THEN 100
  326. 541 MO=VAL(MO$): IF MO$=CHR$(13) OR LEN(MO$)<>2 OR MO<=0 OR MO>12 THEN BEEP: GOTO 540
  327. 542 FOR B=1 TO D
  328. 543 IF MO$=D$(B,7) THEN 550
  329. 544 NEXT
  330. 545 LOCATE 22,5: PRINT "            KEINE DATEN GEFUNDEN. BELIEBIGE TASTE DRÜCKEN.           ": GOSUB 90: GOTO 539
  331. 550 GOSUB 92
  332. 551 GOSUB 512: FOR B=1 TO D
  333. 552 IF MO$<>D$(B,7) THEN 555 ELSE 553
  334. 553 V=V+1: LPRINT TAB(2)LEFT$(D$(B,1),7);TAB(11);D$(B,2);TAB(21);D$(B,3);TAB(43);D$(B,4);TAB(48);D$(B,5);TAB(69);D$(B,6);".";D$(B,7);".19";D$(B,8)
  335. 554 IF V=55 THEN 529
  336. 555 NEXT: LPRINT " "
  337. 556 LPRINT TAB(2)"______________________________________________________________________________": LPRINT " "
  338. 557 LPRINT TAB(2)"ANZAHL DER DATENSÄTZE : ";D: GOTO 100
  339. 559 LOCATE 22,5: PRINT "            NEUES PAPIER EINLEGEN. BELIEBIGE TASTE DRÜCKEN           ": GOSUB 90: GOSUB 98: GOSUB 512: GOTO 552
  340. 40000 LOCATE 22,5: PRINT "   DATENSATZ LÖSCHEN = L                             ZURÜCK = \   "
  341. 40010 E$=INKEY$: IF E$="" THEN 40010
  342. 40011 IF E$="L" OR E$="l" THEN 40015
  343. 40012 IF E$="\" THEN RETURN
  344. 40013 RETURN
  345. 40015 IF TEST=1 THEN RETURN
  346. 40020 Y=0: J=0: FOR Y=B TO D: FOR J=1 TO 9: D$(Y,J)=D$(Y+1,J): NEXT J,Y
  347. 40021 FOR J=1 TO 9: D$(D,J)=" ": NEXT: D=D-1: TEST=1
  348. 40022 LOCATE 22,5: PRINT "           DATENSATZ IST GELÖSCHT. BELIEBIGE TASTE DRÜCKEN           ": GOSUB 90: GOSUB 150: GOSUB 210: RETURN
  349. 45000 J=0 : L=0 : I=0 : L=1 : Q(L)=D+1 : M=1
  350. 45001 J=Q(L) : I=M-1
  351. 45002 IF J-M<3 THEN 45016
  352. 45003 M1=INT((I+J)/2)
  353. 45004 I=I+1
  354. 45005 IF I=J THEN 45012
  355. 45007 J=J-1
  356. 45008 IF I=J THEN 45012
  357. 45009 IF D$(J,N)>= D$(M1,N) THEN 45007
  358. 45010 FOR Z=1 TO 9 : D$(O,Z)=D$(I,Z) : D$(I,Z)=D$(J,Z) : D$(J,Z)=D$(O,Z) : NEXT Z
  359. 45011 GOTO 45004
  360. 45012 IF I>=M1 THEN I=I-1
  361. 45013 IF J=M1 THEN 45015
  362. 45014 FOR Z=1 TO 9: D$(O,Z)=D$(I,Z) : D$(I,Z)=D$(M1,Z) : D$(M1,Z)=D$(O,Z) : NEXT
  363. 45015 L=L+1 : Q(L)=I : GOTO 45001
  364. 45016 IF J-M<2 THEN 45019
  365. 45017 IF D$(M,N)<D$(M+1,N) THEN 45019
  366. 45018 FOR Z=1 TO 9: D$(O,Z)=D$(M,Z) : D$(M,Z)=D$(M+1,Z) : D$(M+1,Z)=D$(O,Z) : NEXT
  367. 45019 M=Q(L) +1 : L=L-1
  368. 45020 IF L> 0 THEN 45001
  369. 45021 RETURN
  370.  
  371.