PRINT(Raute)

Aus C64-Wiki
Wechseln zu: Navigation, Suche
Begriffsklärung Der Titel dieses Artikels ist mehrdeutig. PRINT (Begriffsklärung).
PRINT(Raute)
Format: PRINT#<logische Dateinummer>, [Ausdruck] [ [, | ;]<Ausdruck>]...
Parameter
<logische Dateinummer>: numerischer Ausdruck im Wertebereich von 0 bis 255
Ausdruck: beliebiger numerischer oder Zeichenkettenausdruck
Einordnung
Typ: Anweisung
Kontext: Ein/Ausgabe
Aufgabe: Ausgabe von Daten auf einen Ausgabekanal
Abkürzung: pR
Verwandte Befehle
CMD, PRINT, TAB, SPC

Anmerkung: Dieser Artikel beschreibt den BASIC-Befehl PRINT# unter BASIC V2 des Commodore 64.


Der BASIC-Befehl PRINT# dient zur Speicherung von Daten in einer Datei. Bevor der PRINT#-Befehl genutzt werden kann, muss die entsprechende Datei mit dem BASIC-Befehl OPEN geöffnet werden. Es muss bei der Benutzung von PRINT# die gleiche logische Dateinummer genutzt werden wie die im OPEN-Befehl angegebene.

Ein Ausdruck der Parameterangabe kann einen numerischen Wert oder eine Zeichenkette ergeben, doch für die Ausgabe werden die Ergebnisse in Zeichenketten umgewandelt, weshalb eine ausdrückliche Umwandlung von numerischen Ausdrücken (etwa numerische Variablen) in eine Zeichenkette (z.B. mit STR$) nicht mehr notwendig ist.

Als Trennzeichen für Ausdrücke bewirken Leerzeichen oder ein Semikolon (;) die nahtlose Aneinanderreihung der entsprechenden Werte.
Ein Komma (,) bewirkt das Einfügen von 10 Leerzeichen, sofern sich die Ausgabe nicht auf den Bildschirm bezieht, wo die Tabulatorfunktion einen Sprung an die nächste 10er-Spaltenposition führt.

Um die PRINT#-Ausgaben in Datenblöcke zu unterteilen und diese später mit INPUT# einlesen zu können, muss jeweils ein <RETURN>-Zeichen - CHR$(13) - gesetzt sein. Dies geschieht automatisch, außer wenn die PRINT#-Anweisung mit einem Komma (,), Semikolon (;) oder einer der Ausgabefunktionen SPC und TAB endet.

Ein Datensatz darf eine Länge von 88 Zeichen (exklusive <RETURN>-Zeichen) nicht überschreiten, damit dieser mittels INPUT# noch eingelesen werden kann. Andernfalls können die Daten nur noch mittels GET# zeichenweise eingelesen werden.

Achtung: Die Abkürzung für PRINT# ist pR (P  SHIFT +R ), nicht ?# !!
Auch wenn in einem Programm nach LIST ein ?# als PRINT# erscheint, wird das Kommando so nicht richtig interpretiert - es wird wie ein PRINT # aufgefasst (mit Leerzeichen), also als syntaktisch falsches, normales PRINT, was dementsprechend in einem ?SYNTAX ERROR endet. Das hängt damit zusammen, dass im Speicher die Befehle des BASIC-Programms als Tokens gespeichert werden, nicht als ausgeschriebener Befehl, und dass die Tokens für PRINT und PRINT# unterschiedlich sind.


[Bearbeiten] Beispiele

[Bearbeiten] Beispiel 1

10 OPEN 1, 1, 1, "TESTDATEI"
20 PRINT#1,"1. Datensatz" 
30 PRINT#1,"2. Datensatz","(nach 10 Zeichen Abstand) wird fortgesetzt";
40 PRINT#1," wird noch fortgesetzt"
50 PRINT#1,"3. Datensatz"+CHR$(13);
60 PRINT#1,"4. Datensatz"
70 CLOSE 1

Schreiben eines Datensatzdatei auf Datasette (zum Lesen siehe INPUT#).

[Bearbeiten] Beispiel 2

10 OPEN 2, 8, 4, "TESTDATEI,SEQ,W" 
20 PRINT#2,"1. Datensatz" 
30 PRINT#2,"2. Datensatz","(nach 10 Zeichen Abstand) wird fortgesetzt";
40 PRINT#2," wird noch fortgesetzt"
50 PRINT#2,"3. Datensatz"+CHR$(13);
60 PRINT#2,"4. Datensatz"
70 CLOSE 2

Schreiben einer sequenziellen Datei mit mehreren Datensätzen auf Diskette des 1. Diskettenlaufwerks (zum Lesen siehe INPUT#).

[Bearbeiten] Beispiel 3

100 OFF=2049: SIZE=1000
110 OH=INT(OFF/256): OL=OFF-OH*256
120 OPEN 1,8,1,"TESTDATEI"
130 PRINT#1,CHR$(OL);CHR$(OH);:REM DIE ERSTEN ZWEI BYTES EINER PRG-DATEI - LADEADRESSE LO/HIGH-BYTE
140 FOR I=OFF TO OFF+SIZE-1
150 A$=CHR$(PEEK(I))
160 PRINT#1,A$;
170 NEXT I
180 CLOSE 1

Schreiben eines beliebigen Speicherbereichs (spezifiziert in Zeile 100, hier: BASIC-Start $0801/2049) in eine Datei. Hier speichert sich das Programm selbst ab (wie SAVE).


In anderen Sprachen