31 lines
1.4 KiB
Markdown
31 lines
1.4 KiB
Markdown
## 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
|