DATA
Der BASIC-Befehl DATA dient dem Hinterlegen unveränderlicher Informationen (Konstanten), die per BASIC-Befehl READ der Reihe nach eingelesen werden können. Pro DATA-Zeile können mehrere Konstanten getrennt durch Kommas hinterlegt werden.
Die Daten aus den DATA-Zeilen werden immer von links nach rechts beginnend bei der ersten DATA-Zeile im Programm eingelesen, wobei die gerade aktuelle Position vermerkt wird (DATA-Zeiger).
Zeichen können entweder direkt oder in Anführungszeichen (dabei muss der
Wert einem solchen beginnen) hinterlegt werden. Die Zeichen Komma,
führende Leerzeichen, endende Leerzeichen ohne nachfolgendes
Komma-Trennzeichen, Doppelpunkt, Sonder- und Steuerzeichen müssen
zwingend in Anführungszeichen als Zeichenkettenkonstante angegeben
werden. Mit dem BASIC-Befehl RESTORE kann der Zeiger für die nächste zu
lesende DATA-Konstante zurückgesetzt (üblicherweise auf die erste DATA-Zeile im BASIC-Programm, ab BASIC 3.5 auch gezielt mit Zeilenauswahl).
Wird der falsche Variablentyp zum Einlesen beim BASIC-Befehl READ benutzt, so erscheint die BASIC-Fehlermeldung ?SYNTAX ERROR mit der Zeilennummernangabe für die entsprechende DATA-Zeile, die gerade verarbeitet wurde (das auslösende READ-Kommando wird hier nicht erwähnt und ist so auch nicht ohne weiteres feststellbar). Ab BASIC 3.5 lautet der Fehler hingegen ?TYPE MISMATCH ERROR und die Zeilenangabe verweist auf den auslösenden READ-Befehl.
DATA-Zeilen können beliebig im Programm verteilt sein, es ist aber günstig, sie ans Ende zu legen, um Sprungbefehle nicht zu verlangsamen.
Beispiele
Verschiedene Datentypen / besondere Zeichen einlesen
10 DATA 1, 2, 3, APFEL, "COMMODORE 64"
20 DATA ."GAENSEFUESSCHEN"
30 DATA "DIES ; IST : EIN # TEST , ODER ? "
40 READ A
50 READ B%, C, D$
60 READ E$
70 READ F$, G$
80 PRINT A, B%, C, D$, E$, F$ : PRINT "("G$")"
Es werden Leerzeichen, Anführungszeichen, Komma, Doppelpunkt in den Werten berücksichtigt bzw. behandelt. Ergibt die Ausgabe:
1 2 3 APFEL
COMMODORE 64 ."GAENSEFUESSCHEN"
(DIES ; IST : EIN # TEST , ODER ? )
Besonderheiten bei Leerzeichen in Zeichenketten
10 DATACOMMODORE 64
11 DATA COMMODORE 64 :
12 DATA COMMODORE 64 , COMMODORE 64
13 DATA " COMMODORE 64 "
20 READ A$,B$,C$,D$,E$
25 PRINT ,,"ZEICHENKETTENLAENGE":PRINT
30 PRINT A$, LEN(A$)
40 PRINT B$, LEN(B$)
50 PRINT C$, LEN(C$)
60 PRINT D$, LEN(D$)
70 PRINT E$, LEN(E$)
ZEICHENKETTENLAENGE
COMMODORE 64 12
COMMODORE 64 13
COMMODORE 64 13
COMMODORE 64 12
COMMODORE 64 14
B$ und C$ enthalten ein endendes Leerzeichen aufgrund des nachfolgenden Befehltrenners (“:”) bzw. Kommas, E$ durch die Anführungszeichen sowohl ein führendes als auch ein endendes Leerzeichen. Bei den übrigen Variablen werden weder führende noch endende Leerzeichen erkannt und gespeichert.