APPEND
APPEND | |
Syntax: | APPEND #<logische Dateinummer>, <Dateiname> [,D<Laufwerk>] [,U<Geräteadresse>] |
Parameter | |
<logische Dateinummer> : numerischer Ausdruck im Wertebereich von 1 bis 255 | |
<Dateiname>: Zeichenkettenausdruck | |
<Laufwerk>: numerischer Ausdruck mit Wert 0 oder 1 | |
<Geräteadresse>: numerischer Ausdruck im Wertebereich von 4 bis 30 | |
Einordnung | |
Typ: | Anweisung |
Kontext: | Diskettenbefehl |
Aufgabe: | Datei zum Schreiben öffnen und auf das Dateiende positionieren |
Abkürzung: | aP |
Token: | $fe $0e (254 14) |
Verwandte Befehle | |
DOPEN, OPEN |
Anmerkung: Dieser Artikel beschreibt den BASIC-Befehl APPEND ab Commodore BASIC V7.0 oder höher.
Die Anweisung APPEND (engl. für anhängen) öffnet eine bereits bestehende Datei (ausgenommen solche vom Typ einer relativen Datei) auf Diskette, um an das Dateiende weitere Daten zu schreiben. Nachfolgende Ausgaben an die angegebene logische Dateinummer, wie etwa mit den Befehlen PRINT# oder CMD, werden an die Datei angehängt.
Die Parameter haben folgende Bedeutung:
- <logische Dateinummer>: Die Dateinummer, die den Datenkanal identifiziert und für nachfolgende Ein-/Ausgabebefehle benötigt wird. Die Dateinummer muss im Wertebereich von 1 bis 255 liegen, sonst wird die Fehlermeldung ?ILLEGAL QUANTITY ERROR ausgegeben.
- <Dateiname>: Ein Zeichenkettenausdruck mit dem Dateinamen, der auch Jokerzeichen enthalten darf, bei dem der erste passende Name im Inhaltsverzeichnis verwendet wird. Ist der Ausdruck länger als 16 Zeichen wird ein ?STRING TO LONG ERROR ausgegeben, ein leere Zeichenkette führt dagegen zu einem ?MISSING FILENAME ERROR.
Weitere Fehlerzustände sind mit Hilfe des Fehlerkanals abfragbar (Systemvariablen DS und DS$), der z.B. eine nicht vorhandene Datei mit "62,FILE NOT FOUND,00,00" anzeigt. - <Laufwerk>: Laufwerksnummer, wird bei einem Doppellaufwerk benötigt und kann die Werte 0 oder 1 annehmen, ansonsten wird ein ?ILLEGAL QUANTITY ERROR ausgegeben. Standardwert ist 0.
- <Geräteadresse>: Gerätenummer des Diskettenlaufwerks, standardmäßig 8. Sie darf im Wertebereich von 4 bis 30 liegen, außerhalb dieses Bereichs führen zu einem ?ILLEGAL DEVICE NUMBER ERROR, außer bei Werten kleiner 0 oder größer 255, die ein ?ILLEGAL QUANTITY ERROR auslösen. Ist das Gerät mit der angegebenen Nummer nicht verfügbar, wird ?DEVICE NOT PRESENT ERROR ausgegeben.
Hinweis: Das Floppylaufwerk muss zum Positionieren an das Dateiende die gesamte Datei vom Datenträger einlesen, weshalb die Ausführung des Befehls bei großen Dateien verhältnismäßig lange dauern kann.
BASIC 2.0 Entsprechung
Allgemeine Syntax:
APPEND #<logische Dateinummer>, <Dateiname> [,D<Laufwerk>] [,U<Geräteadresse>]
Entsprechung in BASIC V2-Syntax:
OPEN <logische Dateinummer>,<Geräteadresse>,<Sekundäradresse>,<Dateiname>+",A"
Für <Sekundäradresse> ist ein beliebiger Wert von 2 bis 127 empfohlen, möchte man weiteren Nebenwirkungen vermeiden. APPPEND verwendet automatisch die erste nicht bereits verwendete Sekundäradresse.
Besonderheiten bei Diskbefehlen[Quelltext bearbeiten]
- Bei einem Dateinamen ist optional ein führendes @ möglich (nur bei einer Dateinamenangabe von mehreren erlaubt), um eine bestehende Datei zu überschreiben (REPLACE-Funktion). Das Zeichen wirkt sich dann nicht auf das Längenlimit von 16 Zeichen aus. Intern wird damit immer der für den Save-Bug sichere Dateiname "@0:<Dateiname>" verwendet (in diesem Fall für Laufwerksnummer 0).
- Die Parameter mit einem führenden Buchstaben, die logische Dateinummer beginnend mit # und Dateinamensangaben sind positionsunabhängige Parameter und dürfen beliebig gereiht sein. Abweichend davon sind jene Befehle, die einen Quell- und Zielteil aufweisen, wie etwa COPY, wo dies nur für den jeweiligen Bereich vor bzw. nach dem trennenden TO gilt.
- Der Buchstabe eines positionsunabhängigen Parameters steht für:
- B: bank (Banknummer)
- D: drive (Laufwerksnummer)
- I: identification (ID-Kennung eines Mediums)
- L: record length
- P: position in memory (Start-/Endadresse)
- R: read (lesende Operation)
- W: write (schreibende Operation)
- U: unit (Gerätenummer)
- Variablen oder allgemeine Ausdrücke bei positionsunabhängigen Parametern sind möglich, müssen aber in Klammern gesetzt werden (außer bei "I<Id>", wo immer nur eine 2-Zeichen-Konstante erwartet wird).
- Die Angabe der Geräteadresse oder Bank (bei BASIC 7.0) kann entweder mit "," oder mit "ON" oder kombiniert mit ",ON" eingeleitet werden, wobei im Falle eines Kommas bereits ein anderer Parameter voran gegangen sein muss.
- Der optionale Parameter "I<Kennung>" für die Angabe der Identifikation wird immer akzeptiert. Dem "I" müssen 2 Zeichen folgen, wobei beliebige Leerzeichen dazwischen vorkommen dürfen. Der Wert kann nicht durch einen geklammerten Ausdruck ersetzt werden. Gewisse Werte, die BASIC-Befehle wie IF, ON, FN, TO oder BASIC-Abkürzungen wie jO, hE enthalten, werden fälschlicherweise als das entsprechende Schlüsselwort und nicht als der beabsichtigte Text interpretiert. Alle nichtkonformen Fälle führen dann zur Fehlermeldung ?SYNTAX ERROR.
- Ein Parameter "R" (ohne weitere Wertangabe, bei DOPEN zur expliziten Angabe des vorgegebenen Read-only-Modus gedacht) wird bei allen Diskbefehlen immer akzeptiert, hat aber keinerlei zusätzliche Bedeutung. Im Falle von BASIC 3.5 wird hingegen ?SYNTAX ERROR gemeldet.
Beispiele[Bearbeiten | Quelltext bearbeiten]
APPEND #1, "DATEINAME"
Öffnet die Datei "DATEINAME" auf Geräteadresse 8 zum Anhängen.
APPEND #2, "DATA,U"
Hängt Ausgaben an die USR-Datei "DATA" an. Die Typangabe ist aber nur notwendig, wenn es ein Datei gleichen Namens aber unterschiedlichen Typs gäbe. In diesem Fall schränkt die Typangabe die angebbare Dateinamenslänge auf 14 Zeichen ein!
APPEND #3, "D?T*,U"
Öffnet jene Datei, dessen Dateiname gemäß dem Muster mit Jokerzeichen zuerst zutrifft.
APPEND | BANK | BEGIN | BEND | BLOAD | BOOT | BSAVE | BUMP | CATALOG | COLLISION | COLOR | CONCAT | DCLEAR | DCLOSE | DOPEN | DVERIFY | ENVELOPE | FAST | FETCH | FILTER | GO64 | MOVSPR | (OFF) | PEN | PLAY | POINTER | POT | (QUIT) | RECORD | RREG | RSPCOLOR | RSPPOS | RSPRITE | RWINDOW | SLEEP | SLOW | SOUND | SPRCOLOR | SPRDEF | SPRITE | SPRSAV | STASH | SWAP | TEMPO | WIDTH | WINDOW | XOR