Datei total
Database ist eine komfortable Dateiverwaltung für den C 64 mit einigen außergewöhnlichen Leistungsmerkmalen. Nahezu beliebige Datenfeld- und Datensatzlängen, Formatier- und Rechenfunktionen sind nur einige Stichworte. Ein Programm, das zu besitzen sich lohnt.
Ein Wort zu Anfang: Sie werden zu Database kein Listing in diesem Heft finden. Dies hat folgenden Grund: Das Programm besteht aus insgesamt elf Einzelprogrammen, die zusammen 25 (in Worten: fünfundzwanzig!) Seiten Listing ergeben würden. Wir waren der Meinung, daß dies zum Abtippen nicht zumutbar ist. Darum ist Database nur auf der Leserservice-Diskette zu diesem Heft erhältlich.
Das Programm besteht aus insgesamt drei Hauptteilen: Den beiden Ladeprogrammen, dem Teil »Neue Datei entwickeln« und dem Teil »Datenpflege«, die aus speicherplatztechnischen Gründen als Einzelprogramme vorliegen (ein vierter Teil, die sogenannten »Sonderfunktionen«, kann von Ihnen gegebenenfalls ergänzt werden. Dieses Zusatzprogramm muß nur zwei Bedingungen erfüllen: Es muß sich um ein Basic-Programm handeln und unter dem Namen »Soft« auf Diskette gespeichert sein.).
Wenn Sie LOAD "DBL",8,1 eingeben, wird das Lade-Programm eingeladen und automatisch gestartet. Innerhalb dieses Lade-Programms können Sie durch Drücken der entsprechenden Taste den von Ihnen gewünschten Programmteil laden und ebenfalls automatisch starten.
Entwicklung einer neuen Datei
Zunächst ein paar allgemeine Anmerkungen:
Die Hauptmenüs der beiden Programmteile »Neue Datei entwickeln« und »Datenpflege« bestehen aus jeweils zwei Seiten. Durch Drücken der »RETURN«-Taste kann auf die jeweils andere Seite umgeschalten werden. Zum Aufruf der einzelnen Untermenüs dienen die Funktionstasten »F1«- »F8«. Aus allen Untermenüs kommen Sie mit »SHIFT« + »RETURN« wieder ins Hauptmenü zurück. (Wenn Sie also einmal eine Programmfunktion aus Versehen aufgerufen haben, einfach »SHIFT« + »RETURN« drücken und Sie befinden sich wieder an der Aufrufstelle.) Mit Ausnahme der Definition der Eingabemaske einer Datei müssen alle Eingaben (zum Beispiel Dateinamen) mit »RETURN« abgeschlossen werden!
Sie sehen, die Bedienung von Database ist wirklich sehr einfach. Eine Übersicht über alle Programmfunktionen und deren Aufrufmöglichkeiten finden Sie übrigens in Bild 1.

Database ist eine Dateiverwaltung. Was das genau heißt, soll im folgenden kurz erläutert werden. Zunächst zum Begriff Datei. Eine Datei können Sie sich vorstellen als »elektronischen Karteikasten« mit vielen gleichartigen »Karteikarten«. Einer »Karteikarte« entspricht dabei ein sogenannter »Datensatz« der Datei. Jeder Datensatz unterteilt sich wiederum in verschiedene »Datenfelder«; den einzelnen Eintragungen auf der »Karteikarte«.
Eine Dateiverwaltung wie Database ist ein Programm, mit dem Sie beliebige Arten von Dateien verwalten können. Im Gegensatz zu zum Beispiel einer Adressenverwaltung, bei der über ein vorgegebenes Eingabeschema (zum Beispiel »Name«, »Vorname«, »Strasse«, »Wohnort«, etc.) eben nur Adressen eingegeben werden können, sind Sie bei Database in der Wahl des Eingabeschemas (der sogenannten »Eingabe-« oder »Dateimaske«) völlig frei, das heißt, Sie können die Bereiche (die sogenannten »Datenfelder«), in die später Daten eingegeben werden sollen, an beliebigen Positionen auf dem Bildschirm verteilen. Darüber hinaus kann sich die Eingabemaske überinsgesamt fünf (!) Bildschirmseiten erstrecken. Und natürlich können Sie das Ganze mit beliebigen Kommentaren und »Verzierungen« versehen. Dafür steht Ihnen der gesamte Zeichensatz des Computers zur Verfügung.

