Nächste Seite: ASCII Aufwärts: Bibliotheksmoduln Vorherige Seite: Arguments

# Arts

Die Schnittstelle zu `Arts` 7.2 erlaubt den Zugriff auf einige Funktionen des Laufzeitsystems.

Das Modul `Arts` hat das Erscheinungsbild eines normalen Bibliotheksmoduls, bestehend aus einer Symbol- und einer Objektdatei. Die Aufgaben von `Arts` sind jedoch weitaus vielfältiger und spezieller. `Arts` ist das sogenannte Laufzeitsystem, das die Basis jedes Modula-2 Programms bildet. Es wird von jedem Modul implizit importiert; die Symboldatei muss daher für jedem Compilationsvorgang zugreifbar sein.

Die Variable `oldCurrentDir` enthält das aktuelle Verzeichnis des Prozesses beim Programmstart (`thisTask^.currentDir`). Bei Beendigung des Programmes wird dieser Wert wieder als aktuelles Verzeichnis angemeldet. Falls ein Programm das aktuelle Verzeichnis permanent wechseln möchte, wie beispielsweise das CLI-Kommando ,,CD``, muss das neue Verzeichnis in dieser Variablen vermerkt werden. Beim Start von der Workbench steht hier immer der Wert `NIL` -- was man auch nicht ändern darf --, die Prozedur `Startup` wechselt in diesem Fall jedoch in das Verzeichnis, in dem sich das Programm befindet.

Für den Anwender sind nur die letzten sechs Prozeduren allgemein verwendbar.

Die Prozedur `Assert` überprüft, ob eine Bedingung erfüllt ist, die für den korrekten Weiterlauf des Programmes unbedingt erforderlich ist. Ist diese Bedingung nicht erfüllt, erscheint ein Requester mit der angegebenen Meldung, und nach Beantwortung durch den Anwender wird das Programm abgebrochen.

`BreakPoint` erzeugt einen Requester und lässt dem Anwender die Wahl zwischen dem Abbruch oder der Fortführung des Programms. In erster Linie findet sie ihre Anwendung im Zusammenhang mit dem Post-Mortem-Debugger, wo sich dessen Aufrufmöglichkeit erzwingen lässt.

`Error` zeigt in einem Requester die beiden Texte `header` und `body` an und erzwingt einen Programm-Abbruch. Enthält der Parameter `body` den Wert `NIL`, wird nur eine Zeile Text angezeigt.

Die Darstellung eines Requesters kann mittels der Prozedur Requester mit den angegebenen Texten `header` und `body` erreicht werden. Die Felder `pos` und `neg` zeigen auf die Texte, die in die Gadgets geschrieben werden. Der Parameter `pos` kann auch `NIL` sein; dann enthält der Requester nur ein Gadget. Der Rückgabewert von `Requester` gibt an, welches Gadget gewählt wurde. Wurde das Gadget mit dem Text von `pos` ausgewählt, ist der Resultatswert `TRUE`, anderenfalls `FALSE`.

Die Prozedur `Terminate` beendet einfach das Programm. Der in diesem Moment in der Variablen `returnVal` enthaltene Wert dient als Rückgabewert an das Betriebssystem. Ähnlich arbeitet `Exit`. Hier kann allerdings der Rückgabewert explizit angegeben werden.

Nächste Seite: ASCII Aufwärts: Bibliotheksmoduln Vorherige Seite: Arguments