Mit der AREA-Anweisung werden Namen, Eigenschaften und Reihenfolge zusätzlicher gemeinsam verwendbarer Datenbereiche (Areas) definiert. Die Struktur dieser Areas ist von openUTM nicht vorgegeben, sondern frei definierbar. Die Adressen solcher Areas werden den Teilprogrammen beim Programmstart als Parameter übergeben, zusammen mit den Adressen von KB und SPAB.
Jede Area, die von openUTM verwaltet werden soll, ist mit einer eigenen AREA-Anweisung zu definieren. Die Reihenfolge der AREA-Anweisungen gibt die Reihenfolge vor, in der die Areas in der Parameterliste angegeben werden müssen und im Teilprogramm zu deklarieren sind (z.B. auf BS2000-Systemen in der LINKAGE-SECTION in COBOL). Wird die an n-ter Stelle definierte Area benötigt, so müssen sowohl in der Parameterliste als auch in der Datendeklaration alle Areas bis zu dieser angegeben bzw. deklariert werden.
Innerhalb eines Generierungslaufs können maximal 99 AREA-Anweisungen angegeben werden.
Areas auf BS2000-Systemen generieren
Areas auf BS2000-Systemen können abgelegt sein:
im anwendungsglobalen Common Memory Pool (für alle Anwendungen).
im anwendungslokalen Common Memory Pool (für alle Prozesse von Anwendungen, die unter derselben Benutzerkennung gestartet wurden).
in nichtprivilegierten Subsystemen.
im gebundenen Anwendungsprogramm.
Für die AREA-Anweisung gilt Folgendes:
Wenn Sie den Operanden LOAD-MODULE= angeben, müssen Sie zusätzlich eine LOAD-MODULE-Anweisung schreiben. Beachten Sie, dass kein Lademodul referenziert werden darf, das mit LOAD-MODULE ...LOAD-MODE=ONCALL generiert ist.
AREA-Anweisungen, die den Operanden LOAD-MODULE nicht enthalten, definieren Areas, die statisch zum Anwendungsprogramm dazugebunden werden.
DEFAULT-Werte für AREA werden über die Anweisung DEFAULT PROGRAM eingestellt
|
|
areaname | Name der Area. areaname ist alphanumerisch und kann max. 32 Zeichen lang sein. areaname muss ein Modul sein. |
LOAD-MODULE=lmodname | |
lmodname kann max. 32 Zeichen lang sein. LOAD-MODULE= bezeichnet den Namen des Lademoduls, in den das Modul gebunden ist. Das Lademodul muss mit einer LOAD-MODULE-Anweisung definiert werden. Dieses Lademodul darf nicht mit dem Operanden LOAD-MODE=ONCALL generiert werden. |
Areas auf Unix-, Linux- und Windows-Systemen generieren
Eine Area müssen Sie als externe C/C++-Datenstrukturen selbst definieren, übersetzen und zum Teilprogramm binden.
In der AREA-Anweisung können Sie festlegen, ob die Area direkt an das Teilprogramm übergeben wird, oder indirekt als Zeiger auf die Area zur Verfügung gestellt wird. Beim indirekten Zugriff muss der Zeiger vor dem Start des ersten Teilprogramms mit der Adresse der Area versorgt werden. Die Adresse können Sie zum Übersetzungszeitpunkt setzen oder während des Anwendungslaufs, z.B. im Event-Exit START.
|
|
areaname | Name der Area. areaname ist alphanumerisch und kann max. 32 Zeichen lang sein. areaname muss ein Modul sein. |
ACCESS= | gibt an, wie der Zugriff auf die Area erfolgt. |
DIRECT | Die Area wird direkt als C-Datenstruktur definiert. Standard: DIRECT |
INDIRECT | Die Area areaname wird als Zeiger definiert. Der Zeiger areaname muss mit der Adresse der Area versorgt werden. Es ist möglich, dass Sie die Adresse erst während des Anwendungslaufs setzen, z.B. können Sie im Event-Exit START den Zeiger mit der Adresse eines Shared Memory versorgen. |