SPC(

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

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

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

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).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Datenschutz
Ich, Andreas Hoever (Wohnort: Deutschland), verarbeite zum Betrieb dieser Website personenbezogene Daten nur im technisch unbedingt notwendigen Umfang. Alle Details dazu in meiner Datenschutzerklärung.
Datenschutz
Ich, Andreas Hoever (Wohnort: Deutschland), verarbeite zum Betrieb dieser Website personenbezogene Daten nur im technisch unbedingt notwendigen Umfang. Alle Details dazu in meiner Datenschutzerklärung.