Zurück Weiter Kapitel

Die Ausführungsumgebung

Hinweis:

Die folgenden Informationen richten sich an erfahrene Amiga-Benutzer. Sie setzen ein Grundlagenwissen über das Amiga-Betriebssystem und die Kenntnis der Amiga ROM Kernel Manuals voraus.

Der ARexx-Interpreter RexxMast bietet eine einheitliche Ausführungsumgebung, indem er jedes Programm als separaten Prozeß im Multitasking-Betriebssystem des Amiga ausführt. Damit verfügen Sie über eine flexible Schnittstelle zwischen einem externen Host-Programm und RexxMast. Das Host-Programm kann seine Operationen entweder gleichzeitig ausführen oder warten, bis das interpretierte ARexx-Programm abgeschlossen ist. Jedes ARexx-Programm besitzt eine externe und eine interne Umgebung.

Externe Umgebung

Zur externen Umgebung eines Programms gehören seine Prozeßstruktur, die Ein- und Ausgabeströme sowie das aktuelle Verzeichnis. Bei der Erstellung jedes ARexx-Prozesses übernimmt dieser die Ein- und Ausgabeströme von einem Klienten, also dem externen Programm, das das ARexx-Programm aufrief. Wurde z.B. ein ARexx-Programm von einer Shell aus gestartet, übernimmt das ARexx-Programm die Ein- und Ausgabeströme sowie das aktuelle Verzeichnis dieser Shell. Die Suche nach einer Programm- oder Datendatei geht dann vom aktuellen Verzeichnis aus. Für externe Funktionen gilt ein Maximum von 15 Argumenten.

Interne Umgebung

Die interne Umgebung eines ARexx-Programms besteht aus einer statischen globalen Struktur und einer oder mehreren Speicherumgebungen. Die globalen Datenwerte sind zum Zeitpunkt des Programmaufrufs feste Werte (statisch). Zu diesen Werten gehören der Quelltext des Programms, statische Datenzeichenfolgen und Argumentzeichenfolgen. Sobald das Programm läuft, können diese Werte nicht mehr geändert werden.

ARexx-Programme, die als Kommandos aufgerufen werden, besitzen in der Regel nur eine Argumentzeichenfolge, auch wenn die Möglichkeit zur Aufspaltung des Kommandos (Tokensierung) die Möglichkeit zur Verwendung mehrerer Argumentzeichenfolgen bietet. Ein als interne Funktion aufgerufenes Programm kann eine beliebige Anzahl Argumente besitzen. Diese Argumente bleiben für die Dauer des Programmablaufs bestehen.

Die Speicherumgebung umfaßt die Symboltabelle, die für Variablenwerte benutzt wird, numerische Optionen, Ablaufverfolgungsoptionen und Host-Adreßzeichenfolgen. Während der Programmausführung kann es nur eine globale Umgebung, aber mehrere Speicherumgebungen geben. Bei jedem Aufruf einer internen Funktion wird eine neue Speicherumgebung aktiviert und initialisiert. Die Ausgangswerte für die meisten Felder werden aus der vorherigen Umgebung übernommen. Werte können jedoch später geändert werden, ohne daß sich dies auf die Umgebung der Aufrufebene auswirkt. Die neue Umgebung bleibt so lange bestehen, bis die Funktion die Steuerung zurückgibt.

Zu jeder Speicherumgebung gehört eine Symboltabelle. Sie dient zum Speichern der Wertzeichenfolgen, die den Variablen zugewiesen werden. Diese Symboltabelle ist in Form eines aus zwei ebenen bestehenden, binären Baums aufgebaut. Die Primärebene speichert Einträge für einfache Symbole und Stammsymbole, die Sekundärebene wird für zusammengesetzte Symbole verwendet. Alle zusammengesetzten Symbole, die den gleichen Stamm besitzen, werden in einem Baum gespeichert, wobei der Eintrag für den Stamm die Wurzel des Baumes bildet.

Symbole werden erst nach einer erfolgten Zuweisung in die Tabelle aufgenommen. Einmal auf der Primärebene erstellte Einträge werden niemals gelöscht, selbst wenn die Initialisierung des Symbols später rückgängig gemacht wird. Sekundäre Bäume werden freigegeben, wenn eine Zuweisung an den zu diesem Baum gehörenden Stamm erfolgt.

Betriebsmittelverwaltung

ARexx bietet eine vollständige Verwaltung aller dynamisch zugeordneten Betriebsmittel (Resource-Tracking), die zur Ausführung eines Programms verwendet werden. Zu diesen Ressourcen zählen Speicherplatz, DOS-Dateien und verwandte Strukturen sowie die Message-Port-Struktur. Dieses Verwaltungssystem ist so ausgelegt, daß bei einem Programmabbruch zu einem beliebigen Zeitpunkt keine blockierten Betriebsmittel zurückgelassen werden.

Durch direkte Aufrufe des Amiga-Betriebssystems von einem ARexx-Programm aus ist es möglich, das System der Betriebsmittelverwaltung des Interpreters zu übergehen. In diesem Fall ist es Aufgabe des Programmierers, alle Betriebsmittel, die sich außerhalb des ARexx-Betriebsmittelverwaltungssystems befinden, zu kontrollieren und zurückzugeben. ARexx bietet eine spezielle Interrupt-Einrichtung, so daß ein Programm nach einem Ausführungsfehler die Steuerung behalten, die erforderliche Bereinigung ausführen und ordnungsgemäß beendet werden kann.

Hoch Zurück Weiter Kapitel