## MODIFIED Requirements ### Requirement: Dateinummern und Öffnen in drei Zugriffsarten `OPEN` SHALL in beiden Syntaxen des Vorbilds (Klausel- und Kurzform) die Zugriffsarten sequenziell (`INPUT`, `OUTPUT`, `APPEND`), wahlfrei (`RANDOM`) und binär (`BINARY`) unterstützen und die Datei an eine Dateinummer binden. `FREEFILE` SHALL die kleinste freie Dateinummer liefern. `CLOSE` ohne Argument SHALL alle offenen Dateien schließen, `RESET` ebenso. Eine bereits belegte Dateinummer MUST Laufzeitfehler 55 „File already open" auslösen, eine nicht geöffnete Nummer Fehler 52 „Bad file name or number", eine fehlende Datei bei `INPUT` Fehler 53 „File not found". FREEFILE SHALL die gemeinsame Belegung durch sequenzielle, wahlfreie, binäre und ISAM-Bindungen berücksichtigen. #### Scenario: Sequenzielles Schreiben und Lesen - **WHEN** eine Datei mit `OPEN "d.txt" FOR OUTPUT AS #1` beschrieben, geschlossen und mit `FOR INPUT` wieder geöffnet wird - **THEN** liefert das Lesen genau die geschriebenen Zeilen #### Scenario: Doppeltes Öffnen derselben Nummer - **WHEN** `OPEN` eine bereits offene Dateinummer verwendet - **THEN** tritt Laufzeitfehler 55 auf #### Scenario: Freie Dateinummer - **WHEN** `#1` offen ist und `FREEFILE` aufgerufen wird - **THEN** liefert `FREEFILE` eine Nummer, die noch nicht belegt ist #### Scenario: ISAM belegt eine Dateinummer - **WHEN** eine ISAM-Tabelle auf #1 und sonst keine Datei offen ist - **THEN** liefert FREEFILE den Wert 2