a) Anweisung, die das Ende der Ausführung eines Programms oder einer Funktion signalisiert und die obere Grenze des benutzten Speichers übergibt.
b) Anweisung zum Setzten der höchsten von BASIC benutzten Adresse.
c) Funktion zur *bergabe der Adresse des Endes der BASIC-Variablen.
Syntax: als Anweisung:
a)
END
b)
END = Ausdruck
als Funktion:
c)
END
Zweck: a) Die END Anweisung schließt die Ausführung eines Programms ab.
Hinweis: Diese Anweisung ist nicht in allen Programmen erforderlich, da die Ausführung in jedem Fall anhält, wenn die letzte Zeile des Programms abgearbeitet ist. Allerdings ist die END Anweisung (oder
STOP) obligatorisch, wenn die Programmausführung an einer anderen Stelle als am Ende des Programms aufhören soll. Nur so kann ein ordungsgemäßer Programmablauf gewährleistet werden, wenn dem Hauptprogramm Prozeduren, Funktionen oder Unterroutinen angehängt sind. END ist auch in Fehlerbehandlungsprogrammen nützlich.
b) Bei Verwendung innerhalb einer Zuweisung setzt END die höchste von BASIC unter WIMP benutzte Adresse. Von dieser Möglichkeit können Programme Gebrauch machen, die unter WIMP laufen, um mehr Speicher aus dem Pool zu beanspruchen bzw. um überflüssigen Speicher wieder freizugeben.
Der Ausdruck sollte eine Integer-Zahl mit dem neuen Wert für
HIMEM sein. Nach dem Aufruf wird der Speicherplatz über der genannten Adresse freigegeben und HIMEM auf diese Position gesetzt. Außerdem werden lokale Arrays und installierte Libraries gelöscht. Da HIMEM die Adresse des Stapelanfangs enthält, sollte diese Anweisung nicht verwendet werden, solange sich etwas im Stapel befindet. Im Klartext: END sollte nicht innerhalb von
PROCs,
FNs oder Schleifenkonstruktionen verwendet werden.
Wenn nicht genug Speicher frei ist, um HIMEM auf den angeforderten Wert zu setzen, wird die Fehlermeldung
Attempt to allocate insufficient memory provoziert.
c) Die END Funktion übergibt die Adresse der oberen Speicheradresse, die von einem Programm und seinen Variablen benutzt wird. Der Ausdruck END-
TOP gibt die Anzahl der durch die Variablen benutzten Bytes (mit Ausnahme der
LOCAL arrays) sowie der
OVERLAY- und
LIBRARY-Bibliotheken.
Beispiele:
PRINT END
END=&10000 :REM braucht nur 32k zum Laufen