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: