RENAME (BASIC 3.5)
RENAME (BASIC 3.5) | |
Syntax: | RENAME <DateinameALT>[,D<Laufwerk>] TO <DateinameNEU> [ON U<Geräteadresse>] |
Parameter | |
<DateinameALT>: Zeichenkettenausdruck | |
<DateinameNEU> : Zeichenkettenausdruck | |
<Geräteadresse>: numerischer Ausdruck im Wertebereich von 3 bis 31 bei BASIC 3.5 und BASIC 4 bzw. von 4 bis 30 bei BASIC 7.0 | |
<Laufwerk> : numerischer Ausdruck im Wertebereich von 0 bis 1 | |
Einordnung | |
Typ: | Anweisung |
Kontext: | Diskettenbefehl |
Aufgabe: | Datei umbenennen |
Abkürzung: | reN |
Token: | $f5 (245) |
Verwandte Befehle | |
COPY |
Anmerkung: Dieser Artikel beschreibt den BASIC-Befehl RENAME ab Commodore BASIC 3.5 oder höher.
Der Befehl RENAME benennt eine Datei des angegebenen Laufwerks Laufwerk auf dem Gerät mit Geräteadresse um.
Dateinamensangaben, die über eine Länge von 16 Zeichen hinaus gehen, führen zur Fehlermeldung ?STRING TOO LONG ERROR.
Fehlt die umzubenennende Datei DateinameALT, findet sich im Fehlerkanal die Meldung "62, FILE NOT FOUND,00,00".
Existiert der Dateiname DateinameNEU bereits, liefert der Fehlerkanal "63, FILE EXISTS,00,00". Dieser Fehler tritt auch auf, wenn DateinameALT und DateinameNEU gleichlautend sind.
Zulässige Werte (stets als Ganzzahl aufgefasst) für Parameter
- Geräteadresse (Gerät 8, falls nicht vorhanden) sind von 3 bis 31 bei BASIC 3.5 und BASIC 4 bzw. von 4 bis 30 bei BASIC 7.0,
- Laufwerk sind 0 oder 1.
Während die Geräteadresse beliebig positioniert sein kann, darf die Laufwerksangabe nur beim alten Dateinamen (vor dem "TO") stehen.
Wurde mit dem RENAME-Befehl ein Diskettenlaufwerk angesprochen, zu dem die Geräteadresse falsch eingestellt ist oder nicht existiert, erscheint seit BASIC 7.0 die Fehlermeldung ?DEVICE NOT PRESENT ERROR. Bei BASIC 3.5 wird diese Fehlermeldung erst dann ausgegeben, wenn unmittelbar danach der Fehlerkanal des Laufwerks mittels DS oder DS$ abgefragt wird.
Sind die Parameter außerhalb des zulässigen Wertebereichs, erscheint die Fehlermeldung ?ILLEGAL QUANTITY ERROR. Das gilt auch für den Fall, dass die Zeichenkette einer Dateiangabe leer ist. Nur bei BASIC 7.0 wird hier der ?MISSING FILE NAME ERROR angezeigt.
Abgesehen davon, eine Datei einfach umzubenennen, ist dieses Kommando auch als Hilfswerkzeug dienlich, wenn etwa bei diversen diskettenorientierten Kommandos, wie COPY oder CONCAT das Limit von 16 Zeichen beim Dateinamen umgangen werden soll. Dort können - allerdings nur für speziellen Konstruktionen - mehrere Dateinamen in einer Parameterangabe angegeben werden. Das Limit auf Seite des Laufwerks beim Kommandokanal der Floppy von 34 Zeichen könnte unter gewissen Umständen ebenfalls eine verkürzende Umbenennung erfordern.
Funktionsweise[Bearbeiten | Quelltext bearbeiten]
Diese Anweisung sendet den DOS-Befehl Rename an das angegebene Laufwerk. Diese führt dann selbstständig den entsprechenden Vorgang aus. Im Falle eines unerwarteten Abbruchs (Laufwerks-LED blinkt), kann der konkrete Grund des Scheiterns über die Systemvariablen DS bzw. DS$ abgefragt werden.
Wenn kein Doppellaufwerk vorhanden ist ruft die Laufwerksangabe mit Wert 1 den Fehler "31,SYNTAX ERROR,00,00" hervor. Ebenso die Angabe von Jokerzeichen, die hier nicht erlaubt bzw. sinnvoll sind.
BASIC 2.0 Entsprechung
Entsprechung in BASIC V2-Syntax:
OPEN 15,<Gerät>,15,"R<Laufwerk>:DateinameALT=DateinameNEU":CLOSE 15
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]
RENAME "PROJEKT" TO "B-PROJEKT"
Eine Datei namens "PROJEKT" mit Vorsatz "B-" im Dateinamen versehen.
RENAME D(DR),(FALT$) TO (FNEU$) ON U(DE)
Umbenennung einer Datei auf dem Gerät DE Laufwerk DR mit Namen gemäß Stringvariable FALT$ auf den Namen laut FNEU$.
AUTO | BACKUP | BOX | CHAR | CIRCLE | COLLECT | COLOR | COPY | DEC | DELETE | DIRECTORY | DLOAD | DO | DRAW | DS | DS$ | DSAVE | EL | ELSE | ER | ERR$ | EXIT | GETKEY | GRAPHIC | GSHAPE | HEADER | HELP | HEX$ | INSTR | JOY | KEY | LOCATE | LOOP | MONITOR | PAINT | PRINT USING | PUDEF | RCLR | RDOT | RENAME | RENUMBER | RESUME | RGR | RLUM | SCALE | SCNCLR | SCRATCH | SOUND | SSHAPE | TRAP | TROFF | TRON | UNTIL | VOL | WHILE