home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 09 / einsteig / seqdat_a.bas < prev   
Encoding:
BASIC Source File  |  1990-08-03  |  7.0 KB  |  155 lines

  1. 1    '* -------------------------------------------------- *
  2. 2    '*                  SEQDAT_A.BAS                      *
  3. 3    '*       Beispiel für sequentiellen Dateizugriff      *
  4. 4    '* -------------------------------------------------- *
  5. 20   '
  6. 30   'Hauptprogramm
  7. 40   '
  8. 50   CLS
  9. 60   GOSUB 1000                              'Dateien öffnen
  10. 70   GOSUB 2000                          'Dateien bearbeiten
  11. 80   GOSUB 3000                           'Dateien schließen
  12. 85   PRINT : PRINT "Programm beendet. <TASTE>": DUMMY$ = INPUT$(1)
  13. 90   CLS
  14. 100  END
  15. 110  'Ende Hauptprogramm ***********************************
  16. 120  '
  17. 970  'UP - Dateien öffnen **********************************
  18. 980  '
  19. 990  'Datei "c:\autoexec.bat" zum Lesen öffnen
  20. 1000 ON ERROR GOTO 10000           'Reaktion auf Dateifehler
  21. 1010 'Datei "c:\autoexec.$-$" wird neu angelegt oder überschrieben
  22. 1020 OPEN "c:\autoexec.tst" FOR INPUT AS #1
  23. 1030 OPEN "c:\autoexec.$-$" FOR OUTPUT AS #2
  24. 1032 OPEN "SCRN:" FOR OUTPUT AS #3
  25. 1034 OPEN "C:\AUTOEXEC.NOR" FOR OUTPUT AS #4
  26. 1040 ON ERROR GOTO 0            'Fehlerbehandlung abschalten
  27. 1042 PRINT "Dateien erfolgreich geöffnet"
  28. 1050 RETURN
  29. 1060 'Ende UP - Dateien öffnen *****************************
  30. 1070 '
  31. 1980 'UP - Dateien bearbeiten ******************************
  32. 1990 '
  33. 2000 PRINT : PRINT "UP - DATEIBEARBEITUNG"
  34. 2010 'Lesen zeichenweise mit INPUT$
  35. 2011 PRINT "AUTOEXEC.TST wird zeichenweise gelesen mit INPUT$ ";
  36. 2012 PRINT "und mit PRINT # zeichenweise auf dem Gerät 'scrn' ausgegeben."
  37. 2013 PRINT "Gleichzeitig wird die Datei AUTOEXEC.$-$ mit PRINT # zeichenweise beschrieben.": PRINT
  38. 2015 DUMMY$ = CHR$(255)
  39. 2020 WHILE NOT EOF(1)
  40. 2030   ZEICHEN$ = INPUT$(1, 1)
  41. 2035   PRINT #2, ZEICHEN$;
  42. 2040   IF ZEICHEN$ <> CHR$(13) THEN PRINT #3, ZEICHEN$;
  43. 2050   IF ZEICHEN$ = CHR$(13) AND DUMMY$ <> CHR$(27) THEN PRINT #3, " <─┘ drücken"; : DUMMY$ = INPUT$(1)
  44. 2055   WHILE DUMMY$ <> CHR$(13) AND DUMMY$ <> CHR$(27) AND ZEICHEN$ = CHR$(13)
  45. 2056     DUMMY$ = INPUT$(1)
  46. 2057   WEND
  47. 2060 WEND
  48. 2061 PRINT #3, : PRINT #3, "Dateiende erreicht,  <TASTE>": DUMMY$ = INPUT$(1)
  49. 2062 PRINT : PRINT "Jetzt wird die Datei AUTOEXEC.TST wieder geschlossen ";
  50. 2063 PRINT "und wieder geöffnet, damit ein erneutes Lesen möglich ist."
  51. 2064 PRINT "Die Ausgabe erfolgt jetzt mit WRITE # statt mit PRINT #.": PRINT
  52. 2065 CLOSE #1
  53. 2066 OPEN "C:\AUTOEXEC.TST" FOR INPUT AS #1
  54. 2067 OPEN "C:\AUTOEXEC.INP" FOR OUTPUT AS #5
  55. 2069 DUMMY$ = CHR$(255)
  56. 2070 WHILE NOT EOF(1)
  57. 2080   ZEICHEN$ = INPUT$(1, 1)
  58. 2085   WRITE #5, ZEICHEN$, ASC(ZEICHEN$)
  59. 2090   IF ZEICHEN$ <> CHR$(13) THEN WRITE #3, ZEICHEN$
  60. 2100   IF ZEICHEN$ = CHR$(13) AND DUMMY$ <> CHR$(27) THEN WRITE #3, " <─┘ drücken!": DUMMY$ = INPUT$(1)
  61. 2103   WHILE DUMMY$ <> CHR$(13) AND DUMMY$ <> CHR$(27) AND ZEICHEN$ = CHR$(13)
  62. 2104     DUMMY$ = INPUT$(1)
  63. 2105   WEND
  64. 2110 WEND
  65. 2115 PRINT #3, : PRINT #3, "Dateiende erreicht,  <TASTE>": DUMMY$ = INPUT$(1)
  66. 2117 CLOSE #5: CLOSE #2: OPEN "C:\AUTOEXEC.$-$" FOR INPUT AS #2
  67. 2120 PRINT : PRINT #3, "Jetzt wird die Datei AUTOEXEC.$-$ zeilenweise mit LINE INPUT # gelesen"
  68. 2130 PRINT #3, " und daraufhin überprüft, ob die Zeile mit REM beginnt."
  69. 2140 PRINT "Eine solche Zeile wird nicht in die neue Datei AUTOEXEC.NOR übertragen."
  70. 2150 PRINT : PRINT "<TASTE> zum Starten!"
  71. 2160 DUMMY$ = INPUT$(1): PRINT : ZZ = 1: DUMMY$ = CHR$(255)
  72. 2170 WHILE NOT EOF(2)
  73. 2180   LINE INPUT #2, ZEILE$
  74. 2190   PRINT #3, ZEILE$;
  75. 2200   KOMM$ = LEFT$(ZEILE$, 3)
  76. 2210   IF KOMM$ <> "REM" AND KOMM$ <> "rem" AND KOMM$ <> "Rem" THEN PRINT #3, " --> GESPEICHERT!": REMFLAG = 0 ELSE PRINT #3, " --> NICHT gespeichert!": REMFLAG = 1
  77. 2220   IF REMFLAG = 0 THEN PRINT #4, ZEILE$
  78. 2230   ZZ = ZZ + 1
  79. 2240   IF ZZ > 10 THEN ZZ = 1: IF DUMMY$ <> CHR$(27) THEN PRINT : PRINT "<TASTE>": DUMMY$ = INPUT$(1)
  80. 2250 WEND
  81. 2260 PRINT #3, : PRINT #3, "Dateiende erreicht,  <TASTE>": DUMMY$ = INPUT$(1)
  82. 2270 CLOSE #4
  83. 2280 OPEN "C:\AUTOEXEC.NOR" FOR INPUT AS #4
  84. 2290 PRINT : PRINT #3, "Die Datei AUTOEXEC.NOR wird zur Kontrolle gelesen."
  85. 2300 PRINT : PRINT "<TASTE> zum Starten!"
  86. 2310 DUMMY$ = INPUT$(1): PRINT : ZZ = 1: DUMMY$ = CHR$(255)
  87. 2320 WHILE NOT EOF(4)
  88. 2330   LINE INPUT #4, ZEILE$
  89. 2340   PRINT #3, ZEILE$
  90. 2350   ZZ = ZZ + 1
  91. 2360   IF ZZ > 10 THEN ZZ = 1: IF DUMMY$ <> CHR$(27) THEN PRINT : PRINT "<TASTE>": DUMMY$ = INPUT$(1)
  92. 2370 WEND
  93. 2380 PRINT #3, "Dateiende erreicht,  <TASTE>": DUMMY$ = INPUT$(1)
  94. 2390 OPEN "C:\AUTOEXEC.INP" FOR INPUT AS #5
  95. 2400 PRINT : PRINT #3, "Die Datei AUTOEXEC.INP wird jetzt mit INPUT # gelesen."
  96. 2410 PRINT : PRINT "<TASTE> zum Starten!"
  97. 2420 DUMMY$ = INPUT$(1): PRINT : ZZ = 1: DUMMY$ = CHR$(255)
  98. 2430 WHILE NOT EOF(5)
  99. 2440   INPUT #5, Z$, W
  100. 2450   PRINT #3, "Zeichen: "; Z$, "ASCII-Wert:"; W
  101. 2460   ZZ = ZZ + 1
  102. 2470   IF ZZ > 10 THEN ZZ = 1: IF DUMMY$ <> CHR$(27) THEN PRINT : PRINT "<TASTE>": DUMMY$ = INPUT$(1)
  103. 2480 WEND
  104. 2490 PRINT #3, : PRINT #3, "Dateiende erreicht,  <TASTE>": DUMMY$ = INPUT$(1)
  105. 2500 CLOSE #5
  106. 2510 OPEN "C:\AUTOEXEC.INP" FOR INPUT AS #5
  107. 2520 PRINT : PRINT #3, "Die Datei AUTOEXEC.INP wird jetzt mit INPUT$ gelesen."
  108. 2530 PRINT : PRINT "<TASTE> zum Starten!"
  109. 2540 DUMMY$ = INPUT$(1): PRINT : ZZ = 1: GZ = 1: SCHLEIFE = 1: DUMMY$ = CHR$(255)
  110. 2550 WHILE SCHLEIFE
  111. 2560   ZEICHEN$ = INPUT$(1, 5)
  112. 2570   IF EOF(5) THEN GZ = 1000 ELSE PRINT ZEICHEN$;
  113. 2580   ZZ = ZZ + 1: GZ = GZ + 1
  114. 2585   IF ZZ > 50 THEN ZZ = 1: IF DUMMY$ <> CHR$(27) THEN PRINT : PRINT "<TASTE>": DUMMY$ = INPUT$(1)
  115. 2590   WHILE GZ > 1000
  116. 2600     PRINT : PRINT "Bis hierhin und nicht weiter: ";
  117. 2610     IF EOF(5) THEN PRINT "Dateiende erreicht,  <TASTE>"
  118. 2620     IF NOT EOF(5) THEN PRINT "Wir haben genug gesehen. <TASTE>"
  119. 2630     PRINT : DUMMY$ = INPUT$(1)
  120. 2640     GZ = 0: SCHLEIFE = 0
  121. 2650     CLOSE #5
  122. 2660   WEND
  123. 2670 WEND
  124. 2900 RETURN
  125. 2910 'Ende UP - Dateien bearbeiten *************************
  126. 2920 '
  127. 2980 'UP - Dateien schließen *******************************
  128. 2990 '
  129. 3000 ON ERROR GOTO 10000
  130. 3010 CLOSE #1
  131. 3020 CLOSE #2
  132. 3022 CLOSE #3
  133. 3024 CLOSE #4
  134. 3030 ON ERROR GOTO 0
  135. 3032 PRINT "Dateien erfolgreich geschlossen!"
  136. 3040 RETURN
  137. 3050 'Ende UP - Dateien schließen **************************
  138. 3060 '
  139. 9980 'Sprungziel für Fehlerbehandlung bei Dateizugriffen ***
  140. 9990 '
  141. 10000 IF ERL = 1020 THEN PRINT "Datei C:\AUTOEXEC.TST konnte nicht geöffnet werden!": PRINT
  142. 10010 IF ERL = 1030 THEN PRINT "Datei C:\AUTOEXEC.$-$ konnte nicht geöffnet werden!": PRINT
  143. 10020 IF ERL = 1034 THEN PRINT "Datei C:\AUTOEXEC.NOR konnte nicht geöffnet werden!": PRINT
  144. 10030 IF ERL = 3010 THEN PRINT "Datei C:\AUTOEXEC.TST konnte nicht geschlossen werden!": PRINT
  145. 10040 IF ERL = 3020 THEN PRINT "Datei C:\AUTOEXEC.$-$ konnte nicht geschlossen werden!": PRINT
  146. 10050 IF ERL = 3024 THEN PRINT "Datei C:\AUTOEXEC.NOR konnte nicht geschlossen werden!": PRINT
  147. 10560 PRINT "[N]och einmal versuchen oder Programm be[e]nden [ N / E ] ? ";
  148. 10570 WEITER$ = INPUT$(1)
  149. 10580 IF WEITER$ = "N" OR WEITER$ = "n" THEN RESUME 0
  150. 10590 END
  151. 10600 'Ende der Fehlerbehandlungsanweisungen ***************
  152. 10610 '
  153. 10615 '* ------------------------------------------------- *
  154. 10620 '*              Ende von SEQDAT_A.BAS                *
  155.