<< | Inhaltsverzeichnis | Suchen | >> |
Die Datensätze von Indexdateien bestehen aus Feldern. Mit diesen Feldern werden Schlüssel gebildet. Der Zugriff auf die Datensätze erfolgt über einen Schlüssel. Die Datensätze können in beliebiger Reihenfolge über die Schlüssel gelesen und geschrieben werden.
Die Indexdateien werden zur Laufzeit des EBUS-Programms automatisch geöffnet und geschlossen. Die Konsistenz der Daten ist auch bei Programm- oder Systemabsturz gewährleistet. Voraussetzung dafür ist jedoch, daß kein Write-Cache aktiv ist. Wird nach dem Starten eines EBUS-Programms beim Öffnen der Indexdateien ein Defekt festgestellt, kann die Datei – je nach Benutzereingabe – reorganisiert werden, oder das Programm wird beendet.
Indexdateien können in den Anweisungen der Programmiersprache sowohl mit dem Indexdatei-Namen (absolut) als auch durch einen alphanumerischen Ausdruck (variabel) angesprochen werden.
Wird die Indexdatei im Programm variabel angesprochen, so muß im alphanumerischen Ausdruck der Name einer im Programm verwendeten Indexdatei enthalten sein. Falls der Name der Indexdatei im Programm nicht explizit vorkommt, muß er im Menuepunkt Verwalten Programm-Beschreibungen bei Zusätzliche Indexdateien für Unterprogramm angegeben werden. Im Datei-Namen ist Groß- und/oder Kleinschreibung möglich. Auch nachfolgende Leerzeichen (Blanks) sind zulässig.
|
|
|
Achtung: Bei der Verwendung eines variablen Indexdatei-Namens kann der EBUS-GENERATOR-C nicht überprüfen, ob der Indexdatei-Name syntaktisch korrekt ist. Deshalb tritt erst zur Laufzeit des EBUS-Programms ein Fehler auf, wenn der Indexdatei-Name fehlerhaft ist (z.B. führende Leerzeichen) oder die Indexdatei im Programm nicht verwendet wird. Die entsprechende Anweisung ist dann wirkungslos und der zugehörige Block ON ERROR ... END wird ausgeführt (OK=1041, OK2=919). |
|
|
Im Multi-User-Betrieb wird die Konsistenz der Daten durch das Record-Locking gewährleistet.
Die Indexdatei-Variablen stellen die Verbindung zwischen Programm und Indexdatei her:
Bei den Schreib- und Leseanweisungen wird der entsprechende Schlüssel für den Dateizugriff aus dem aktuellen Inhalt der entsprechenden Indexdatei-Variablen gebildet. Bei Leseanweisungen werden die Indexdatei-Variablen mit den Werten des gelesenen Datensatzes versorgt. Man beachte dabei, daß bei den Anweisungen READ-NEXT, READ-PREVIOUS, START, READS-NEXT, READS-PREVIOUS und STARTS sich der Wert der aktuellen Schlüsselfelder auch ändern kann oder ändern muß.
Bei der Schreibanweisung WRITE wird der durch den Haupt-Schlüssel (Primär-Key) spezifizierte Satz in die Indexdatei geschrieben. Ist ein Datensatz mit diesem Schlüssel bereits vorhanden, wird er mit den aktuellen Werten überschrieben. Im Multi-User-Betrieb muß ein bereits bestehender Datensatz, der zurückgeschrieben werden soll, vorher gelesen worden sein, andernfalls wird der Fehler 1062 gemeldet.
Mit der Anweisung DELETE wird der durch den Haupt-Schlüssel spezifizierte Satz in der Indexdatei gelöscht.
Im EBUS-Programm können mit den Anweisungen PATH, NEWNAME, OPENMODE und die Pfade, die physikalischen Namen und der Zugriffsmodus von Indexdateien geändert werden.
|
/* |
READ
KUNDEN /*
Datensatz lesen |
KUNDEN.AUSSEN
= KUNDEN.AUSSEN + ACT_EINGANG |
WRITE
KUNDEN /*
Datensatz zurückschreiben |
FEHLER: ¼ |
/* |
READ
DATEI$ |
Bei Indexdatei-Zugriffen können folgende Fehler auftreten:
Fehlernummer in der Variablen OK |
Fehler |
1014 |
nicht genügend Speicherplatz vorhanden |
1021 |
READ-NEXT oder READ-PREVIOUS ohne vorherigen START oder READ mit demselben Schlüssel |
1031 |
Indexdatei nicht gefunden, Name ungültig |
1041 |
Kommando-Fehler |
1042 |
Knotengröße zu groß |
1051 |
Datensatz nicht vorhanden |
1061 |
Datensatz bereits vorhanden (Haupt-Schlüssel kommt doppelt vor.) |
1062 |
Multi-User WRITE ohne daß der zu überschreibende Satz gesperrt ist |
1065 |
Datensatz wurde zwischenzeitlich von anderem User gelöscht oder verändert |
1071 |
OPEN/CLOSE Fehler |
1072 |
Fehler bei CREATE, OK2 enthält Systemfehlernummer |
1090 |
Indexdatei ist defekt |
1097 |
Fehler beim Schreiben <datei>.ebu, OK2 enthält Systemfehlernummer |
1801 |
C-ISAM: Fehler bei Release |
1802 |
C-ISAM: Fehler bei Rewrite |
1803 |
C-ISAM: Fehler bei Write |
1901 |
Datensatz in Datendatei ist gesperrt |
1902 |
Reorg nicht möglich |
1903 |
Fehler bei Lesen des Headers aus der DBASE-Datei |
1904 |
Fehler bei Schreiben des Headers in die DBASE-Datei |
1905 |
CHR$(0) im Datensatz |
1906 |
Reorgaufruf für Btrieve-Datei |
1999 |
interner Fehler bei Reorg |
>2000 |
Systemfehlernummer + 2000, OK2 enthält Systemfehlernummer |
OK2:
901 |
Datei bereits offen (CREATE,OPEN) |
902 |
Datei nicht offen |
903 |
Länge des übergebenen Schlüssels zu groß oder zu klein |
904 |
Fehler bei OPEN <datei.ebu> (Datei nicht vorhanden) |
905 |
Knotengröße > 1024 |
906 |
<datei>.ebu doch vorhanden bei Create (Kollision beim gleichzeitigen Anlegen der Datei) |
907 |
OPEN nicht möglich, da Datei exklusiv gesperrt |
908 |
<datei>.ebu defekt |
909 |
Syntax-Fehler |
910 |
Unzulässiges Kommando |
911 |
Kein Speicherplatz mehr vorhanden |
912 |
Indexdatei ist defekt |
913 |
Exklusiv-Open nicht möglich. |
914 |
Dateistruktur hat sich geändert. Reorg nicht möglich, da Exklusiv-OPEN nicht möglich oder Abfrage mit <N> beantwortet wurde. |
915 |
Fehler bei OPEN: <datei>.ebu wurde nicht gefunden, obwohl <datei>.i1 oder <datei> bzw. <datei>.dbf vorhanden ist. |
916 |
Dateityp EBUS/DBASE stimmt nicht mit Generierung überein. |
917 |
Reorganisation wurde abgebrochen |
918 |
DBASE-Dateistruktur (Feldaufbau) stimmt nicht mit Generierung überein. Reorganisation ist nicht möglich. |
919 |
Ungültige Dateinummer |
920 |
Datendatei nicht vorhanden. <datei>.ebu ist vorhanden, aber die Datendatei <datei> existiert nicht. |
921 |
Sekundär-Key existiert nicht |
922 |
CHR$(0) im Datensatz |
924 |
Reorgaufruf für Btrieve-Datei |
925 |
SHARE im Multi-User-Betrieb nicht geladen oder mehr als 1024 User |
926 |
Zurückschreiben oder Löschen des Datensatzes nicht möglich, da der Datensatz inzwischen verändert wurde. |