next up previous
Nächste Seite: Import-Alias Aufwärts: Systemspezifische Besonderheiten Vorherige Seite: Systemspezifische Besonderheiten


Abschlussprozeduren (CLOSE)

Der Modulrumpf eines -Programmes hat die Aufgabe, einen definierten Zustand zu schaffen. Oft werden dabei Betriebsmittel reserviert, beispielsweise wird Speicher alloziert, Dateien oder Fenster geöffnet. Bei Programmende besteht für das Programm keine Möglichkeit, die Betriebsmittel wieder freizugeben. Da das Betriebssystem des Amigas die Betriebsmitel zwar vergibt, aber nicht kontrolliert, bleiben diese auch nach Programmende reserviert5.2Daher musste ein Mechanismus gefunden werden, der die Freigabe nach dem Programmende ermöglicht. Dies gilt besonders für fehlerhafte Programme, bei denen der Programmabbruch an einer beliebigen Stelle möglich ist.

bietet dafür das Konzept des Abschlusscodes. Jedes Implementations- oder Programmodul kann einen Codeteil enthalten, der bei Programmende oder bei einem ,,Absturz`` aufgerufen wird. Dafür gibt es in diesem Compiler eine syntaktische Erweiterung: das reservierte Wort CLOSE. Es darf nur innerhalb des Modulblockes eines Implementations- oder Programmoduls angegeben werden. Dieses Wort beendet syntaktisch den Initialisierungsteil des Moduls und leitet den Teil ein, der beim Programmende ausgeführt wird. Im weiteren Verlauf wird dieser Teil auch Close-Phase genannt.


\begin{note}
Genau wie f\uml {u}r die Initialisierungsphase, w\uml {a}hrend der...
...importierte Prozeduren auch w\uml {a}hrend der Close-Phase benutzbar.
\end{note}


\begin{warning}
Alle {\tt CLOSE}-Teile sollten sehr robust und mehrfach aufrufba...
...l-Freigabe oder gar zu
einer endlosen Schleife f\uml {u}hren kann!
\end{warning}


\begin{example}
Beispiel:
\begin{verbatim}IMPLEMENTATION MODULE Terminal;
IMPO...
...geschlossen
wird, wenn kein anderes Modul es mehr ben\uml {o}tigt.
\end{example}

Auf ähnliche Weise schliessen die Moduln FileSystem und SeqIO alle offenen Dateien, wie auch Heap und Storage alle zuvor allozierten Speicherbereiche wieder freigeben. Insbesondere das Modul DosSupport, das bei Benutzung alle Directory-Locks und offenen Dateien verwaltet, sei in diesem Zusammenhang empfohlen. Fehlerhafte Programme verhindern somit das Entstehen von ,,unsauberen`` Situationen und ersparen einen Neustart des gesamten Systems.


next up previous
Nächste Seite: Import-Alias Aufwärts: Systemspezifische Besonderheiten Vorherige Seite: Systemspezifische Besonderheiten
Claudio Nieder 2000-11-12