Nachdem die Grundbegriffe geklärt sind, kommen wir zur Praxis: Um eine neue Datei zu entwickeln, müssen Sie Teil 1 von Database einladen (im Lademenü »F1« drücken). Über den Menüpunkt »Bildschirmmaske entwerfen« (siehe Bild 1) kommen Sie in die Eingabemaskendefinition. Der Cursor blinkt jetzt am Anfang der 2. Bildschirmzeile. Für die Entwicklung der Eingabemaske stehen Ihnen die 2. - 22. Bildschirmzeile (künftig »Dateiseite« genannt) zurVerfügung. In diesem Bereich kann der Cursor mit den üblichen Tasten frei bewegt werden. Wie schon gesagt, kann die Eingabemaske auf bis zu fünf Seiten verteilt werden. Dazu können Sie mit »F5« auf die jeweils nächste, mit »F7« auf die jeweils vorherige Seite »umschalten«. Mit »F8« kann durch Angabe der Nummer der gewünschten Seite und anschließendem »RETURN« eine Seite direkt aufgerufen werden (also zum Beispiel von Seite 1 auf Seite 5 umgeschalten werden). Zusätzlich zu diesen Befehlen gibt es noch eine Reihe weiterer Kommandos, die die Entwicklung der Eingabemaske komfortabler und leichter machen. Eine Zusammenfassung dieser Editorbefehle finden Sie in Bild 3.
| Editor-Befehle: | |
|---|---|
| HOME | Cursor auf den Anfang der aktuellen Datenseite positionieren. |
| CLEAR | Aktuelle Datenseite löschen. (Die Cursorposition verändert sich dabei nicht.) |
| RVS on | Revers-Modus einschalten. |
| RVS off | Revers-Modus ausschalten. |
| DELETE | Bewirkt die von Basic gewohnte Delete-Funktion. (Zeilenweise!) |
| INSERT | Bewirkt die von Basic gewohnte Insert-Funktion. (Zeilenweise! Die letzte Bildschirmspalte wird jeweils überschrieben.) |
| RETURN | Positioniert den Cursor auf den Anfang der nächsten Zeile. |
| CTRL+1 | Schaltet die Hintergrundfarbe um. |
| CTRL+2 | Schaltet die Vordergrundfarbe um. |
| CTRL+3 | Schaltet die Cursorfarbe um. |
| CTRL+C | Mit diesem Kommando können Sie die Blinkfrequenz des Cursors verändern. Gleichzeitig wird dadurch aber auch die Tastaturabfragefrequenz geändert, das heißt, Sie können mit dieser Routine den Computer Ihrer individuellen Schreibgeschwindigkeit anpassen. |
| F6 | Datenfeld einrichten. Nähere Informationen siehe Text. |
| F5 | Eine Dateiseite vorblättern. |
| F7 | Eine Dateiseite zurückblättern. |
| F8 | Dateiseite direkt aufrufen. |
| F1 | Die Zeile, in der sich der Cursor befindet, wird invertiert. |
| F3 | Die Zeile, in der sich der` Cursor befindet, wird gelöscht. |
| F2 | Die Zeile, in der sich der Cursor befindet, sowie aller darüber liegenden Dateizeilen werden um eine Zeile nach oben gescrollt. |
| F4 | Die Zeile, in der sich der Cursor befindet, sowie alle darunter liegenden Dateizeilen werden um eine Zeile nach unten gescrollt. |
| SHIFT + RETURN | Bewirkt Rückkehr ins Hauptmenü. (Die Dateimaske wird zwischengespeichert!.) |
| Die folgenden Kommandos haben bei den Helpscreens eine andere Bedeutung: | |
| F5 | Helpscreen speichern |
| F6 | Helpscreen einladen |
| F7 | Helpscreen umschalten/vertauschen |
| SHIFT + RETURN | Rückkehr zur Aufrufstelle |
| F8 | keine Bedeutung |

Im folgenden wird auf den wohl wichtigsten Befehl - nämlich den zur Definition eines Datenfeldes - ausführlich eingegangen.
a) Datenfeld einrichten
Wie schon erwähnt, kann ein Datenfeld an beliebiger Stelle innerhalb einer Dateiseite auf dem Bildschirm positioniert werden. Dazu müssen Sie als erstes den Cursor auf den gewünschten Feldanfang positionieren und danach die »F6«-Taste drücken. An der Position des Cursors erscheint jetzt das »kleiner«-Zeichen (<) zur Kennzeichnung des Feldanfangs.
Eine Stelle weiter wird der Feldtyp festgehalten. Insgesamt stehen fünf Typen zur Auswahl (nähere Informationen dazu etwas weiter unten):
T : Textfeld
S : Schlüsselfeld
D : Datumsfeld
N : numerisches Feld
E : Rechenfeld
Festlegen können Sie den Feldtyp ganz einfach dadurch, daß Sie die entsprechende Taste (also T, S, D, N oder E) drücken. Rechts neben dem Feldtyp befindet sich das »größer«-Zeichen (>) zur Kennzeichnung des Feldendes. Dieses Feldende können Sie mit »CRSR RIGHT« nach rechts und mit »CRSR LEFT« nach links verschieben. Die aktuelle Feldlänge wird dabei in der oberen Bildschirmzeile rechts angezeigt. Hat das Feld seine gewünschte Länge erreicht, drücken Sie »RETURN«. Das Feld ist nun eingerichtet.
b) Die Feldtypen:
- Der in der Regel wohl am meisten verwendete Feldtyp ist das Textfeld (T). Eingaben in ein solches Feld werden genau so übernommen, wie Sie sie eingeben, das heißt, am Feldinhalt werden keinerlei Veränderungen vorgenommen. Natürlich können in ein Textfeld Zahlen oder Texte und Zahlen gemischt eingegeben werden. Zur Feldlänge: Ein Textfeld kann sich maximal über eine gesamte Dateiseite erstrecken und hat dann eine Länge von immerhin 838 Byte!
- Zu jeder Datei gehört genau ein Schlüsselfeld (S) . Das Schlüsselfeld entspricht, was die Behandlung der eingegebenen Daten und die Feldlänge betrifft, dem Textfeld. In Bezug auf die Organisation des Datenbestandes einer Datei kommt ihm aber eine spezielle Bedeutung zu: Zu jeder von Ihnen definierten Datei wird eine Schlüssel- oder Indexdatei angelegt, die die Schlüssel, das heißt, die Inhalte des Schlüsselfeldes, und die Position aller Datensätze innerhalb der relativen Hauptdatei enthält. Über diese Schlüsseldatei, die später bei der Datenpflege immer vollständig in den Computer geladen wird, ist ein sehr schneller Zugriff auf jeden beliebigen Datensatz der Datei möglich.
Um nun einerseits die Maximalanzahl der Datensätze möglichst groß und andererseits die Länge des Indexfeldes nach Möglichkeit beliebig zu halten, wird nicht der gesamte Inhalt des Schlüsselfeldes, sondern nur ein von Ihnen anzugebender Teil des Feldes als Datensatzschlüssel übernommen. Diese »Anzahl der relevanten Stellen des Schlüsselfeldes« wird bei der Übernahme der Eingabemaske (durch den Menüpunkt »Datei einrichten«) abgefragt. Ein Beispiel: Angenommen, Sie haben ein 50 Byte langes Schlüsselfeld definiert und geben als relevante Stellen »3« an, dann werden bei der Dateneingabe nur die ersten drei Zeichen des Schlüsselfeldes als Schlüssel übernommen. - Das Datumsfeld (D) nimmt eine Sonderstellung ein. Es hat eine feste Länge von 13 Byte und dient - wie der Name schon sagt - zur komfortablen Eingabe eines Datums. Dieses muß in folgender Form eingegeben werden: »TT.MM.JJJJ« (zum Beispiel »01.11.1983«), Wird ein falsches Datum angegeben (zum Beispiel. »35.13.1980«), dann wird im hinteren Teil des Feldes die Meldung »/F!«ausgegeben. Ist das Datum korrekt, wird der zugehörige Wochentag berechnet und durch »/« getrennt hinter dem Datum ausgegeben.
- Das numerische Feld oder Zahlenfeld (N): Ein kleines Beispiel soll Sinn und Zweck dieses Feldtyps erläutern. Angenommen, Sie haben ein Feld, in das bis zu vierstellige Geldbeträge in der üblichen Form (also mit zwei Nachkommastellen) eingegeben werden sollen. Natürlich können Sie dieses Feld auch als Textfeld definieren. Wollen Sie aber sicherstellen, daß die eingegebenen (beziehungsweise gespeicherten) Zahlen auch tatsächlich das gewünschte Format (in diesem Fall also vier Vorkomma- und zwei Nachkommastellen) aufweisen, dann definieren Sie das Feld als Zahlenfeld und geben eine entsprechende Formatiervorschrift ein. Diese Vorschrift kann allerdings nicht direkt bei der Definition der Eingabemaske angegeben werden, sondern die Eingabe muß über den Menüpunkt »Datei einrichten« erfolgen (nähere Informationen dazu daher etwas weiter unten). Zunächst kommen wir zum letzten und wohl interessantesten Feldtyp, dem Rechenfeld.
- Das Rechenfeld (E): Dieser Feldtyp bietet Ihnen die Möglichkeit, Berechnungen innerhalb eines Datensatzes durchführen zu lassen, das heißt, es können beliebige Felder eines Datensatzes - egal ob Text-/Schlüssel-/Zahlen- oder selbst Rechenfeld - rechnerisch miteinander verknüpft werden. Das Ergebnis der Berechnung wird dann in dem entsprechenden Rechenfeld abgelegt. Auch hier muß die Eingabe der notwendigen Rechenvorschrift über den Menüpunkt »Datei einrichten« erfolgen. An dieser Stelle daher nur noch ein paar Worte zur Länge der Rechenfelder (und auch der Zahlenfelder): Weder bei den Rechen- noch bei den Zahlenfeldern wird die Länge der Felder kontrolliert. Natürlich sind aber nur Feldlängen (beziehungsweise Formatiervorschriften) sinnvoll, die innerhalb des Rechenbereichs beziehungsweise der Rechengenauigkeit des Computers liegen.
c) Datei (auf Diskette) einrichten:
Wenn Sie mit der Definition der Eingabemaske fertig sind, drücken Sie »SHIFT« + »RETURN« und - im Hauptmenü angekommen - die »F7«-Taste. Dadurch beginnt die »Übernahme» der Eingabemaske durch das Programm (die Datenfeldanfänge und -enden werden ermittelt, die Feldtypen festgestellt und so weiter) und die Einrichtung der Datei auf Diskette.
Haben Sie Rechen- oder Zahlenfelder definiert, dann werden Sie hier automatisch aufgefordert, die zugehörigen Vorschriften einzugeben. Das gerade bearbeitete Feld wird dabei durch revers dargestellte Feldbegrenzungen gekennzeichnet:
Zuerst müssen Sie die Formatiervorschriften für die Zahlenfelder und die Rechenfelder(!), die ja auch Zahlen als Ergebnis der durchgeführten Berechnungen enthalten, eingeben. Dazu setzen Sie einfach in den beiden im unteren Bildschirmbereich befindlichen, revers dargestellten Bildschirmzeilen den Punkt (».«) an die Stelle, an der er später im Zahlenfeld (beziehungsweise Rechenfeld) stehen soll. Die anderen Stellen können Sie - nur als Hilfe - mit irgendeinem anderen Zeichen auffüllen. Registriert wird auf jeden Fall nur der Punkt. Damit die so definierte Vorschrift übernommen wird, müssen Sie »RETURN« drücken. (Im weiter oben erwähnten Beispiel mit dem vierstelligen Geldbetrag sähe die Vorschrift also zum Beispiel so aus: »1111.11«.) Kommen auch negative Zahlen vor, muß für das Vorzeichen eine zusätzliche Vorkommastelle reserviert werden. (Im Beispiel: »11111.11«)
Nachdem Sie alle Formatiervorschriften auf diese Weise eingegeben haben, müssen Sie die Rechenvorschriften eingeben. Zur Erleichterung der Eingabe sind alle Datenfelder - am Bildschirm sichtbar - fortlaufend durchnumeriert. Außerdem kann mit »F5« (vorblättern) und »F7« (zurückblättern) die Dateimaske »durchgeblättert« werden. Das ist sehr nützlich, wenn Sie zum Beispiel eine dreiseitige »Karteikarte« entwickelt haben und in die Berechnung für ein Rechenfeld auf Seite 3 verschiedene Datenfelder der Seiten 1 und 2 einbeziehen wollen. Mit »F5« können Sie dann auf die Seite 1 beziehungsweise 2 umschalten, um so die laufende Nummer der betreffenden Felder zu ermitteln. In die Berechnung einbezogen wird ein Feld jetzt einfach durch Angabe von »F (Feldnummer)« (zum Beispiel F(1) für Feld 1, F(2) für Feld 2 und so weiter). Die Berechnungsformel wird - wie die Formatierungsvorschrift - in die beiden revers dargestellten Bildschirmzeilen im unteren Bildschirmbereich eingegeben und darf maximal 72 Byte lang sein. An Formelelementen sind alle von Basic gewohnten Rechenoperatoren und -funktionen zugelassen (also auch SQR, LOG, SIN und so weiter).
Zwei Beispiele:
| F(1) + F(9) | weist dem betreffenden Rechenfeld die Summe aus dem Inhalt von Feld 1 und Feld 9 zu. |
| F(2) + F(3)*F(17) | weist dem betreffenden Rechenfeld den Inhalt des Feldes 2 + das Produkt aus Feld 3 und Feld 17 zu. |
Natürlich kann es bei der Eingabe der Rechenvorschriften sehr leicht zu einer Fehleingabe kommen. Da diese in den allermeisten Fällen (bei der Datenpflege) zu einem Programmabbruch führt, werden Sie vom Programm vor der ersten Vorschriftseingabe gefragt, ob eine Syntaxkontrolle durchgeführt werden soll. Beantworten Sie die Frage mit »ja«, wird jede Eingabe auf korrekte Syntax untersucht und gegebenenfalls auf einen Fehler aufmerksam gemacht. Natürlich können aber von dieser Kontrollroutine nicht alle Fehler erkannt werden. Daher sollten Sie von vorneherein bei der Eingabe sehr sorgfältig sein und insbesondere auch auf mögliche Bereichsüberschreitungen (negative Zahlen bei Wurzeln, 0 bei der Division) achten, da es dadurch ebenfalls zu einem Programmabbruch kommt.
Nach Eingabe aller Formatier- und Rechenvorschriften sind noch einige Angaben erforderlich, bevor die Datei auf Diskette eingerichtet werden kann:
Zuerst werden Sie nach dem gewünschten Namen der Datei gefragt, der maximal 14 Zeichen lang sein darf. Beantworten Sie die nachfolgende Frage nach dem Zeichensatz mit »ja«, wird der im Computer befindliche (eventuell geänderte) Zeichensatz (nähere Informationen dazu weiter unten) unter dem Namen der Datei gespeichert und später (bei der »Datenpflege«) automatisch mit der Datei eingeladen. Beantworten Sie die Frage mit »nein«, werden Sie gefragt, ob Sie einen anderen Zeichensatz verwenden wollen, dessen Namen Sie gegebenenfalls eingeben müssen. Angenommen, Sie haben einen deutschen Zeichensatz entwickelt, den Sie in verschiedenen Dateien verwenden wollen. Dann wäre es natürlich wenig sinnvoll und würde unnötig Diskettenkapazität kosten, wenn der Zeichensatz zu jeder Datei extra gespeichert würde. Daher haben Sie die Möglichkeit, den Namen eines beliebigen, auf der Diskette gespeicherten Zeichensatzes anzugeben, der dann bei der »Datenpflege« ebenfalls automatisch mit der Datei geladen wird.
Zuletzt werden Sie nach der (bei der Besprechung des Schlüsselfeldes schon erwähnten) »Anzahl der relevanten Stellen des Schlüsselfeldes« gefragt. Nochmal zur Erinnerung: Später bei der Dateneingabe werden nur soviel Stellen des Schlüsselfeldes als Schlüssel übernommen, wie Sie hier angeben. Die kleinste Anzahl ist dabei 1, die größte 30, wobei zu beachten ist: Je kleiner Sie die Schlüssel wählen, desto mehr Datensätze können Sie in einer Datei unterbringen! Die Maximalanzahl MD der Datensätze errechnet sich nach folgender Formel: MD=INT(2250/(AS+3)); wobei AS die Länge der Schlüssel ist. Bei einer Schlüssellänge von drei Byte, was bei einer Adreßdatei mit dem Nachnamen als Schlüsselfeld vollauf genügt, können Sie also immerhin 375 Datensätze in der betreffenden Datei unterbringen. Im übrigen ist es unerheblich, wenn ein Schlüssel in einer Datei mehrfach vorkommt. Bei der Datenausgabe wird darauf durch eine entsprechende Meldung hingewiesen.
Nach dieser letzten Information dauert es geraume Zeit, bis die Datei auf Diskette eingerichtet ist. Am Ende kehrt das Programm wieder ins Hauptmenü zurück. Zuvor wird allerdings gefragt, ob Sie mit der Dateimaske weiterarbeiten wollen. Antworten Sie mit »ja«, bleibt die Eingabemaske im Computer erhalten und kann für die Entwicklung weiterer Daten benutzt werden. Bei einem »nein« wird der Eingabemaskenspeicher im Rechner gelöscht.
Um das bisher Gesagte zu verdeutlichen, soll an einem praktischen Beispiel - einer kleinen Rechnungsverwaltung - die Entwicklung einer Datei demonstriert werden. Sehen Sie sich dazu bitte Bild 4 an: Links oben sehen Sie die Eingabemaske so, wie Sie sie bei der Definition eingeben müssen. Dabei dürfte es wohl keine Schwierigkeiten geben. Als Schlüsselfeld wurde das Feld »Lieferant« gewählt. Die Felder »Artikelnummer« (Art.Nr.), »Einzelpreis« (EP) und »Anzahl« (ANZ) sind numerische Felder. Bei den Feldern »Gesamtpreis« (GP), »Gesamtsumme«, »Mehrwertsteuer« und »Rechnungsbetrag« handelt es sich um Rechenfelder. Das »Telefon«-Feld wurde, da es auch nichtnumerische Zeichen enthält (»/« beziehungsweise»—« zur Abtrennung der Vorwahl), nicht als numerisches, sondern als Textfeld definiert.
Haben Sie die Dateimaske komplett eingegeben, dann drücken Sie bitte »SHIFT« + »RETURN« und anschließend »F7«. Nach kurzer Zeit erscheint die Eingabemaske in der Form, wie Sie sie in Bild 4 rechts oben sehen. Alle Datenfelder sind fortlaufend durchnummeriert. (Bei Feldern mit einer Länge kleiner als fünf Zeichen - in diesem Fall die »Anzahl«-Felder - ist die Numerierung aus Platzgründen nicht auf dem Bildschirm sichtbar.)
Als erstes müssen Sie jetzt die folgenden Formatvorschriften eingeben. (Die Feldgrenzen des gerade bearbeiteten Feldes werden revers dargestellt. Nach jeder Formateingabe müssen Sie RETURN drücken!):
| Feld 3: | 1111 | (die »1« dient wie gesagt nur als »Füllzeichen. Dazu können Sie auch jedes andere Zeichen verwenden. Entscheidend ist, an welcher Stelle der Punkt (».«) steht) |
| Feld 6: | 111111 | |
| Feld 7: | 111.11 | |
| Feld 8: | 11 | |
| Feld 9: | 111.11 | |
| Feld 10: | 111111 | |
| Feld 11: | 111.11 | |
| Feld 12: | 11 | |
| Feld 13: | 111.11 | |
| Feld 14: | 111111 | |
| Feld 15: | 111.11 | |
| Feld 16: | 11 | |
| Feld 17: | 111.11 | |
| Feld 18: | 1111.11 | |
| Feld 19: | 111.11 | |
| Feld 20: | 1111.11 |
Die anschließende Frage betreffend der Syntaxkontrolle beantworten Sie sicherheitshalber mit »ja«. Danach geben Sie die folgenden Rechenvorschriften ein:
- Feld 9: F(7)*F(8)
- Feld 13: F(11)*F(12)
- Feld 17: F(15)*F(16)
- Feld 18: F(9) + F(13) + F(17)
- Feld 19: 0.14*F(18)
- Feld 20: F(18) + F(19)
Als Namen der Datei geben Sie schließlich «rechnungen« ein. Die beiden Fragen nach dem Zeichensatz beantworten Sie mit »nein«. Bei der »Anzahl der relevanten Stellen des Schlüsselfeldes« dürften »5« genügen. Damit sind alle notwendigen Informationen eingegeben; die Datei wird auf Dis- f kette eingerichtet.
d) Änderungsmöglichkeiten:
Zunächst zu den Änderungsmöglichkeiten während der Dateimaskendefinition beziehungsweise bei einer Datei, in die noch keine Daten eingegeben wurden. (Eine auf Diskette eingerichtete Datei können Sie übrigens über den Menüpunkt »Datei einladen« (siehe Bild 1) in den Computer laden, um Änderungen an der Eingabemaske vorzunehmen):
An den Datenfeldern können grundsätzlich beliebige Änderungen vorgenommen werden (an den Kommentaren und Bemerkungen natürlich auch). Es können also ohne weiteres Datenfelder gelöscht, verkleinert (mit »DELETE«) oder vergrößert werden (mit »INSERT«), Auch der Feldtyp kann einfach durch Überschreiben des ursprünglichen Codes mit der neuen Kennzeichnung geändert werden. (Wenn Sie zum Beispiel aus einem Textfeld ein Zahlenfeld machen wollen, müssen Sie nur das »T« durch ein »N« ersetzen.) Wichtig ist nur, daß die einzelnen Datenfelder (bis auf die erste Stelle, die ja den Feldtyp-Code enthält) vollständig mit dem bei der Einrichtung der Felder erzeugten Füllzeichen (CHR$(166)); entspricht »COMMODORE« + »+«) aufgefüllt sind! Ist das nämlich nicht der Fall, dann wird das betreffende Feld bei der Übernahme der Eingabemaske vom Programm nicht erkannt.
Wenn Sie zum Beispiel bei der Übernahme der Eingabemaske durch die Routine »Datei einrichten« (während der Eingabe der Formatier- und Rechenvorschriften) einen Fehler in der Eingabemaske entdecken, können Sie die Übernahme mit »SHIFT« + »RETURN« abbrechen und anschließend mit »F1« wieder in die Eingabemaskendefinition gelangen.
Eine gerade in Arbeit befindliche Eingabemaske kann über den Menüpunkt »Dateimaske abspeichern« (siehe Bild 1) auf Diskette unter einem frei wählbaren Namen zwischengespeichert werden, um dann zu einem späteren Zeitpunkt über den Menüpunkt »Dateimaske einladen« (siehe Bild 1) wieder in den C 64 geladen zu werden. Dadurch ist es möglich, die Entwicklung einer Datei abzubrechen, ohne später bei der Weiterarbeit die Eingabemaske (beziehungsweise den Teil der bereits definiert wurde) noch einmal neu eingeben zu müssen.
Bei einer Datei, in die bereits Daten eingegeben wurden, sind die Änderungsmöglichkeiten schon geringer.
Bei den Kommentaren und Bemerkungen gibt es keine Probleme. Hier können beliebige Änderungen vorgenommen werden. Auch die Positionen der Datenfelder können verändert werden. Dabei ist allerdings darauf zu achten, daß erstens die Reihenfolge der Datenfelder nicht verändert wird und zweitens die Länge der einzelnen Datenfelder nicht geändert wird, das heißt, die Felder weder verkleinert noch vergrößert werden.
e) Änderung des Zeichensatzes:
Über den Menüpunkt »Zeichensatz ändern« gelangen Sie in die Zeichensatzänderungsroutine.
Dabei gehen Sie folgendermaßen vor:
- Zuerst stellen Sie den gewünschten Schriftmodus ein. Dazu befindet sich in der unteren Bildschirmhälfte ein kleines Auswahlmenü:
- Mit »F4« schalten Sie den Grafik-Modus, mit »F2« den Groß-/Kleinschrift-Modus ein.
- Mit »F8« können Sie auf »RVS on«, mit »F6« auf »RVS off« umschalten.
- Danach drücken Sie die gewünschte Taste. Dadurch wird die Matrix des betreffenden Zeichens auf der rechten Bildschirmhälfte ausgegeben.
- Nun können Sie Änderungen an der Matrix vornehmen. Dafür stehen Ihnen neben der üblichen Cursorsteuerung folgende Kommandos zur Verfügung:
- »F1«: Matrixpunkt setzen
- »F3«: Matrixpunkt löschen
- »F5«: gesamte Matrix löschen
- »F7«: geänderte Matrix übernehmen
Mit »SHIFT« + »RETURN« können Sie jederzeit in das Hauptmenü zurückkehren.
Noch ein Tip: Wollen Sie größere Änderungen am Zeichensatz vornehmen, ist es wohl am sinnvollsten, wenn Sie die gewünschten Matrizen zuerst auf einem entsprechend gerasterten Blatt Papier entwerfen und sie danach auf den Bildschirm übertragen. Die Zahlen um das Matrixfeld auf dem Bildschirm sind Ihnen dabei behilflich.
f) Änderung der Tastaturbelegung:
Über den Menüpunkt »Tastaturbelegung ändern« gelangen Sie in die Tastaturänderungsroutine. Dieses Programmodul stellt an sich nur eine Erweiterung der Zeichensatzänderung dar, das heißt, tatsächlich wird nicht die Belegung der Tastatur geändert, sondern nur die Zeichenmatrizen entsprechend ausgetauscht.
Haben Sie »F5« gedrückt, gelangen Sie in ein weiteres Auswahlmenü:
- Mit »F1« läßt sich die Belegung einer Taste ändern.
- Mit »F3« können Sie zwei Tasten vertauschen.
Bevor Sie die entsprechenden Tasten drücken, müssen Sie, wie bei der Zeichensatzänderung, den gewünschten Schriftmodus einstellen.
Wichtig: Die Belegung einer Taste wird immer nur in dem eingestellten Schriftmodus geändert, das heißt, wenn Sie zum Beispiel den Groß-/Kleinschriftmodus und »RVS off« einstellen und danach die Tasten »Y« und »Z« vertauschen, ist diese Änderung im Graphikmodus und bei »RVS on« nicht wirksam! Genauso müssen auch die »geSHIFTeten« Tasten extra geändert werden!
Auf den ersten Blick wirkt dies vielleicht etwas umständlich. Andererseits eröffnen sich dadurch aber wesentlich mehr Möglichkeiten der Veränderung. So können Sie zum Beispiel - auch in Verbindung mit der »Zeichensatzänderung« - aus einem Zeichensatz praktisch zwei machen, indem Sie zum Beispiel im Groß-/Kleinschriftmodus den normalen Zeichensatz beibehalten und im Graphikmodus einen entsprechenden griechischen Zeichensatz entwickeln. Zwischen diesen beiden Zeichensätzen können Sie dann einfach mit »COMMODORE« 4- »SHIFT« umschalten! Mit »SHIFT« + »RETURN« können Sie jederzeit in das Hauptmenü zurückkehren.
Dateneingabe
Um Daten in eine Datei eingeben zu können, müssen Sie Teil 2 von Database einladen. (Im Lademenü »F3« drücken.)
Für jede Diskette, auf der sich Daten befinden, führt Database ein Inhaltsverzeichnis, das »Datei-Directory«. Dieses wird auf der Diskette als sequentielles File gespeichert. Neben den Namen der einzelnen Dateien enthält es auch Angaben über die Anzahl der Dateiseiten und die aktuelle Anzahl der Datensätze einer Datei. Bei der Definition einer neuen Datei wird das Datei-Directory automatisch aktualisiert beziehungsweise - wenn noch nicht vorhanden - automatisch angelegt. Auch bei der Datenpflege wird es ständig auf dem neuesten Stand gehalten. Über den Menüpunkt »Datei-Directory« (siehe Bild 1) und durch anschließendes Drücken der »F2«-Taste kann das Datei-Directory angezeigt werden.
Darüber hinaus können Sie mit »F3« eine Datei löschen, mit »F5« eine Datei umbenennen und mit »SHIFT« + »RETURN« ins Hauptmenü zurückkehren.
Doch zurück zur Dateneingabe: Um eine Datei zur Datenpflege in den Computer zu laden, gibt es zwei Möglichkeiten: Entweder, Sie drücken im Dateidirectorymodul »F1« oder im Hauptmenü »F3«. In beiden Fällen müssen Sie den vollständigen Namen der gewünschten Datei eingeben und anschließend »RETURN« drücken. (Übrigens: Der Name der gerade im Rechner befindlichen Datei wird bei der Ausgabe des Dateidirectorys revers dargestellt!)
Nach Beendigung des Ladevorgangs ist die Datei zur Datenpflege bereit. Über das Hauptmenü kann jetzt beliebig zwischen den einzelnen Programmfunktionen umgeschaltet werden. Sie können also zum Beispiel zuerst neue Daten eingeben, danach in die Datenausgaberoutine verzweigen, und so weiter.
Über den Menüpunkt »Daten eingeben« (siehe Bild 1) können Sie jetzt mit der Dateneingabe beginnen. In diesem Zusammenhang gleich noch ein wichtiger Hinweis: Wenn Sie am Datenbestand einer Datei Änderungen vornehmen (also insbesondere neue Daten eingeben, aber auch Datensätze löschen oder ändern), ist davon natürlich auch die Schlüsseldatei, die sich ja im Speicher befindet, betroffen. Am Ende der Dateiarbeit muß diese daher über den Menüpunkt »Datei speichern« (siehe Bild 1) auf die Diskette zurückgeschrieben werden - mit einer Einschränkung: Wenn Sie eine neue Datei einladen, die sich auf derselben Diskette wie die vorherige befindet, wird die alte Datei (vor dem Laden der neuen) automatisch auf die Diskette zurückgeschrieben.
Auch beim Dateidirectory ist Vorsicht geboten:
Durch das Einladen des Dateidirectorys wird eine eventuell im Computer befindliche Datei gelöscht!
Nach diesen Vorbemerkungen einige konkrete Hinweise zur Dateneingabe: Nachdem Sie im Hauptmenü »F5« gedrückt haben, wird die erste Dateiseite auf dem Bildschirm ausgegeben und der Cursor blinkt am Anfang des ersten Datenfeldes. Nun können Sie mit der Dateneingabe beginnen. Alle Datenfelder sind zur besseren Kennzeichnung mit dem schon von der Datenfelddefinition bekannten Füllzeichen (CHR$(166)) aufgefüllt. Der Cursor kann jetzt nur noch innerhalb der Datenfelder bewegt werden.
Ähnlich wie bei der Dateimaskendefinition steht Ihnen bei der Dateneingabe ein komfortabler Editor zur Verfügung. Um aber einen der im nachfolgenden beschriebenen Befehle aufrufen zu können, müssen Sie zuerst die »F1«-Taste drücken! Daraufhin beginnt der Schriftzug »F1« in der drittuntersten Bildschirmzeile ganz rechts zu blinken. Jetzt können Sie die gewünschte Funktion aufrufen. Nach deren Ausführung können Sie mit der Dateneingabe fortfahren. Haben Sie die »F1«-Taste unbeabsichtigt gedrückt, kommen Sie mit »SHIFT« + »RETURN« in die Eingaberoutine zurück.
Die Befehle im einzelnen (Eine Zusammenfassung finden Sie in Tabelle 3):
- »RETURN«: Wenn Sie die »RETURN«-Taste drücken und das aktuelle Datenfeld ein Datums-, Rechen- oder Zahlenfeld ist, dann wird die zugehörige Vorschrift ausgeführt. Auf jeden Fad aber wird der Cursor auf den Anfang des nächsten Datenfeldes positioniert. Mit einer Einschränkung: Sollte es sich bei dem aktuellen Feld um das letzte Datenfeld handeln, dann erfolgt eine Abfrage, ob Sie den Datensatz speichern wollen. Beantworten Sie die Frage mit »nein«, so wird der Cursor wieder auf den Anfang des letzten Datenfeldes positioniert.
- »SHIFT« + »RETURN«: Bewirkt Rückkehr ins Hauptmenü. Die Datenfelder werden dabei gelöscht.
- »F5«: Dateiseite vorblättern.
- »F7«: Dateiseite zurückblättern.
- »F8«: Seitendirektaufruf.
- »HOME«: Positioniert Cursor auf den Anfang des ersten Datenfeldes.
- »SHIFT« + »HOME«: Löscht sämtliche Datenfelder.
- »L«: Löscht das aktuelle Datenfeld.
- »CTRL« + »1«: Ändert Hintergrundfarbe. Der Farbcode wird jeweils um eins erhöht.
- »CTRL« + »2«: Ändert Vordergrundfarbe.
- »CTRL« + »3«: Cursorfarbe ändern.
- »CTRL« + »C«: Cursorblinkfrequenz ändern. Siehe auch Bild 3.
- »V«: Durch dieses Kommando werden sämtliche Rechen- und Formatiervorschriften für alle betreffenden Felder ausgeführt. (Zuvor werden die Zahlenwerte aller Felder ermittelt.) Wenn Sie also direkt bei der Dateneingabe auf das »RETURN«-Kommando verzichten, können Sie mit »V« die Berechnungen und Formatierungen nachholen lassen.
- »S«: Mit diesem Kommando wird der eingegebene Datensatz gespeichert und der Schlüssel des Datensatzes in die Indexdatei einsortiert, ohne daß Sie extra im letzten Datenfeld »RETURN« drücken müssen.
Datenausgabe
Über den Menüpunkt »Daten ausgeben« (siehe Bild 1) gelangen Sie in einen der wichtigsten Programmpunkte eines jeden Datenverarbeitungsprogramms: der Datenausgabe. Die Datenausgabemöglichkeiten von Database sind sehr vielfältig. Im wesentlichen lassen sich drei Bereiche unterscheiden:
- die Ausgabe über Schlüssel
- das »Durchblättern« der Datei
- die Selektion über eine frei wählbare Auswahlmaske
Wenn Sie im Hauptmenü »F7« drücken, wird zunächst wieder die erste Dateiseite auf dem Bildschirm ausgegeben. Jetzt können Sie durch Drücken der entsprechenden Taste die gewünschte Funktion aufrufen:
a) Die Ausgabe über Schlüssel:
Dazu drücken Sie die »l«-Taste. Jetzt werden die Datenfelder gelöscht, die Dateiseite, auf der sich das Schlüsselfeld befindet, ausgegeben und der Cursor auf das Schlüsselfeld positioniert Nachdem Sie den Schlüssel mit abschließendem »RETURN« eingegeben haben, wird er in der Indexdatei gesucht und - sofern vorhanden - der zugehörige Datensatz in den Rechner geladen und auf dem Bildschirm ausgegeben. Gehören zu einem Schlüssel mehrere Datensätze, dann werden Sie darauf durch die Meldung »Weitere Datensätze vorhanden!« hingewiesen. Wenn Sie daraufhin nochmals »I« drücken und die nachfolgende Frage mit »ja« beantworten, wird der nächste Datensatz (mit demselben Schlüssel) ausgegeben.
Haben Sie die »l«-Taste nur versehentlich gedrückt, können Sie die Routine mit »SHIFT« + »RETURN« verlassen.
b) »Durchblättern« der Datei:
Hier bietet sich wieder der Vergleich einer Datei mit einem Karteikasten an. Mit den folgenden Kommandos ist es nämlich möglich, eine Datei wie einen Karteikasten »durchzublättern«. Die Kommandos beziehen sich dabei auf die Indexdatei beziehungsweise auf die in ihr gespeicherten Schlüssel der einzelnen Datensätze. Wenn also zum Beispiel von einem »ersten Datensatz« die Rede ist, dann handelt es sich dabei um den Datensatz, dessen Schlüssel als erster in der Indexdatei gespeichert ist. Verbunden mit der Tatsache, daß die Schlüssel in der Indexdatei alphabetisch einsortiert sind, ergibt sich daraus die Möglichkeit, eine Datei in alphabetischer Reihenfolge durchzublättern.
Die Befehle im einzelnen:
- »E«: Gibt den ersten Datensatz der Datei aus.
- »L«: Gibt den letzten Datensatz der Datei aus.
- »N«: Mit diesem Kommando kann der nächste Datensatz in Bezug auf den gerade im Speicher befindlichen ausgegeben werden.
- »V«: Dadurch wird der vorherige Datensatz ausgegeben.
c) Die Selektion über eine frei wählbare Ausgabemaske:
Mit dieser Routine, die mit »F« aufgerufen wird, steht Ihnen ein vielseitiges Instrument zur Auswahl (Selektion) von Datensätzen zur Verfügung. Die Grundidee ist dabei folgende: Sie geben in die Datenfelder eine sogenannte Selektionsmaske (das heißt Vergleichsdaten) ein, die dann mit jedem Datensatz der Datei verglichen wird. Entspricht ein Datensatz der Maske, wird er in den Speicher geladen. Ansonsten wird der nächste Datensatz verglichen.
Bevor mit der Selektion begonnen werden kann, müssen Sie also zuerst eine Auswahlmaske eingeben. Die grundlegende Vorgehensweise ist dabei dieselbe wie bei der Dateneingabe! Mit Ausnahme der Routinen zur Datensatzspeicherung und zur Änderung der Bildschirmfarben stehen deshalb dieselben Routinen wie bei der Dateneingabe zur Verfügung. (Eine Aufstellung finden Sie in Tabelle 4 unten.)
- »K«: Durch »K« wird die Selektionsmaske übernommen, die Selektion gestartet und im Falle eines positiven Vergleichs der betreffende Datensatz ausgegeben.
- »M«: Dieses Kommando bietet Ihnen die Möglichkeit, einige spezielle Selektionskriterien anzugeben. Der Cursor blinkt dabei auf dem Feldbegrenzungszeichen. Wenn Sie jetzt eine der nachfolgenden Tasten drücken, wird das entsprechende Symbol unter dem Cursor revers ausgegeben.
- »F1«: »kleiner«-Funktion: Dadurch werden alle Datensätze selektiert, deren entsprechender Datenfeldinhalt kleiner ist als die eingegebenen Vergleichsdaten.
- »F2«: »kleiner gleich«-Funktion: Bewirkt Selektion aller Datensätze, deren entsprechender Datenfeldinhalt kleiner gleich den Vergleichsdaten ist.
- »F3«: »größer«-Funktion: Bewirkt Selektion aller Datensätze, deren entsprechender Datenfeldinhalt größer als die Vergleichsdaten ist.
- »F4«: »größer gleich«-Funktion: Bewirkt Selektion aller Datensätze, deren entsprechender Datenfeldinhalt größer gleich den Vergleichsdaten ist.
- »F5«: »Hochkomma«-Funktion: Diese Funktion spart Ihnen Tipparbeit. Bei einem auf diese Weise verknüpften Feld wird nämlich die Eingabe des vorherigen Feldes übernommen.
- »F6«: »ODER«-Funktion: Diese logische »ODER«-Verknüpfung kann zusätzlich zu den anderen Funktionen verwendet werden. Es können beliebig viele (aber mindestens zwei) Felder verknüpft werden. Diese Funktion läßt sich auch sinnvoll mit der vorangegangenen kombinieren: Haben Sie zum Beispiel eine Literaturverwaltung mit mehreren gleichwertigen Feldern zur Stichworteingabe und sind sich bei einer Abfrage nicht sicher, in welches Feld Sie ein bestimmtes Stichwort eingegeben haben, können Sie folgendermaßen verfahren: Sie geben das Stichwort in das erste betreffende Feld ein und verknüpfen das Feld mit »ODER«. Die anderen betreffenden Felder verknüpfen Sie mit »Hochkomma« und »ODER«. Das ist schon alles!
So sparen Sie nicht nur Tipparbeit, sondern auch eventuell notwendige zusätzliche Abfragen. - »F7«: »NICHT«-Funktion: Bewirkt Selektion aller Datensätze, deren entsprechender Datenfeldinhalt ungleich den Vergleichsdaten ist.
Wichtig: Um wieder in die »normale« Eingaberoutine zu kommen, müssen Sie »RETURN« drücken!
Zusätzlich stehen Ihnen drei Zeichen mit spezieller Bedeutung zur Verfügung, die Sie direkt bei der Eingabe der Vergleichsdaten verwenden können: - das »Fragezeichen» (CHR$(63)) und das Sonderzeichen (CHR$(166)), mit dem die Felder beim Aufruf der Aus- und der Eingaberoutine aufgefüllt sind: Diese beiden Zeichen haben dieselbe Funktion. Sie dienen als »Joker«, das heißt, sie können für jedes beliebige andere Zeichen stehen! Sind also eine (oder mehrere) Stellen in einem Datenfeld für die Selektion nicht relevant, dann geben Sie dort eines der beiden Zeichen ein.
- das »Multiplikationszeichen« (CHR$(42)); Dieses Zeichen kennzeichnet die Stelle, an der es steht, sowie alle nachfolgenden Stellen des Datenfeldes als nicht relevant!
Abschließend drei zusätzliche Funktionen zur Bearbeitung des Datenbestandes einer Datei, die Sie ebenfalls durch Drücken der entsprechenden Taste aufrufen können: - »D«: Dadurch wird der gerade im Speicher befindliche Datensatz aus der Datei entfernt, das heißt im Computer und auf Diskette gelöscht.
- »R«: Mit diesem Kommando können Sie den im Speicher befindlichen Datensatz ersetzen (beziehungsweise ändern). Dabei wird in die Dateneingaberoutine verzweigt. Es können beliebige Änderungen (auch am Datensatzschlüssel) vorgenommen werden. Durch Drücken der »S«-Taste wird der alte Datensatz dann durch den neu eingegebenen ersetzt.
- »A«: Dieses Kommando ermöglicht die Eingabe eines neuen Datensatzes, ohne daß extra über das Hauptmenü die Dateneingaberoutine aufgerufen werden muß.
Eine Aufstellung aller bei der Datenausgabe zur Verfügung stehenden Kommandos finden Sie in Tabelle 4.
Helpscreens
Diese sogenannten »Hilfsbildschirme« stellen eine wertvolle Hilfe sowohl für die Arbeit mit dem Programm selbst als auch für die Arbeit mit den einzelnen Dateien dar. Hier können Sie zum Beispiel wichtige Hinweise zu einzelnen Kommandos des Programms ablegen, auf Diskette speichern und dann bei Bedarf wieder in den C 64 laden. Wie Sie in Bild 1 sehen können, ist es möglich, die Helpscreens auch bei der Datenein- und Datenausgabe aufzurufen, das heißt Sie können bei der Datenpflege jederzeit auf die Helpscreens zurückgreifen!
Insgesamt stehen zwei Helpscreens zur Verfügung, die einfach durch Drücken der »CTRL« + »H«-Taste aufgerufen werden. Zur Erläuterung: Database verwendet zwei Bildschirme. Auf dem einen, der vor allem zur Ausgabe der Hauptmenüs und für die Sonderfunktionen benützt wird, wird der normale Zeichensatz des C 64 verwendet. (Wenn Sie also zum Beispiel vom Hauptmenü die Helpscreens aufrufen, wird Helpscreen 1 ausgegeben.) Auf dem anderen, der zur Ausgabe der Dateimaske dient, wird der eventuell vom Benutzer geänderte Zeichensatz verwendet (und bei einem Helpscreenaufruf entsprechend Helpscreen 2 ausgegeben). Bis auf die verschiedenen Zeichensätze sind die beiden Helpscreens aber völlig gleichwertig.
Für die Eingabe stehen Ihnen die 2.-22. Bildschirmzeile zur Verfügung. Die möglichen Kommandos sind dabei im wesentlichen dieselben - bis auf die dateispezifischen - wie bei der Dateimaskendefinition. (Siehe Bild 3.) Dazu kommen die vier folgenden Kommandos:
- »F5«: Helpscreen speichern: Mit diesem Kommando können Sie den gerade auf dem Bildschirm ausgegebenen Helpscreen durch Angabe eines maximal 14stelligen Namens auf Diskette abspeichern.
- »F6«: Helpscreen laden. Mit diesem Kommando können Sie einen auf Diskette gespeicherten Helpscreen durch Angabe des Namens in den Computer laden. Dabei ist es egal, von welchem Helpscreen (1 oder 2) aus Sie den einzuladenden Helpscreen gespeichert haben! (Ein Helpscreen, den Sie zum Beispiel von Helpscreen 1 aus gespeichert haben, kann also ohne weiteres in den Helpscreen 2 eingeladen werden.)
- »F7«: Helpscreens umschalten/vertauschen. Nachdem Sie »F7« gedrückt haben, erscheint die Frage »Helpscreens vertauschen?« Beantworten Sie sie mit »nein«, wird nur auf den jeweils anderen Helpscreen umgeschaltet. Beantworten Sie die Frage mit »ja«, werden die Inhalte der beiden Helpscreens vertauscht und danach der jeweils andere Helpscreen ausgegeben. Diese Funktion bekommt dann einen Sinn, wenn Sie zum Beispiel einen geänderten Zeichensatz verwenden und die Änderungen auf einem Helpscreen vermerken. Auf Helpscreen 2 sehen Sie dann die geänderten Zeichen; auf Helpscreen 1 ist die »normale« Zeichenmatrix des betreffenden Zeichens sichtbar.
- »SHIFT« + »RETURN«: Mit dieser Tastenkombination können Sie jederzeit - egal auf welchem Helpscreen Sie sich gerade befinden - zur Aufrufstelle zurückkehren.
Abschließend noch einige Hinweise für diejenigen, die sich mit dem Programm(aufbau) näher befassen wollen:
- In den Bildern 2 und 5 finden Sie Informationen über die von Database 64 erzeugten Dateien.
- Die Tabellen 1 und 2 zeigen die Speicherbelegung von Database.
- Die Tabellen 5 und 6 enthalten eine vollständige Liste der in den beiden Programmteilen verwendeten Variablen.
- Tabelle 7 gibt Auskunft über die in den vier Maschinenprogrammpaketen enthaltenen Routinen.
Hinweis:
Damit das Programm compilierfähig wurde, waren umfangreiche Änderungen notwendig. Dadurch wurde das (uncompilierte) Programm an manchen Stellen etwas langsamer, vor allem aber um einiges länger! Daher müssen Sie im zweiten Programmteil (DBII BASIC) in der uncompilierten Version auf eine Programmfunktion, nämlich die Helpscreens, verzichten. Die Leserservice-Diskette enthält auch das compilierte Programm (DBII). In diesem ist die Helpscreen-Funktion verfügbar!
| 2 | Zwischenspeicher für diverse Zwecke |
| 251 - 254 | Zwischenspeicher für diverse Zwecke |
| 1024 - 2047 | Video-RAM (Bildschirm 1) |
| 2048 - 40148 | Basic-Speicher |
| 40149 - 40247 | MP zur Berechnung der Datenfeldpositionen |
| 40248 - 40959 | Bildschirmmaskengenerator I |
| 40960 - 45159 | Zwischenspeicher für Dateimaske |
| 50176 - 51175 | Video-RAM (Bildschirm 2) |
| 51176 - 52565 | diverse Hilfsprogramme |
| 52566 - 52573 | Zwischenspeicher für Helpscreens (Farben) |
| 52574 - 52833 | Eingaberoutine für Helpscreens und Dateimaskendefinition |
| 52834 - 53027 | MP für scrolling nach oben |
| 53028 - 53223 | MP für scrolling nach unten |
| 57344 - 61439 | Zeichengenerator II |
| 61440 - 62283 | Zwischenspeicher für Helpscreen 1 |
| 62284 - 63127 | Zwischenspeicher für Helpscreen 2 |
| 2 - 2047 | entspricht Tabelle 1 |
| 2048 - 39484 | Basic-Speicher |
| 39485 - 40959 | Bildschirmmaskengenerator II |
| 40960 - 45159 | Zwischenspeicher für Dateimaske |
| 45160 - 49359 | Zwischenspeicher für Selektionsmaske |
| 49360 - 49459 | Rechengenerator (erzeugt aus String eine Basic-Zeile) |
| 49460 - 49700 | Indexdatei-Verwaltung |
| 49701 - 49703 | Zwischenspeicher (für Indexdateiverwaltung) |
| 49704 - 49786 | Stringvergleich-Routine |
| 49787 - 49869 | BSC/ASC-Wandler |
| 51176 - 63127 | entspricht Tabelle 1 |
| 63128 - 65535 | Indexdatei 2 |
| Dateneingabe: | |
|---|---|
| RETURN | auf Anfang des nächsten Feldes positionieren (wenn aktuelles Feld Rechen- oder Zahlenfeld ist, wird die Vorschrift ausgeführt!) |
| SHIFT + RETURN | Rückkehr zum Hauptmenü |
| F5 | vorblättern |
| F7 | zurückblättern |
| F8 | Seitendirektaufruf |
| HOME | auf Anfang des ersten Feldes positionieren |
| SHIFT + HOME | alle Datenfelder löschen |
| CTRL + 1 | Hintergrundfarbe ändern |
| CTRL + 2 | Vordergrundfarbe ändern |
| CTRL + 3 | Cursorfarbe ändern |
| L | aktuelles Datenfeld löschen |
| V | Rechen-/Formatiervorschriften für alle betroffenen Felder ausführen |
| S: | Datensatz speichern |
| CTRL + C | Cursorblinkfrequenz ändern |
| Datenausgabe: | |
|---|---|
| I | Ausgabe über Schlüssel |
| F | Ausgabe über freie Selektion |
| E | ersten Datensatz einladen |
| F | letzten Datensatz einladen |
| N | nächsten Datensatz einladen |
| V | vorherigen Datensatz einladen |
| D | Datensatz löschen |
| R | Datensatz ersetzen |
| A | Datensatz hinzufügen |
| Weitere Funktionen (Erläuterung in Tabelle 3): | |
| F5, F7, F8, CTRL+1/2/3, SH+R | |
| Zusatzfunktionen bei »freier Selektion«: | |
| K | mit Selektion beginnen |
| M | Verknüpfungsroutine aufrufen |
| F1 | < |
| F2 | <= |
| F3 | > |
| F4 | >= |
| F5 | " |
| F6 | o |
| F7 | n |
| außerdem (Bedeutung in Tabelle 3): | |
| RT, SH + RT, F5, F7, F8, HOME, SH + HOME, L, V, CTRL + C | |
| Variablenliste für Database/I: | |
|---|---|
| FF | Zwischenspeicher für Farbwerte (im Farbcode) |
| MF%(1) | Hintergrundfarbe (Hauptmenü) |
| MF%(2) | Vordergrundfarbe (Hauptmenü) |
| MF%(3) | Cursorfarbe (Hauptmenü) |
| ME | Nummer des aktuellen Hauptmenüs |
| HP | Nummer des aktuellen Helpscreens |
| UG | Flag für erfolgten Unterprogrammaufruf |
| SP | Cursorspalte |
| ZE | Cursorzeile |
| ME$(.,.) | enthält Strings für Hauptmenüausgabe |
| C1 | Zwischenspeicher für Cursorspalte |
| C2 | Zwischenspeicher für Cursorzeile |
| FC%(..) | Funktionscodes (ASC-Werte der entsprechenden Tasten) für Kommandoaufruf |
| FM | Anzahl der Funktionen (dto.) |
| BA(1) | Bildschirmspeicheranfangsadresse von Bildschirm 1 (1024) |
| BA(2) | Bildschirmspeicheranfangsadresse von Bildschirm 2 (50176) |
| PG | aktuelle Dateiseite (der Bildschirmmaske) |
| F1(..) | Hintergrundfarbe der einzelnen Dateiseiten |
| F2(..) | Vordergrundfarbe der einzelnen Dateiseiten |
| F3(..) | Cursorfarbe der einzelnen Dateiseiten |
| KS$(..) | enthält diverse Strings (für Ausgabe und andere Zwecke) |
| GZ | Länge der Eingabe (bei !GET-Befehl) |
| CB | Zwischenspeicher für Cursorblinkfrequenz |
| CP | aktuelle Cursorposition (im Bildschirmspeicher) |
| GR | Flag für Schriftmodus der Dateimaske |
| AP%(.,.) | Anfangs- und Endadresse der einzelnen Dateiseiten im Zwischenspeicher (Low-Byte/High-Byte) |
| FS%(..) | Flag für erfolgten Seitenaufruf bei Dateimaskendefinition |
| SM | Flag für Schriftmodus (bei UP Zeichensatzänderung) |
| RV | Flag für RVS on/off (bei UP Zeichensatzänderung) |
| UD | Flag für Bedingungsabfrage (bei UP Zeichensatzänderung) |
| ZF%(1) | Hintergrundfarbe (UP: Zeichensatzänderung) |
| ZF%(2) | Vordergrundfarbe (UP: Zeichensatzänderung) |
| ZF%(3) | Cursorfarbe (UP: Zeichensatzänderung) |
| TA%(1) | Hintergrundfarbe (UP: Tastaturänderung) |
| TA%(2) | Vordergrundfarbe (UP: Tastaturänderung) |
| TA%(3) | Cursorfarbe (UP: Tastaturänderung) |
| P2(..) | Zwischenspeicher für Zeichenmatrix |
| SE | enthält Anzahl der Dateiseiten |
| ZG | Flag für Zeichensatzabspeicherung |
| HZ | Zwischenspeicher für Nummer des aufgerufenen Helpscreens |
| PH(..) | Anfangsadresse der Zwischenspeicher der Farb-/Schriftmoduswerte (für Helpscreens) |
| HP%(.,.) | Anfangs- und Endadressen der Zwischenspeicher für Helpscreens |
| DR | enthält Speicherkonfiguration (für diverse Zwecke) |
| BR%(..) | Zwischenspeicher für Bildschirmumschaltung |
| FE | Fehlernummer (Floppymeldung) |
| FE$ | Fehlertext (Floppymeldung) |
| C$ | enthält CHR$(145) |
| C3 | Zwischenspeicher für Cursorpositionszähler (HB) |
| C4 | Zwischenspeicher für Cursorpositionszähler (LB) |
| RS | RVS-Flag für Bildschirmmaskendefinition |
| HR | RVS-Flag für Helpscreens |
| AF | Zähler für Felder/Gesamtzahl der Felder (einer Datei) |
| FV | Flag für »Feld vorhanden« |
| S | Flag für »Schlüsselfeld vorhanden« |
| N | Flag für »numerisches Feld vorhanden« |
| EF | Flag für »Ergebnisfeld vorhanden« |
| AM | Maximalzahl der Felder |
| FD(.,.) | Feldpositionen (Anfang/Ende) |
| FA%(..) | Flag für Feldarten |
| AF%(..) | Anzahl der Felder je Seite |
| FO$(..) | Formatvorschriften für numerische Felder |
| RO$(..) | Rechenvorschriften für Ergebnisfelder |
| ZG$(..) | Name des Zeichengenerators |
| AS | Anzahl der relevanten Stellen des Schlüsselfeldes |
| S3 | Anzahl der Formatvorschriften |
| S5 | Anzahl der Rechenvorschriften |
| D$ | enthält Dateiname |
| DL | Datensatzlänge |
| DA$ | Dateiname (für Ausgabe) |
| SF | Seite, auf der sich das Schlüsselfeld befindet |
| NN | Feldnummer des Schlüsselfeldes |
| ES | erste Seite der Dateimaske, auf der sich ein Feld befindet |
| FO%(.) | enthält laufende Nummer der Formatierfelder |
| RO%(.) | enthält laufende Nummer der Ergebnisfelder |
| MT | Maximalzahl der Datensätze einer Datei |
| PT | Anfangsadresse des Bildschirmmaskengenerators |
| DD$(..) | Dateinamen (Datei-Directory) |
| SN%(..) | Anzahl der Seiten einer Datei (Datei-Directory) |
| DS%(..) | Anzahl der Datensätze einer Datei (Datei-Directory) |
| AD | Anzahl der Dateien |
| DP | Flag für Datei-Directory abspeichern |
| SY | Flag für Syntaxkontrolle durchführen (bei Rechenvorschriftseingabe) |
| Speicher für diverse Zwecke: | |
| E, EG$, EG, K, S1, AG$, S2, RV$, I$, H$, H1$, H2$, H, H1, H2, H3, H4, H5, S6, S4, H3$, ZP, G1, G2, P1(..), SZ, SC, A1, Z$, Z, L1, L2, P1, P2, P3, A2, T5, T1, T2, T4, T1$, ZW$, S, S7, ZF, A3, A4, S6$, LB(..), HB(..) | |
| Zur Speicherung auf Diskette: | |
|---|---|
| Alle Dateinamen werden jeweils auf 14 Zeichen Länge aufgefüllt. Die letzten beiden Stellen (also die 15. und 16. Position) dienen zur Kennzeichnung des File-Typs. Zusätzlich zu den in Bild 2 aufgeführten Bezeichnungen (.D/.E/.I/.S/.R) werden noch folgende Abkürzungen verwendet: | |
| .U | Dieses File (PRG) enthält eine Dateimaske, die keiner Datei zugeordnet ist. |
| .M | Dieses File (SEQ) enthält Informationen (Farben/Schriftmodus) über eine mit ».U« gekennzeichnete Dateimaske. |
| .Z | Dieses File enthält einen (abgeänderten) Zeichensatz. (PRG) |
| .H | Dieses File enthält einen Helpscreen. (PRG) |
| Floppy-File-Typen: | |
| PRG : | Maschinenprogramm-File |
| SEQ : | sequentielles File |
| REL : | relatives File) |
| Variablenliste für Database/II: | |
|---|---|
| NN | erste Datei der als nächstes auszugebenden Seite des Datei-Directorys |
| SI | laufende Nummer (in bezug auf Datei-Directory) der im Computer befindlichen Datei |
| RV | RVS-Flag |
| P | Flag für Bildschirmadresse |
| DD | Flag für »Datei-Directory eingeladen« |
| DF%(1) | Hintergrundfarbe (Datei-Directory) |
| DF%(2) | Vordergrundfarbe (Datei-Directory) |
| DF%(3) | Cursorfarbe (Datei-Directory) |
| DR | Schriftmodusflag für Datei-Directory |
| DM | Nummer der auszugebenden Bildschirmmaske (für Menüs) |
| NF | aktuelle Feldnummer |
| AF | Anzahl der Felder (gesamt) |
| LL | aktuelle Feldnummer (in bezug auf einzelne Seite) |
| FD(.,1) | enthält Datenfeldanfänge |
| FD(.,2) | enthält Länge der Datenfelder |
| F1%(..) | Hintergrundfarbe (Dateimaske) |
| F2%(..) | Vordergrundfarbe (Dateimaske) |
| F3%(..) | Cursorfarbe (Dateimaske) |
| R(..) | enthält Ergebnisse der Berechnungen für Rechenfelder |
| AT | Anzahl der Datensätze einer Datei |
| F(..) | enthält Zahlenwerte der Datenfelder |
| EA | Endadresse +1 der Indexdatei 2 |
| GF | Anzahl der gelöschten (und noch nicht wieder besetzten Datensätze einer Datei) |
| NP(1) | nächster verfügbarer Record zum Schreiben (Low) |
| NP(2) | nächster verfügbarer Record zum Schreiben (High) |
| NP(3) | nächster verfügbarer Record zum Schreiben (Position innerhalb Record) |
| PO(1) | Aktueller Record (Low) |
| PO(2) | Aktueller Record (High) |
| PO(3) | Aktueller Record (Position innerhalb Record) |
| I1 | Startadresse des Speichers für Länge der Datei (Indexdatei 2) |
| I2 | Startadresse des Speichers für Position gelöschter Records |
| I3 | Startadresse des Speichers für Indexe und Recordpositionen |
| NS | Nummer des Schlüsselfeldes |
| SL,SH | Zwischenspeicher für Datensatznummer |
| T3 | aktuelle Datensatznummer |
| DC | Flag für »Datensatz im Computer« |
| R1$/R2$ | »Überlaufstrings« für Datensatzspeicherung auf Diskette (enthält »Rest« des ersten beziehungsweise letzten Records) |
| OP(..) | Zwischenspeicher für Recordzeiger |
| I4 | Zeiger auf Selektionsmaske |
| VZ%(..) | Feld für Verknüpfungsflags (bei freier Selektion) |
| Weitere Variablen (Bedeutung siehe Tabelle 5): | |
| FF, MF(1), MF(2), MF(3), ME, PT, HP, UG, KS$(..), ME$(.,.), FC%(..), ZE, SP, FE, C$, L$, AD, DD$(..), SN(..), DS(..), GZ, GR, AF%(.), BR%(.), RO%(.), SE, PG, ES, S5, FO%(..), RO$(..), FO$(..), MT, AP%(.,.), HP%(.,.), FM, S3, DL, SF, ZG$, AS, FE$, HZ, C1, C2, C3, C4, HR, PH(..), RS, CB. | |
| Speicher für diverse Zwecke: siehe Tabelle 5. | |
| MP-P-2 | Datenfeldberechnungsroutine/Bildschirmmaskengenerator I |
| MP-P-3 | Bildschirmmaskengenerator II |
| MP-P-4 | Diverse Maschinensprache-Hilfsprogramme/Eingaberoutinen/Nach oben scrollen/Nach unten scrollen |
| MP-P-5 | Rechengenerator/Indexverwaltung/Stringvergleich/BSC/ASC-Wandler |