INPUT

Aus C64-Wiki
Wechseln zu: Navigation, Suche
Begriffsklärung Der Titel dieses Artikels ist mehrdeutig. Weitere Bedeutungen finden sich unter INPUT (Begriffsklärung).
INPUT
Format: INPUT ["<Kommentar>";]<Variable>[,<Variable>…]
Parameter
<Kommentar>: Beliebiger Text in Hochkommas, aber keine Variablen
<Variable>: Variable beliebigen Typs zur Übernahme der eingegeben Daten
Einordnung
Typ: Anweisung
Kontext: Ein/Ausgabe
Aufgabe: Eingabe von Daten über die Tastatur
Abkürzung: -
Verwandte Befehle
GET, GET#, INPUT#

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


Der BASIC-Befehl INPUT dient zur Eingabe von Daten innerhalb eines BASIC-Programms. Nach dem Kommentar (eine Zeichenkettenkonstante), der auch entfallen kann, wird ein Fragezeichen (?) als Prompt angezeigt und danach wartet der blinkende Cursor auf die Dateneingabe. Die Dateneingabe wird in Variablen (wahlweise Zeichenkette- oder Zahlvariablen) gespeichert, nachdem die Dateneingabe mit der Taste RETURN  beendet wurde.
Gewisse Zeichen haben bei der Eingabe eine Sonderstellung:

  • Komma (,) - Trennt mehrere Eingabewerte (mehrfache Variablenangaben bei einem INPUT-Befehl). Umgehung mittels Anführungszeichen möglich.
  • Doppelpunkt (:) - Nachfolgende Zeichen werden ignoriert. Umgehung mit Anführungszeichen möglich.
  • Leerzeichen - Vor dem ersten Nicht-Leerzeichen (auch nach einem Komma) werden ignoriert. Solche vor einem Komma oder Doppelpunkt bleiben erhalten. Umgehung mittels Anführungszeichen möglich.
  • Anführungszeichen (") am Beginn (abgesehen von Leerzeichen) - Damit ist auch die Eingabe von Komma und Doppelpunkt möglich. Die Eingabe muss nicht zwingend mit einem Anführungszeichen enden, aber falls ein Anführungszeichen vorkommt, muss es am Schluss der Eingabe befinden, andernfalls wird nach der Meldung ?REDO FROM START erneut die Eingabe verlangt.

Sollte bereits im Text des Kommentarparameters darauf hingewiesen werden, dass mehrere Dateneingaben erwartet werden, kann der Benutzer die geforderten Dateneingaben bereits getrennt durch Kommas (,) eingeben. Dies umgeht das Verhalten, bei dem der INPUT-Befehl sonst nochmals mit Doppelfragezeichen (??) auf weitere erforderliche Dateneingaben hinweist und erneut auf deren Eingabe wartet. Werden hierbei zu viele Daten durch Kommas (,) getrennt eingegeben, wird die BASIC-Fehlermeldung ?EXTRA IGNORED ausgegeben. Das heißt, die zu viel eingegebenen Daten werden ignoriert und nicht in den Variablen abgespeichert.

Falls keine Dateneingabe erfolgt und nur die Taste RETURN  gedrückt wird, entspricht das einer Leereingabe und diese verändert den Variableninhalt nicht (was allerdings voraussetzt, dass dort, wo die Eingabe erfolgt auch tatsächlich der Bildschirminhalt "leer" ist, siehe weiter unten Vorgabewerteingaben).
Befindet sich an der Eingabeposition bereits ein Text (bzw. bewegt man den Cursor zu einem Bildschirmbereich, der bereits einen Inhalt aufweist), so kann dieser einfach mittels RETURN  übernommen werden.
Der Bildschirmeditor erlaubt lediglich die Eingabe von maximal 80 Zeichen. Gleichzeitig, erlauben die Cursor-Tasten das Navigieren durch den gesamten Bildschirmbereich und auch das Scrollen des Bilderschirminhaltes, was die kontrollierte Verwendung im Hinblick auf den Bildschirminhalt, aber auch Umfang und Inhalt der Eingabe unmöglich macht.

Die BASIC-Meldung ?REDO FROM START tritt bei einer

  1. Zahlvariable auf, wenn die Eingabe keinen Zahlenwert beinhaltet oder
  2. Zeichenkettenvariable auf, wenn die Eingabe eine falsche Quotierung des Inhaltes mit Anführungszeichen ("), z.B. "A"B aufweist.

Das heißt, die Syntax der Eingabe ist nicht die erwartete und die Dateneingabe muss erneut getätigt werden. Um diese BASIC-Meldung im ersten Fall zu vermeiden, empfiehlt es sich, für das Einlesen stets Zeichenkettenvariablen zu verwenden.
Im Falle der Überschreitung des erlaubten Wertebereichs tritt bei einer Ganzzahlvariable die Fehlermeldung ?ILLEGAL QUANTITY ERROR und bei einer Fließkommavariable ?OVERFLOW ERROR auf.
Falls der INPUT-Befehl nicht innerhalb von BASIC-Programmen verwendet wird, erscheint die BASIC-Fehlermeldung ?ILLEGAL DIRECT ERROR.

Während der Eingabe hat die RUN/STOP  keine Wirkung, bestenfalls in der Kombination RUN/STOP +RESTORE  kann ein Abbruch erzwungen werden bzw. auch normal im Programmablauf zwischen INPUT-Aufrufen.

[Bearbeiten] Beispiele

Variationen der Eingabe in Anzahl und Variablentypen:

10 INPUT "IHRE EINGABE BITTE "; A$
20 INPUT "BITTE NUR ZAHLENWERTE (2 MAL) "; A1, A2%
40 PRINT: PRINT "IHRE EINGABEN WAREN BISHER: " A$, A1, A2%
50 PRINT: PRINT "NUN BITTE WIEDER ZAHLENWERTE (3 MAL) ";
60 INPUT A1%, B, Z
70 PRINT: PRINT "UND NUN 3 MAL IST ALLES MOEGLICH ";
80 INPUT A$, B$, C$
90 PRINT: PRINT "SIE GABEN DIESMAL EIN: "; A1%, B, Z, A%, B$, C$

Abfrage mit Vorgabewert:

10 PRINT "{clr}JAHR  2014{left}{left}{left}{left}{left}{left}";
20 INPUT JA$
30 PRINT "JAHRESANGABE: ";JA$

Gibt man nur RETURN  ein, wird der bereits angezeigt Wert 2014 in die Variable JA$ übernommen.

Auswirkung von Sonderzeichen bzw. diese einlesen:

10 INPUT "ZEICHENKETTE";Z$
20 PRINT "<"Z$">"
30 GOTO 10
RUN
ZEICHENKETTE? " :,-( "
< :,-( >
ZEICHENKETTE? ABC:DEF
<ABC>
ZEICHENKETTE? 10LEERZEICHEN         :
?EXTRA IGNORED
<10LEERZEICHEN          >


In anderen Sprachen