4.4 KiB
MODIFIED Requirements
Requirement: Sequenzielle Datenübertragung
PRINT # SHALL wie PRINT formatieren (Druckzonen, Zahlendarstellung mit
Vorzeichenspalte), WRITE # SHALL Elemente komma-getrennt mit Strings in
Anführungszeichen schreiben. INPUT # SHALL komma-getrennte Felder lesen
und dabei Anführungszeichen auswerten, LINE INPUT # die ganze Zeile ohne
Zeilenende. EOF SHALL das Erreichen des Dateiendes melden; Lesen über das
Dateiende hinaus MUST Laufzeitfehler 62 „Input past end of file" auslösen.
INPUT # SHALL nicht konsumierte Felder einer Zeile für spätere Aufrufe bewahren und bei Bedarf über Zeilen hinweg weiterlesen. Fehlende geforderte Felder am Dateiende MUST Fehler 62 auslösen statt als leere Ersatzwerte zu gelten.
Scenario: WRITE # und INPUT # sind gegenläufig
- WHEN
WRITE #1, "a,b", 5geschrieben und die Zeile mitINPUT #1, s$, ngelesen wird - THEN enthält
s$den Texta,bundnden Wert 5
Scenario: Lesen über das Dateiende
- WHEN
INPUT #1, xnach dem letzten Datensatz ausgeführt wird - THEN tritt Laufzeitfehler 62 auf
Scenario: Felder über zwei Aufrufe
- WHEN WRITE #1, "a", "b" geschrieben und nach Wiederöffnung zweimal INPUT #1 mit je einer Stringvariablen ausgeführt wird
- THEN liefern die Aufrufe a und b
Scenario: Zu wenige Felder
- WHEN nur ein Feld vorhanden ist und INPUT #1 zwei Felder verlangt
- THEN tritt Fehler 62 auf
Requirement: Record-Konvertierungsfunktionen
Die Bibliothek SHALL die Konvertierungsfunktionen für Recordpuffer
bereitstellen: MKI$, MKL$, MKS$, MKD$ und MKC$ wandeln einen
numerischen Wert in seine Byte-Darstellung als String, CVI, CVL,
CVS, CVD und CVC wandeln zurück. Jedes Paar MUST gegenläufig sein.
Ein Argument, dessen Länge nicht zur Zielbreite passt, MUST
Laufzeitfehler 5 „Illegal function call" auslösen. MKSMBF$, MKDMBF$,
CVSMBF und CVDMBF SHALL dieselbe Rolle für das
Microsoft-Binärformat älterer BASIC-Versionen erfüllen; ist dieses
Format ein deklariertes Non-Feature, MUST die Ablehnung namentlich
erfolgen und in der Sprachreferenz unter „Abweichungen" stehen.
Die Argumentlänge der CV-Funktionen SHALL exakt ihrer Zielbreite entsprechen, nicht nur einer Mindestbreite.
Scenario: MK und CV sind gegenläufig
- WHEN
CVL(MKL$(123456))ausgewertet wird - THEN ist das Ergebnis 123456
Scenario: Falsche Argumentlänge
- WHEN
CVI("x")mit einem ein Zeichen langen String ausgewertet wird - THEN tritt Laufzeitfehler 5 auf
Scenario: Zu langes CVI-Argument
- WHEN CVI("abc") ausgewertet wird
- THEN tritt Laufzeitfehler 5 auf
Requirement: Dateisystem-Anweisungen mit plattformübergreifender Pfadsemantik
KILL, NAME … AS, FILES, CHDIR, CHDRIVE, MKDIR, RMDIR,
CURDIR$, DIR$ sowie SHELL als Anweisung und als Funktion SHALL
verfügbar sein. CURDIR$ SHALL das aktuelle Verzeichnis liefern, DIR$
den ersten bzw. — bei leerem Argument — den nächsten Treffer eines
Suchmusters und den leeren String, wenn keiner mehr folgt. Die
SHELL-Funktion SHALL den Beendigungsstatus des aufgerufenen Prozesses
liefern. CHDRIVE SHALL auf Plattformen ohne Laufwerksbuchstaben
namentlich abgewiesen oder als Non-Feature dokumentiert werden. Pfade SHALL sowohl \ als auch / als Trennzeichen
akzeptieren und auf die Konvention der laufenden Plattform abgebildet
werden; Laufwerksbuchstaben SHALL auf Nicht-Windows-Plattformen als
gewöhnlicher Namensbestandteil behandelt oder mit benannter Ablehnung
abgewiesen werden. Fehlende Dateien MUST Fehler 53 auslösen, fehlende
Pfade Fehler 76 „Path not found".
Scenario: Rückwärts-Schrägstrich auf Unix
- WHEN
OPEN "unter\d.txt" FOR OUTPUT AS #1auf einer Unix-Plattform ausgeführt wird - THEN entsteht die Datei
d.txtim Verzeichnisunter
Scenario: Verzeichnis durchlaufen
- WHEN
DIR$("*.txt")und danachDIR$("")wiederholt ausgewertet werden - THEN liefern sie nacheinander alle passenden Namen und zuletzt den leeren String
Scenario: Fehlender Pfad
- WHEN
MKDIRin einem nicht existierenden Elternverzeichnis aufgerufen wird - THEN tritt Laufzeitfehler 76 auf
Scenario: OPEN mit fehlendem Elternpfad
- WHEN OPEN FOR INPUT einen Dateinamen in einem nicht vorhandenen Elternverzeichnis verwendet
- THEN tritt Fehler 76 auf; fehlt nur die Datei in einem vorhandenen Verzeichnis, tritt Fehler 53 auf