next up previous
Nächste Seite: Compiler-Anweisungen im Quelltext Aufwärts: Compiler-Optionen Vorherige Seite: Compiler-Optionen

Wirkungs- und Veränderungs-Bereiche

Jede Option hat zu Beginn einer Compilationseinheit einen Vorgabewert. Dieser Wert wird beim Aufruf des Compilers von ihm eingestellt, kann jedoch von der Kommandozeile oder interaktiv vom Bediener verändert werden. Während der Compilation kann der Zustand von Optionen innerhalb des Quelltextes verändert werden. Er gilt dann -- von einigen Ausnahmen abgesehen -- bis zur nächsten Änderung im Quelltext. Nach der Compilation werden alle Optionen wieder auf ihren vom Compiler oder Bediener eingestellten Vorgabewert gesetzt, so dass die nächste Compilation mit den gleichen Bedingungen abläuft.

Während der Compilation können gewisse Optionen vom Compiler ,,eingefroren`` werden. Dies bedeutet, eine Veränderung ist nach dieser Stelle im Quelltext nicht erlaubt, bis der Compiler die Option wieder freigibt. Eine dennoch versuchte Änderung erzeugt eine Fehlermeldung.

Einige Optionen müssen für eine ganze Compilationseinheit den gleichen Wert besitzen. Sie werden nach dem Modulkopf eingefroren und nicht wieder freigegegeben. Das Setzen oder Verändern dieser Optionen ist nur bis zum Beginn der IMPORT-Liste oder der ersten Deklaration erlaubt. Wir nennen dies im folgenden pro Modul oder modulbezogen.

Andere Optionen müssen innerhalb einer Prozedur oder eines Moduls gleich bleiben. Sie werden bei der BEGIN-Anweisung der Prozedur eingefroren und bei der zugehörigen END-Anweisung der Prozedur wieder freigegeben. Hat eine Prozedur keine BEGIN-Anweisung, so fallen das Einfrieren und Freigeben zusammen.

Die Optionen teilen sich in zwei Gruppen:

stapelbar
bedeutet, dass diese Option an jeder beliebigen Stelle im Quelltext gesetzt oder gelöscht werden darf. Der alte Wert wird intern in einem Stapel vermerkt. Er kann auch wieder vom Stapel geholt werden. Eine Änderung darf nur erfolgen, wenn die Option nicht eingefroren ist.
bereichsbezogen
sind Optionen, die nur für einen bestimmten Bereich gültig sind, im Normalfall eine Prozedur. Sie dürfen nicht beliebig verändert, sondern nur für die nächste Prozedur auf das Gegenteil ihres Vorgabewertes gesetzt werden. Das Holen vom Stapel oder das Setzen auf den Vorgabewert führt zu einer Fehlermeldung. Die Wirkung erstreckt sich über diese Prozedur und der Wert wird danach wieder automatisch mit dem Vorgabewert besetzt.


\begin{example}
Zum Beispiel hat die bereichsbezogene Option {\tt LoadA4}
den Vo...
...Wert {\tt TRUE} und
wird danach automatisch wieder zu {\tt FALSE}.
\end{example}


\begin{warning}
Bei verschachtelten Prozeduren ist Vorsicht geboten! Der Ort der...
...UE *) (* RICHTIG!! *)
BEGIN
END Handler;\end{verbatim}\end{example}\end{warning}


next up previous
Nächste Seite: Compiler-Anweisungen im Quelltext Aufwärts: Compiler-Optionen Vorherige Seite: Compiler-Optionen
Claudio Nieder 2000-11-12