Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Funktion ENABLE IOAREA POOL

Es wird ein IO-Area-Pool eingerichtet oder der Aufrufer an einen bestehenden gekoppelt. In die Parameterliste wird eine Kennung eingetragen (FPAMIPID), die bei den folgenden OPEN Aufrufen zu benutzen ist. Wenn dabei dieselbe Parameterliste benutzt wird, ist die Kennung bereits eingetragen und muss daher nicht beachtet werden. Von der Funktion ENAIPO werden nur die nachfolgend beschriebenen Funktionsoperanden ausgewertet.

Format FCT=*ENAIPO

Operation

Operanden

FPAMSRV

[,FCT = *ENAIPO / adr / (r)]

[,IPONAME = 'name' / adr / (r)]

[,IPOADDR = (elem1,elem2)]

[,IPOSIZE = größe / adr / (r)]

[,RES = *NOT_SPECIFIED / *NO / *YES / adr / (r)]

MF = L

MF = E,PARAM = adr / (r)

MF = D[,PREFIX = F / pre]


MF = C / M

[,PREFIX = F / pre]

[,MACID = PAM / macid]

Operandenbeschreibung

FCT

Bestimmt die auszuführende FASTPAM-Funktion.

Bei der Form MF=L ist nur die direkte Angabe erlaubt.

= *ENAIPO
Ist die direkte Angabe der Funktion ENABLE IOAREA POOL.

Es wird ein IO-Area-Pool eingerichtet oder der Aufrufer an einen bestehenden IO-Area-Pool gekoppelt.
In die Parameterliste wird eine Kennung eingetragen (FPAMIPID), die bei den folgenden OPEN-Aufrufen zu benutzen ist. Wenn dabei dieselbe Parameterliste benutzt wird, ist die Kennung bereits eingetragen und braucht daher nicht beachtet zu werden.

= adr
Ist die symbolische Adresse eines 1 Byte langen Feldes, das den Wert für die auszuführende Funktion ENABLE IOAREA POOL enthält.

= (r)
Ist ein Register, das den Wert für die Funktion ENABLE IOAREA POOL enthält.

IPOADDR

Bestimmt mittels einer Liste von 2 Elementen die Lage des IO-Area-Pools in einem Datenraum (Dataspace) bzw. im Programmraum (Programspace); (siehe Handbuch „Makroaufrufe an den Ablaufteil“ [2]).

= elem1
Enthält die auf 4 KByte ausgerichtete Anfangsadresse des Speicherbereichs im Datenraum bzw. Programmraum. Ist dieser Speicherbereich resident angelegt, darf er sich nicht mit dem Speicherbereich eines anderen IO-Area-Pools, mit dem Parameterlistenbereich eines Environments oder mit einem DIV-Fenster überlappen und muss vorher angefordert worden sein (REQM,REQMP...).

Liegt der Bereich in einem Memory-Pool, muss beim Anlegen des Memory-Pools im Makro ENAMP der Operand FIXED=YES angegeben worden sein.

Bei der Form MF=L ist nur die symbolische Adresse erlaubt, wobei symbolische Namen innerhalb einer DSECT ausgeschlossen sind, da ihre Adresse erst zur Laufzeit bekannt ist.

elem1 hat folgende Form:

elem1 =adr1 / (r1)

adr1

Ist die symbolische Anfangsadresse des IO-Area-Pools im Daten- bzw. Programmraum.

(r1)

Ist ein Register, das die Anfangsadresse des IO-Area-Pools im Daten- bzw. Programmraum enthält.

= elem2
Kennzeichnet den Adressraum.
elem2 = 0: der IO-Area-Pool liegt im Programmadressraum
elem2 not equal 0: der IO-Area-Pool liegt in einem Datenraum mit dem ALET <elem2>
(ALET – Access List Entry Token; Zeiger auf einen Eintrag in der Zugriffsliste;
siehe Handbuch „Makroaufrufe an den Ablaufteil“ [2]). Datenräume werden allerdings nur nicht-resident unterstützt.

Bei der Form MF=L ist nur die direkte Angabe erlaubt.

elem2 hat folgende Form:

elem2 =adr2 / zahl / (r2)

zahl

adr2

Ist der numerische Wert des ALETs bzw. 0.

Ist die symbolische Adresse eines 4 Byte langen Feldes, das den ALET
bzw. 0 enthält (binär).

(r2)

Ist ein Register, das den ALET bzw 0 enthält.

IPONAME

Bezeichnet den Namen des IO-Area-Pools.

Bei der Form MF=L ist nur die direkte Angabe erlaubt.

= 'name'
Ist der Name des IO-Area-Pools.
Namenslänge: 1 <= 'name' <= 54 Zeichen.
Namensbildung:
1. Zeichen: Buchstabe oder Sonderzeichen #,@.
2. – 54. Zeichen: beliebige Kombination aus der Zeichenmenge (A,...,Z,0,...,9,$,#,@).
Das erste Blank (X'40') beendet den Namen.
Der Name muss in Hochkommata eingeschlossen werden.

= adr
Ist die symbolische Adresse eines 54 Byte langen Feldes, das den Namen des IO-Area-Pools enthält.

= (r)
Ist ein Register, das die Adresse eines 54 Byte langen Feldes mit dem Namen des IO-Area-Pools enthält.

IPOSIZE

Beschreibt die Größe des Speicherbereichs für den IO-Area-Pool in 4-KByte-Einheiten. Dieser Bereich muss zuvor in der entsprechenden Größe angelegt worden sein.

Bei der Form MF=L ist nur die direkte Angabe erlaubt.

= größe
Größe des Speicherbereichs für den IO-Area-Pool in 4-KByte-Einheiten:
(1 <= größe <= 219).

= adr
Ist die symbolische Adresse eines 4 Byte langen Feldes, das die Größe des Speicherbereiches für den IO-Area-Pool in 4-KByte-Einheiten enthält.

= (r)
Ist ein Register, das die Größe des Speicherbereichs in 4-KByte-Einheiten enthält.

MACID

Zu MACID siehe Beschreibung beim Format FCT=*ENAENV, "Funktion ENABLE ENVIRONMENT".

MF

Die Formen des MF-Operanden sind detailliert im Anhang ("Typen von Makroaufrufen") beschrieben.

PARAM

Zu PARAM siehe Beschreibung beim Format FCT=*ENAENV, "Funktion ENABLE ENVIRONMENT".

PREFIX

Zu PREFIX siehe Beschreibung beim Format FCT=*ENAENV, "Funktion ENABLE ENVIRONMENT".

RES

Gibt an, ob der IO-Area-Pool resident oder nicht-resident angelegt werden soll.

Bei der Form MF=L ist nur die direkte Angabe erlaubt.

= *NOT_SPECIFIED
Der IO-Area-Pool besteht schon, und der Teilnehmer will sich daran anschließen, unabhängig davon, ob der IO-Area-Pool resident angelegt ist oder nicht.

= *YES
Der IO-Area-Pool soll resident angelegt werden.
In diesem Fall wird überprüft, ob die Benutzerkennung über die FASTPAM-Berechtigung verfügt und ob die beim Programmaufruf angeforderte Anzahl von residenten Seiten für den IO-Area-Pool ausreicht (Benutzerkatalog: „RESIDENT-PAGES“ bzw. „CLASSII“). Bei negativem Ergebnis erhält der Anwender die Fehleranzeige „FPAMNORE“ und der IO-Area-Pool wird nicht-resident angelegt.

Speicherplatz in Datenräumen wird nur nicht-resident zur Verfügung gestellt.

= *NO
Der IO-Area-Pool soll nicht resident angelegt werden.

= adr
Ist die symbolische Adresse eines 1 Byte langen Feldes, das den Wert für RES enthält.

= (r)
Ist ein Register, das den Wert für RES enthält.

Mögliche Returncodes bei FCT=*ENAIPO

Standardheader: ccbbaaaa

Über die Ausführung des Makros FPAMSRV wird im Standardheader folgender Returncode übergeben (cc = SUBCODE2, bb = SUBCODE1, aaaa = MAINCODE):

X'cc'

X'bb'

X'aaaa'

Erläuterung


X'00'

X'0000'

Funktion erfolgreich ausgeführt.

X'01'

X'0002'

Funktion nicht ausgeführt.
Ungültiger Name des IO-Area-Pools

X'01'

X'0007'

Funktion nicht ausgeführt.
Ungültige Speicheradresse des IO-Area-Pools

X'01'

X'0008'

Funktion nicht ausgeführt.
Ungültige Größe des IO-Area-Pools

X'01'

X'0012'

Funktion nicht ausgeführt.

  • Ungültige Angabe beim Operanden RES

  • Angabe NOT_SPECIFIED beim Operanden RES und der spezifizierte IO-Area-Pool existiert noch nicht

X'20'

X'0028'

Funktion nicht ausgeführt.
Systemfehler. Systemdiagnose einschalten.

X'40'

X'0032'

Das Environment bzw. der IO-Area-Pool konnte nicht resident angelegt werden. Zu Testzwecken kann das Anwendersystem weiterarbeiten, allerdings auf Kosten der FASTPAM-Performancevorteile.
Der subcode2 spezifiziert die Ursache.

X'01'

X'40'

X'0032'

Die USERID der Task, die das Environment bzw. den IO-Area-Pool eingerichtet hat, verfügt nicht über die FASTPAM-Berechtigung.
Maßnahme: Systemverwalter verständigen.

X'02'

X'40'

X'0032'

Zu kleiner Realspeicher.

X'03'

X'40'

X'0032'

Das beim Programmstart angegebene Kontingent an residentem Hauptspeicher ist überschritten.

X'04'

X'40'

X'0032'

Konnektierung an ein nicht-residentes Environment bzw. an einen nicht-residenten IO-Area-Pool.

X'05'

X'40'

X'0032'

In vorliegender FASTPAM-Version werden Datenräume (Data-Spaces) nur nicht-resident unterstützt.


X'40'

X'0035'

Während der Ausführung der Funktionen *ENAENV/*ENAIPO läuft eine Ein-/Ausgabe auf die zu fixierenden Speicherseiten.
Dieser Returncode kommt nur beim Einrichten des Environments bzw. IO-Area-Pools. Während der Konnektierung dürfen Ein-/Ausgaben laufen.


X'40'

X'0037'

Systembetriebsmittelengpass.
Maßnahme: Systemverwalter verständigen.

X'40'

X'0038'

An das genannte FASTPAM-Betriebsmittel können sich nur TPR-Tasks konnektieren.

X'40'

X'0039'

An das genannte FASTPAM-Betriebsmittel können sich nur Tasks einer Kennung mit FASTPAM-Privileg konnektieren.

X'40'

X'003D'

Der Teilnehmer will sich an einen bestehenden IO-Area-Pool mit einem anderen Operandenwert für IPOADDR konnektieren.

X'40'

X'003E'

Der Teilnehmer will sich an einen bestehenden IO-Area-Pool mit einem anderen Operandenwert für IPOSIZE konnektieren.

X'40'

X'0049'

Die Task ist bereits an den IO-Area-Pool konnektiert.

X'40'

X'004A'

Der angegebene Anwenderspeicher überlappt sich mit einem DIV-Fenster.
Dieser Returncode kommt nur im residenten Fall.

X'40'

X'004B'

Der angegebene Anwenderspeicher überlappt sich mit einem bereits verwendeten FASTPAM-Anwenderspeicher.
Dieser Returncode wird nur ausgegeben, wenn mit residentem Environment bzw. mit residentem IO-Area-Pool gearbeitet wird.

X'40'

X'0057'

Der Speicher für den IO-Area-Pool ist nicht vollständig angefordert worden.

X'40'

X'005B'

Beim 'ENAMP'-Aufruf zum Anlegen des Memory-Pools für die Access-Listen bzw. den IO-Area-Pool wurde nicht 'FIXED=YES' angegeben.
Dies ist auch bei 'SCOPE=LOCAL' notwendig.