CLOSE

Aus C64-Wiki
Zur Navigation springenZur Suche springen
CLOSE
Syntax: CLOSE <logische Dateinummer>
Parameter
<logische Dateinummer>: numerischer Ausdruck zwischen 0 und 255
Einordnung
Typ: Anweisung
Kontext: Ein/Ausgabe
Aufgabe: Einen geöffneten Datenkanal schließen
Abkürzung: clO
Token: $a0 (160)
Verwandte Befehle
OPEN

Anmerkung: Dieser Artikel beschreibt die BASIC-Befehl CLOSE unter BASIC V2 des Commodore 64.


Der BASIC-Befehl CLOSE schließt eine mit dem BASIC-Befehl OPEN geöffnete Datei bzw. einen damit geöffneten Gerätekanal und gibt die logische Dateinummer frei. Etwaige Daten, die sich noch im Schreibpuffer befinden, werden erst zu diesem Zeitpunkt tatsächlich z.B. auf ein Datasette-Band oder Diskette geschrieben. Wird beim Schreiben einer Datei der CLOSE-Befehl vergessen, so können die Daten unvollständig und/oder unlesbar sein. Am besten sollte der CLOSE-Befehl immer genutzt werden, wenn der Dateizugriff auf die geöffnete Datei mit den BASIC-Befehlen CMD, GET#, INPUT# und PRINT# nicht mehr erforderlich ist.

Die logische Dateinummer darf nur Werte von 0 bis 255 annehmen. Liegt sie im negativen Zahlenbereich oder über 255, so erscheint die Fehlermeldung ?ILLEGAL QUANTITY ERROR. Ein CLOSE auf eine nicht (mehr) geöffnete logische Dateinummer ruft keinen Fehler hervor (wird still ignoriert).
Der CLOSE-Befehl verwendet eigentlich die gleich Syntax wie der OPEN-Befehl, weshalb auch weitere Parameter, wie Gerätenummer, Sekundäradresse und Dateiname akzeptiert werden, deren konkrete Werte aber ignoriert werden (siehe auch Anmerkungen bei den Beispielen).

Der CLOSE-Befehl wirkt nicht, wenn eine logische Dateinummer mittels CMD für die Standardausgabe dient. In diesem Fall muss mit Hilfe eines expliziten PRINT# (siehe Beispiele) die Wirkung von CMD zuvor aufgehoben werden.

Wenn ein BASIC-Programm mit einem Fehler abbricht und eine mit OPEN geöffnete Datei noch nicht mit CLOSE geschlossen werden konnte, führt ein neuerlicher Programmstart mittels RUN eventuell zu unerwarteten Ergebnissen, da nämlich dann das OPEN für die zuvor offen gebliebene logische Dateinummer nicht bzw. nicht vollständig funktioniert. Weder ein OPEN noch ein extra CLOSE vor dem OPEN können im neu gestarteten Programm ein sauberes Schließen der offen gebliebenen Datei aus dem vorhergehenden, abgebrochenen Programmlauf wirklich sicherstellen.
Abhilfe schafft hier ein ausdrücklich im Direktmodus nachgeholtes CLOSE für die entsprechenden logische Dateinummer.

Beispiele[Bearbeiten | Quelltext bearbeiten]

CLOSE 1

logische Datei 1 schließen

10 CLOSE Z

Z steht für eine Zahlenvariable im ganzen Zahlenbereich von 0 bis 255.

100 OPEN 4,4
110 CMD 4
120 LIST
130 PRINT#4,;
140 CLOSE 4

Programm druckt sich selbst aus und CMD muss mit einem PRINT# aufgehoben werden, damit CLOSE funktioniert.

CLOSE 1,8,2,"IGNORIERT"
CLOSE 1,15

Kuriosum: CLOSE verwendet die gleiche Parametersyntax wie auch OPEN, wobei nur die logische Dateinummer tatsächlich verwendet wird, die anderen Parameter werden schlicht ignoriert! D.h., dass weitere durch Komma getrennte Parameter keineswegs die Angabe mehrerer Dateinummern ermöglicht, wie etwa die 2. Zeile vermuten lässt. Dort wird nicht auch die logische Dateinummer 15 geschlossen, sondern diese wird als Gerätenummer aufgefasst und schließlich ignoriert.