SPC

Aus C64-Wiki
(Weitergeleitet von SPC()
Wechseln zu: Navigation, Suche
SPC
Format: SPC(<Positionsversatz>)
Parameter
<Positionsversatz>: numerischer Ausdruck im Wertebereich von 0 bis 255
Einordnung
Typ: Ausgabefunktion
Kontext: Ein/Ausgabe
Aufgabe: versetzt die aktuelle Ausgabeposition um einen Positionsversatz nach rechts
Abkürzung: sP (ergibt "SPC(")
Verwandte Befehle
POS, TAB

Anmerkung: Dieser Artikel beschreibt die BASIC-Ausgabefunktion SPC unter BASIC V2 des Commodore 64.


Hinter der BASIC-Ausgabefunktion SPC() steht das BASIC-Schlüsselwort "SPC(" − die öffnende Klammer ist inkludiert. Am Bildschirm wird der Cursor um die im Argument Positionsversatz angegebene Zahl nach rechts bewegt (ohne Überschreiben am Bildschirm dargestellter Zeichen). Die Cursor-Spaltenposition, die mittels Funktion POS() abfragbar ist, wird entsprechend aktualisiert.
Bei der Ausgabe in eine Datei werden tatsächlich Leerzeichen (PETSCII-Code 32) in der jeweiligen Anzahl geschrieben. Die Ausgabefunktion SPC kann mehrfach in einer Zeile verwendet werden, ist aber nur im Zusammenhang mit den Befehlen PRINT bzw. PRINT# und CMD erlaubt, andernfalls kommt es zur Fehlermeldung ?SYNTAX ERROR.

Das einzige Argument Positionsversatz darf einen Wert von 0 bis 255 annehmen, ansonsten wird die BASIC-Fehlermeldung ?ILLEGAL QUANTITY ERROR ausgegeben. Ist das Argument kein Zahlenwert, so erscheint die BASIC-Fehlermeldung ?TYPE MISMATCH ERROR. Fehlt das Argument, so wird ?SYNTAX ERROR gemeldet.

Wird die letzte Zeichenposition in der aktuellen Druckerzeile erreicht, führt ein Drucker automatisch einen Wagenrücklauf und einen Zeilenvorschub aus (Zeilenumbruch wie auch am Bildschirm).

Wenn die Ausgabe sich nicht auf den Bildschirm bezieht, dann produzieren SPC(10), TAB(10) und Komma (,) ein jeweils identisches Ergebnis.

Beispiele[Bearbeiten]

PRINT "DER" SPC(5) "COMMODORE" SPC(15) "64" SPC(255) "LEBT !!!"

Mit SPC wird der Text durch leere Zeichen formatiert, sodass Abstände (ohne Zeichen) zwischen den Wörtern entstehen.

PRINT CHR$(147) "HIER STEHT EIN TEXT"
PRINT CHR$(19) SPC(5)"STAND"

Bei diesem Beispiel wird nach dem Löschen des Bildschirms mit Hilfe von SPC nur das Wort STEHT des Textes in der ersten Zeile durch das Wort STAND überschrieben (siehe Steuerzeichen).

10 OPEN 1,8,2,"OUT,S,W"
20 PRINT#1,"VERY LARGE RECORD" SPC(255) SPC(255) SPC(255) SPC(255)
30 CLOSE 1

Erzeugt eine sequenzielle Datei mit 1038 Zeichen (inkl. Wagenrücklaufzeichen mit PETSCII-Code 13, als End of record). Das Einlesen mit INPUT# funktioniert dann aber nicht mehr, aber ein zeichenweises Einlesen via GET# wäre, wenn auch langsam, möglich.

Syntax-Besonderheiten[Bearbeiten]

10 PRINT "DIE ZEILE ..." SPC(0)
20 PRINT "GEHT WEITER!"

Sonderfall: Am Ende eines PRINT-Befehls verhält sich SPC wie ein Semikolon (;).

PRINT#1,SPC(255)+"XYZ"

Schreibt einen Dateisatz mit Länge von 258 Zeichen. Dabei wird das Plus (+) als Trenner, nämlich wie ein Semikolon (;), und nicht als String-Operator interpretiert.

PRINT "X"+SPC(255)

Im Gegensatz zum vorigen Beispiel ist hier das Plus (+) ein String-Operator, da an dieser Stelle eine Ausdrucksauswertung stattfindet und dabei die in dieser Umgebung nicht erlaubte Funktion SPC angetroffen wird kommt es auch zum Abbruch mit dem Fehler ?SYNTAX ERROR.

X-Y-Cursor-Positionierung[Bearbeiten]

10 GOTO 200
100 PRINT CHR$(19)SPC(Z*10)SPC(Z*10)SPC(Z*10)SPC(Z*10)SPC(S):RETURN
200 S=13: Z=12: GOSUB 100: PRINT "BILDSCHIRMMITTE"

Dieses Unterprogramm positioniert den Cursor an die Bildschirmposition der Spalte S in Zeile Z (Spalten und Zeilen werden von 0 beginnend gezählt, Ursprung oben links).