LOCAL

Aus C64-Wiki
Wechseln zu: Navigation, Suche
LOCAL
Format: LOCAL <v1> [, <v2>] ...
Parameter
v1: Variablenname ...
Einordnung
Typ: Anweisung
Kontext: Strukturkontrolle
Aufgabe: Definieren lokal gültiger Variablen
Abkürzung: keine
Verwandte Befehle
GLOBAL


Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort LOCAL.

Typ: Anweisung
Syntax: LOCAL <v1> [, <v2>] ...

LOCAL dient dazu, Variableninhalte zu definieren, die nur an bestimmten Stellen des Programms Gültigkeit haben. Normalerweise sind Variablen in der Programmiersprache BASIC programmweit gültig, einmal ein Wert zugewiesen, kann dieser Wert überall im Programm wieder abgerufen werden. Was wie ein Vorteil klingt, kann sehr schnell zum Nachteil werden: Bei großen Programmvorhaben darf man nämlich nicht den Überblick über den momentanen Inhalt einer Variable verlieren, sonst reagiert das Programm irgendwann auf unvorhergesehene Weise und die Fehlersuche ist äußerst langwierig. Andere Programmiersprachen wie z.B. Pascal oder C sorgen schon von vornherein dafür, dass diese Hürde klein bleibt, denn dort gelten Variablen zunächst einmal ausschließlich lokal (nur innerhalb einer Prozedur oder Funktion).

Da auch Simons' Basic Prozedur-Befehle kennt (EXEC, PROC), liegt es nur nahe, dass auch eine Möglichkeit geschaffen wurde, nur dort gültige Variablen zu benutzen. Dies wird mit LOCAL zum Teil erreicht. Intern nämlich werden die lokalen Variablen in einer Liste geführt. Solange eine lokale Variable aktiviert ist, wird ihr globales Pendant unkenntlich gemacht, jedoch aber nicht gelöscht. Endet der lokale Bezug, tritt die alte, globale Variable wieder ein, mit ihren bis dahin gültigen Inhalten. Wird nun die lokale Variable erneut aktiviert, passiert das Gleiche wie oben beschrieben. Bedauerlich ist nun, dass lokale Variablen nicht an eine bestimmte Prozedur gebunden sind, sondern überall sonst auch ihren vorherigen lokalen Wert wieder erhalten! Somit ist die Lokalität von LOCAL höchst eingeschränkt. Außerdem beanspruchen sie für jede Variable zusätzlichen Platz im freien BASIC-Speicher.

Hinweis: Feldvariablen (Arrays) können nicht mit LOCAL bearbeitet werden.

Beispiel: 

100 a=1: b%=10 : c$="test"
110 PRINT "dies ist ein test:"
120 PRINT "a="a; "b%="b%; "c$= "c$
130 EXEC prozedur
140 PRINT "zurueck im hauptprogramm:"
150 PRINT "a="a; "b%="b%; "c$= "c$
160 PRINT "test beendet."
170 END
999 :
1000 PROC prozedur
1010 LOCAL a, b%, c$
1020 a=100: b%=-10: c$="lokal"
1030 PRINT "und hier innerhalb der prozedur: "
1040 PRINT "a="a; "b%="b%; "c$= "c$
1050 GLOBAL
1060 END PROC

(Die PRINT-Ausgabe wird dreimal wiederholt, vor, während und nach der lokalen Phase)