Datenkreislauf – Die sequentielle Datenspeicherung
Als es noch keine Diskettenlaufwerke gab, standen lediglich Bandgeräte zur Datenspeicherung zur Verfügung. Und auf Bändern ist nur sequentielles Speichern möglich. Auch mit der Floppy kann man Daten sequentiell speichern, obwohl der Vorteil der Diskette, der direkte Zugriff auf Daten, nicht ausgenutzt wird.
Wenn Sie sich das Diskettenlaufwerk gerade erst gekauft haben, werden Sie sicher zu Beginn einige Schwierigkeiten haben, es auch richtig einzusetzen. Das erste, was man macht, wird das Laden und Abspeichern von Programmen sein. Daß Sie mit der Floppy noch viel mehr machen können, wissen Sie ja auch schon längst. Und sicher fallen Ihnen einige Möglichkeiten ein, die Sie wohl gerne realisieren möchten. Meistens sind das am Anfang eine Adressenkartei, eine Schallplattensammlung erfassen oder etwa seine Dias ordnen und auswerten. Wir möchten Ihnen den Einstieg etwas erleichtern und Sie Schritt für Schritt mit den Methoden der Datenverwaltung vertraut machen.
Es gibt verschiedene Arten von Dateien und unterschiedliche Methoden ihrer Verwaltung. Hauptsächlich sind das die sequentielle, die relative Datei und der Direktzugriff auf die Diskette.
Gerade für Anfänger ist die sequentielle Datei eine geeignete Methode, Daten zu verwalten. Diese Einfachheit ist allerdings verbunden mit einer gewissen Langsamkeit. Aber wenn sie sich erst einmal mit der sequentiellen Datenspeicherung auskennen, wird auch die relative Datei und die Direktzugriffsmethode kein großes Problem mehr für Sie darstellen. Außerdem gibt es genügend Probleme, für die eine sequentielle Datenspeicherung völlig ausreichend ist.
Zuerst sollen Sie einige wichtige Begriffe kennenlernen.
Sequentiell bedeutet hintereinander. Also alle Daten, die wir benutzen, werden hintereinander, sequentiell auf der Diskette gespeichert (bei Kassetten ist eine andere Methode gar nicht möglich).
Immer, wenn man von und über Dateien spricht, werden solche Vokabeln wie FELD, DATENSATZ oder auch RECORDS genannt. Was ist das eigentlich?
Der Computer ersetzt Karteikarten
Die meisten von Ihnen kennen eine Karteikarte. Auf dieser Karteikarte können mehrere Eintragungen stehen. Angenommen, Sie besitzen eine Adressenkartei, dann stehen auf jeder Karteikarte normalerweise der Vorname, Nachname, Straße, Postleitzahl und Ort und die Telefonnummer, manchmal auch der Geburtstag und andere wichtige Daten. Das sind die einzelnen Felder eines Datensatzes. Die Gesamtheit aller Felder auf einer Karteikarte bezeichnet man als einen Datensatz, also alle Daten, die zusammengehören. Somit besteht ein Datensatz aus mehreren Feldern. Und der Begriff Record ist nur die englische Bezeichnung für Datensatz. Alle Karteikarten, also alle Datensätze, nennt man eine Datei. Damit wären die wichtigsten Begriffe geklärt und wir können zum Wesen der sequentiellen Datei kommen.
Wie schon gesagt, werden bei dieser Dateiart alle Daten hintereinander (sequentiell) auf der Diskette gespeichert. Das sieht dann zum Beispiel so aus wie in Bild 1.
Angenommen, unsere Datei besitzt schon 200 Adressen und eine Adresse enthält den Namen Huber,Anton. Wollen wir jetzt seine Anschrift wissen, so muß die Datei von Anfang an durchsucht werden, bis zu dem Datensatz, in der der Huber steht. Steht der gesuchte Name ziemlich am Ende der Datei, so kann die Suche einige Zeit in Anspruch nehmen; je größer die Datei, desto mehr Zeit beansprucht die Suche. Diese Suche, aber auch alle anderen Operationen wie Ergänzungen, Veränderungen oder Sortieren der Datei spielen sich im Speicher des Computers ab. Das bedeutet, daß, wenn man mit dieser Adressendatei arbeiten will, zuerst die gesamte Datei von der Diskette in den Speicher geladen werden muß. Und am Ende, nach getaner Arbeit, wird sie wieder auf die Diskette zurückgespeichert.
Wenden wir uns dem Beispiel in Bild 2 zu. Es ist ein kleines und noch nicht einmal fertiges Adressen-Datei-Programm (die Funktionen »Suchen«, »Löschen« und »Ändern«) sind noch nicht codiert worden. Jedoch kann sich jeder dieser Module selber schreiben. Auf eine Besonderheit möchte ich gleich hinweisen. In den Zeilen 133 bis 135 stehen die Erklärungen der verwendeten Steuerzeichen, die diesmal codiert ausgedruckt wurden. Deswegen brauchen Sie nicht mehr mit der Lupe und viel Fantasie, die manchmal schwierig zu erkennenden Commodore-Steuerzeichen versuchen, zu interpretieren. Drücken Sie einfach die entsprechende Cursortaste (innerhalb der PRINT-Anweisung) wenn die Zeichen »CRR« und »CRL« im Listing erscheinen. Auf Ihrem Bildschirm sollten sie dann die entsprechenden Grafikzeichen erkennen. Gefällt Ihnen diese Art der Darstellung? Wir würden gerne Ihre Meinung dazu erfahren.
Der Aufbau des Programms dürfte nicht schwer zu durchblicken sein. Aber es gibt einige Programmzeilen und -abschnitte, die man sich einmal näher anschauen sollte.
Zeile 9110: Die Variable ST ist eine Statusvariable, die der C 64 und der VC 20 für sich beanspruchen. Hier gibt sie Auskunft darüber, ob das Dateiende erreicht ist. In diesem Fall wird nämlich das 6. Bit gesetzt (2 hoch 6 ergibt 64). Da aber in dieser Systemvariablen auch andere Nachrichten abgelegt werden, die andere Bits beeinflussen und ST auch bei Dateiende einen von 64 ungleichen Wert zuweisen können, müssen wir mit der AND-Verknüpfung feststellen, ob speziell dieses 6. Bit gesetzt ist.
Aus Sicherheitsgründen habe ich vor jedem OPEN-Befehl ein CLOSE gesetzt, damit nicht durch einen Programmierfehler ein »FILE OPEN ERROR» entstehen kann. Zum CLOSE-Befehl sei noch so viel gesagt, daß er unbedingt existieren muß. Sonst kann es vorkommen, daß nicht alle Daten auf die Diskette übertragen werden, und noch schlimmer, daß die Datei nicht ordnungsgemäß geschlossen werden kann. Dadurch kann die gesamte Datei unrettbar verloren sein. Also Vorsicht.
Wenn Sie sich das Programm etwas näher anschauen, könnten Sie über die Variablen »SS« und »L« stolpern. Diese Variablen habe ich eingesetzt als »Flags«. Sie regeln, ob ein Aufruf dieses Menüpunktes sinnvoll ist und das entsprechende Unterprogramm ausgeführt werden soll. Zum Beispiel verhindert die Variable »L« in Zeile 8025, daß Daten gespeichert werden, wenn die Datei noch gar nicht in den Speicher des Computers geladen wurde. Das würde nämlich bewirken, daß (in diesem Fall die Datei »ADRESS«) überschrieben würde ohne es zu wollen; auf Diskette vorhandene Daten wären verloren. Also eine reine Sicherheitsmaßnahme.
Sicherheit ist Trumpf
Die Variable »SS« verhindert, daß das Programm beendet wird, ohne neu eingegebene Daten vorher abzuspeichern.
Zuletzt möchte ich noch auf einen Programmteil hinweisen, der ab Zeile 10000 steht. Dieses Unterprogramm wird immer dann angesprungen, wenn eine Datei eröffnet wird. Es können nämlich auch dann Fehler auftreten, wenn das Programm sonst einwandfrei funktioniert. Es kann zum Beispiel sein, daß sie eine schreibgeschützte Diskette benutzen wollen, um Daten abzuspeichern. Das funktioniert natürlich nicht. Damit das Programm dann nicht abstürzt, wird jedesmal nach einem Öffnen eines Floppy-Kanals diese Routine angesprungen. Sie können dann im Fehlerfall das Problem beseitigen, ohne das Programm neu starten zu müssen und damit eventuell alle eingegebenen Daten zu verlieren. Der Fehler »62« in Zeile 10062 weist übrigens darauf hin, daß ein »FILE NOT FOUND ERROR« gemeldet wurde. In diesem Fall kann eine neue Datei angelegt werden (ab 11000). Man kann natürlich auch andere Fehler direkt abfragen. Schauen Sie nach im Floppy-Handbuch von Commodore. Dort sind alle Fehlermeldungen erklärt.
Ich glaube, daß Sie viele Möglichkeiten finden werden, eine sequentielle Datei sinnvoll einzusetzen. Setzen Sie sich hin und fangen Sie an zu programmieren und zu experimentieren. Erweitern Sie Ihr Wissen durch eigene Erfahrungen. Tippen Sie nicht nur ab, seien Sie kreativ!
(Christian Schlüter/gk)