Neue Capability isam-datenbank mit 9 Anforderungen und 25 Szenarien: Tabellenbindung an eine Dateinummer, Indexverwaltung, Cursorbewegung, Schluesselsuche, Satzoperationen, Transaktionen mit Ruecknahme, Vergleichsreihenfolge, Pufferverwaltung und das eigene Dateiformat. sprach-frontend um eine Anforderung erweitert: ISAM-Anweisungen und -Funktionen in Grammatik und Signaturpruefung. Die Delta-Spec wurde vor dem Archivieren an die Original-Hilfe angeglichen -- Cursorlage nach SETINDEX und DELETE, Fehlercode der Suche ueber den NULL-Index. Die Change-Notiz umfang-und-signaturen.md haelt Umfangsabgleich, Argumentformen mit Quellenangabe je Themenseite und die Verifikationsbefunde fest. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
5.4 KiB
Phase 3 (Abschluss) — ISAM-Datenbankunterstützung
Why
Die Leitplanke „Vollständigkeit ist das Soll" und die Entscheidung vom
2026-09-02 legen fest: ISAM wird implementiert, es ist kein Non-Feature.
Heute existiert davon nur eine Parser-Klausel — OPEN … FOR ISAM typname tabellenname AS #n wird erkannt und auf den „nicht verfügbar"-Marker
abgesenkt. Die eigentlichen ISAM-Anweisungen und -Funktionen
(CREATEINDEX, SETINDEX, INSERT, RETRIEVE, UPDATE, DELETE, die
MOVE- und SEEK-Familien, die Transaktionsanweisungen) besitzen im
Frontend keine Signatur. Sie enden damit in „unbekannter Bezeichner"
bzw. einem generischen Syntaxfehler — genau der Fall, den der Guiding
Principle als Bug definiert: ein dokumentiertes Feature wird still und
ohne Namensnennung abgewiesen.
Die Laufzeitfehler 81–89 des ISAM-Bereichs sind bereits als
tb_runtime::errors implementiert und warten auf ihre Auslöser.
Dieser Change schließt Phase 3 ab. Der vorausgehende Change
phase-3-runtime-bildschirm liefert die Datei-E/A-Grundlage
(Dateitabelle, Recordpuffer, UTF-32-Festtextfelder), auf der ISAM
aufsetzt, sowie das Inventar, in dem die ISAM-Elemente ihren Status
führen.
What Changes
- ISAM-Elemente erhalten Frontend-Signaturen: Sämtliche in der
Original-Hilfe dokumentierten ISAM-Anweisungen und -Funktionen werden
in Grammatik und Signaturprüfung aufgenommen, damit ihre Verwendung
namentlich diagnostiziert statt als unbekannter Bezeichner behandelt
wird. Den maßgeblichen Umfang bestimmt das Sprachinventar aus
phase-3-runtime-bildschirm; nach heutigem Stand umfasst er mindestensCREATEINDEX,DELETEINDEX,SETINDEX,GETINDEX$,INSERT,RETRIEVE,UPDATE,DELETE,DELETETABLE,MOVEFIRST,MOVELAST,MOVENEXT,MOVEPREVIOUS,SEEKEQ,SEEKGT,SEEKGE,BEGINTRANS,COMMITTRANS,ROLLBACK/ROLLBACK ALL,SAVEPOINT(Funktion),SETMEM(Funktion),BOFsowie das ISAM-Verhalten vonEOF,DELETE,LOFundLOC. - ISAM-Datenbanken und Tabellen:
OPEN … FOR ISAM typname tabellenname AS #nbindet eine Tabelle einer Datenbankdatei an eine Dateinummer; das Satzlayout ergibt sich aus dem benannten benutzerdefinierten Typ. Tabellen entstehen beim ersten Öffnen,DELETETABLEentfernt sie. - Indizes: benannte Indizes über eine oder mehrere Spalten, eindeutig
oder mehrdeutig, mit auf- und absteigender Ordnung;
SETINDEXwählt den aktiven Index und bestimmt damit die Satzreihenfolge,GETINDEX$liefert ihn zurück. - Satzoperationen und Cursor:
INSERT,RETRIEVE,UPDATE,DELETEarbeiten auf dem aktuellen Satz; dieMOVE-Familie bewegt den Cursor in der Ordnung des aktiven Index, dieSEEK-Familie positioniert über Schlüsselvergleiche (gleich, größer, größer-gleich).EOFundBOFmelden das Überlaufen des Cursors am Ende bzw. am Anfang. - Transaktionen:
BEGINTRANS,COMMITTRANS,ROLLBACKundROLLBACK ALLmit Rücknahme aller Änderungen seit Transaktionsbeginn bzw. seit einem Sicherungspunkt;SAVEPOINTist eine Funktion und liefert die Kennung des gesetzten Sicherungspunkts. - Vergleichsreihenfolge: Die Sortierordnung der Indizes wird unter Unicode festgelegt und dokumentiert.
- ISAM-Fehlersemantik: Die vorhandenen Fehlercodes 81–89 werden von den entsprechenden Situationen ausgelöst (ungültiger Name, Tabelle nicht gefunden, Index nicht gefunden, ungültige Spalte, kein aktueller Satz, Verstoß gegen einen eindeutigen Index, ungültige Operation auf NULL-Index, inkonsistente Datenbank, zu wenig Puffer).
- Eigenes Datenbankdateiformat: Die Datenbankdatei ist bewusst nicht
binärkompatibel zum Vorbild — dieselbe Linie wie bei den UTF-32-
Records. Das Format wird in
docs/dateiformate.mdbeschrieben.
Non-Goals: Ein Konvertierungswerkzeug für Datenbankdateien des
Vorbilds; die eingebettete SQL-Erweiterung samt WHILE SELECT
(Stufe 2, Ideenspeicher); Mehrprozess-Zugriff über
Betriebssystemgrenzen hinweg jenseits der Satzsperren aus datei-eio.
Capabilities
New Capabilities
isam-datenbank: indizierter Satzzugriff — Datenbank- und Tabellenbindung an Dateinummern, Indexverwaltung, Cursorbewegung und Schlüsselsuche, Satzoperationen, Transaktionen, Vergleichsreihenfolge und die ISAM-Fehlersemantik (Codes 81–89).
Modified Capabilities
sprach-frontend: Die Grammatik und die Signaturprüfung SHALL die ISAM-Anweisungen und -Funktionen umfassen, sodass ihre Verwendung namentlich diagnostiziert wird statt als unbekannter Bezeichner.
Impact
crates/tb-frontend: neue Anweisungsgrammatik und Signaturen für die ISAM-Elemente; die bisherigeUnsupported-Absenkung vonOPEN … FOR ISAMentfällt.crates/tb-runtime: neues ISAM-Modul (Speicher, Indizes, Cursor, Transaktionen) auf der Dateitabelle und den Recordpuffern ausphase-3-runtime-bildschirm.crates/tb-vm: neue Builtin-Indizes für die ISAM-Anweisungen.tests/compat: neue Korpusprogramme für Indexordnung, Schlüsselsuche, Eindeutigkeitsverletzung, Cursorenden und Transaktionsrücknahme.docs/:docs/dateiformate.mdum das Datenbankdateiformat erweitert;docs/bibliothek.mdum die ISAM-Elemente;docs/inventar.mdwechselt deren Status aufimplementiert;docs/sprachreferenz.mdhält die Sortierordnung und die Inkompatibilität des Dateiformats fest.- PLAN.md: Phase 3 gilt mit diesem Change als abgeschlossen.