POS

Aus C64-Wiki
Wechseln zu: Navigation, Suche
POS
Format: POS(<Hilfsargument>)
Parameter
<Hilfsargument>: beliebiger Ausdruck, ohne weitere Bedeutung
Einordnung
Typ: Ganzzahlige Funktion
Kontext: Ein/Ausgabe
Aufgabe: Ermittelt die aktuelle Spaltenposition des Cursors am Bildschirm
Abkürzung: -
Verwandte Befehle

Anmerkung: Dieser Artikel beschreibt die Funktion POS unter BASIC V2 des Commodore 64.


Die BASIC-Funktion POS() gibt die aktuelle Spaltenposition des Cursors am Bildschirm zurück.

Die Funktion liefert einen Wert im Bereich von 0 (1. Spalte) bis 39 (letzte Spalte).
Typ und Wert des im Hilfsargument angegebenen Ausdrucks werden ignoriert aber vom BASIC-Interpreter ausgewertet (muss also syntaktisch korrekt sein). Typischerweise wird POS(0) oder für ein optimiertes Laufzeitverhalten POS(π) benutzt.

Der Parameter Hilfsargument muss zwingend vorhanden sein, andernfalls wird die BASIC-Fehlermeldung ?SYNTAX ERROR ausgegeben.

Ein Fehler des BASIC-Interpreters offenbart sich, wenn in einem Programm (auch im Direktmodus) als Hilfsargument ein Wert vom Typ Zeichenkette verwendet wird (siehe Beispiele). Z.B. bewirkt eine konstante Zeichenkette als Parameter der POS()-Funktion beim dritten Aufruf, dass der String-Descriptor-Stack (für temporär erstellte Zeichenketten) voll ist, was nicht mehr bereinigt werden kann. Infolgedessen meldet der Interpreter diesen Zustand mit der Fehlermeldung ?FORMULA TOO COMPLEX ERROR. Die FRE()-Funktion, die ebenfalls mit einem Scheinparameter arbeitet, weist dieses Problem nicht auf.

Beispiele[Bearbeiten]

Erst die Schreibposition auf Spalte 30 (die 31.) setzen und dann abfragen und dort ausgeben:

PRINT TAB(30);POS(0)


Da POS() das angegebene Argument verlangt aber nicht verwendet, kann es so gewählt werden, dass die Laufzeit optimal ist (falls die Funktion intensiver bzw. iterativ zum Einsatz kommt):

100 DIM X
110 T=TI
120 FOR I=1 TO 1000
130 X=POS(π)
140 NEXT
150 PRINT TI/60;"SEKUNDEN"

Der Ausdruck im Argument von POS() evaluiert am schnellsten mit der Konstanten π (Pi), gefolgt von . (Dezimalpunkt, entspricht dem Wert 0), einer Variable (sofern sie früh definiert ist, wie etwa oben das "X") und am langsamsten mit einer Konstante wie z.B. "0". Das angeführte Beispiel lässt sich so von der langsamsten Variante um 20 % beschleunigen.


Fehler des Interpreters mit Zeichenkettenkonstanten als Hilfsargument:

PRINT POS("")POS("")POS("")

bricht mit Meldung ?FORMULA TOO COMPLEX ERROR ab!