Die Funktionen der Zugriffsmethode FASTPAM sind in den beiden Makros FPAMSRV und FPAMACC realisiert. Es handelt sich dabei um folgende Funktionen:
Funktion | Bedeutung |
ENABLE ENVIRONMENT | Systemumgebung für FASTPAM-Bearbeitung vorbereiten |
ENABLE IOAREA POOL | IO-Area-Bereich für FASTPAM-Bearbeitung vorbereiten |
OPEN FILE | Datei zur Bearbeitung mit FASTPAM öffnen |
ACCESS FILE | (eine mit FPAMSRV geöffnete) Datei bearbeiten |
CLOSE FILE | (eine mit FASTPAM geöffnete) Datei schließen; hierbei kann auf Wunsch der Last Page Pointer angegeben werden. |
DISABLE ENVIRONMENT | Systemumgebung für FASTPAM-Bearbeitung abbauen |
DISABLE IOAREA POOL | IO-Area-Bereich für FASTPAM-Bearbeitung abbauen |
Systemumgebung für FASTPAM-Bearbeitung vorbereiten (Makrofunktion FCT=*ENAENV)
Mit der Funktion ENABLE ENVIRONMENT (Makro FPAMSRV, Operand FCT=*ENAENV) kann ein Anwender ein FASTPAM-Environment einrichten oder seine Teilnahme an einem existierenden FASTPAM-Environment erklären. Dem Aufrufer wird vom System eine taskspezifische Environment Kurzkennung zurückgegeben, mit der er sich bei den nachfolgenden OPEN-Aufrufen auf das Environment beziehen kann.
Da ein FASTPAM-Environment über seinen Namen und seinen Geltungsbereich identifiziert wird, und der Geltungsbereich implizit aus der Adresse der FPAMACC-Parameterlisten abgeleitet wird, muss bei jedem ENABLE-ENVIRONMENT-Aufruf sowohl der Name als auch die Adresse der Parameterlisten angegeben werden. Die anderen Attribute brauchen beim Anschluss an ein bestehendes Environment nicht erneut angegeben zu werden. Werden sie dennoch spezifiziert, so müssen die angegebenen Werte mit denjenigen des bestehenden Environments übereinstimmen.
Verfügt der Anwender über die FASTPAM-Berechtigung, wird der gesamte für die Platten-zugriffe notwendige Klasse-3-Speicher vorgeneriert und der Bereich der FPAMACC-Parameterlisten fixiert. Damit dies durchgeführt werden kann, wird die Adresse des Parameterlistenbereichs und die Anzahl der Parameterlisten, sowie die bei den späteren Dateizu-griffen benutzte maximale Übertragungslänge benötigt.
Für die Übertragungslänge sind nur die Werte 4 KByte und 32 KByte zugelassen. Der Wert 32 KByte sollte nur bei nicht zu hoher Zugriffsparallelität verwendet werden, da pro Ein-/Ausgabepfad 2 KByte residenter Systemspeicher belegt wird. Die logische Blocklänge der Dateien, die später mit diesem Environment geöffnet werden, und die Ein-/Ausgabelänge der folgenden Dateizugriffe darf diesen Maximalwert nicht überschreiten.
Will der Anwender mit Eventing arbeiten, muss er die Kurzkennung der Ereigniskennung schon beim Einrichten des Environment angeben.
Der Parameterlistenbereich muss vorher angefordert worden sein und schreibenden Zugriff erlauben. Während des Einrichtens des FASTPAM-Environments durch den ersten Environment-Teilnehmer (während der Bearbeitung des ENABLE-ENVIRONMENTS-Aufrufs), darf auf keiner Seite, die sich mit dem Parameterlistenbereich überlappt, eine Ein-/Ausgabe laufen.
IO-Area-Bereich für FASTPAM-Bearbeitung vorbereiten (Makrofunktion FCT=*ENAIPO)
Mit der Funktion ENABLE IOAREA POOL (Makro FPAMSRV, Operand FCT=*ENAIPO) kann ein Anwender einen FASTPAM-IO-Area-Pool einrichten oder seine Teilnahme an einem existierenden FASTPAM-IO-Area-Pool erklären. Das Betriebssystem fixiert bei vorhandener FASTPAM-Berechtigung den angegebenen Speicher und gibt dem Aufrufer eine taskspezifische IO-Area-Pool-Kurzkennung zurück, mit der er sich bei den nachfolgenden OPEN-FASTPAM-Aufrufen auf den Pool beziehen kann.
Analog zum FASTPAM-Environment wird ein IO-Area-Pool über seinen Namen und seinen Geltungsbereich eindeutig identifiziert. Beim Einrichten des IO-Area-Pools werden die Attribute unveränderlich festgelegt. Jeder weitere Teilnehmer darf keine abweichenden Attribute spezifizieren. Dies kann er z.B. durch alleinige Angabe des Namens und der Adresse erreichen.
Der Speicherbereich muss vorher angefordert worden sein und schreibenden Zugriff erlauben. Während des Einrichtens des FASTPAM-IO-Area-Pools durch den ersten IO-Area-Teilnehmer (während der Bearbeitung des ENABLE-IO-AREA-POOL-Aufrufs), darf auf keiner Seite des IO-Area-Pools eine Ein-/Ausgabe laufen.
Datei zur Bearbeitung mit FASTPAM öffnen (Makrofunktion FCT=*OPEN)
Mit den beim ENABLE ENVIRONMENT und ENABLE IOAREA POOL erhaltenen Kurzkennungen kann jede Task beliebig viele Dateien eröffnen.
Ist an das FASTPAM-Environment eine Ereigniskennung gekoppelt, so besteht die Möglichkeit, jede Datei mit FPAMSRV, Operand FCT=*OPEN, EVENTNG=*YES zu eröffnen.
Es wird dann jeder asynchrone ACCESS-Auftrag über die Ereigniskennung quittiert. Ansonsten ist jeder asynchrone Auftrag vom Anwender explizit mit einer Wait-Operation zu beenden. Synchrone Aufträge werden in beiden Fällen gleich behandelt.
Mit dem Operanden MODE kann die Zugriffsart (lesend oder schreibend) und mit dem Operanden SHARUPD die Multi-User-Betriebsart definiert werden. Der Operand BLKSIZE bestimmt das Granulat der folgenden Dateizugriffe.
Mit dem Operanden LARGE_FILE wird angegeben, ob die zu eröffnende Datei eine „große Datei“ werden darf, die eine Dateigröße >= 32 GB erlaubt.
Für jeden fehlerfrei beendeten OPEN erhält der Aufrufer eine OPEN-Kurzkennung, die bei den folgenden ACCESS-FILE-Aufträgen anzugeben ist.
Analog zu UPAM dominieren die bei einem vorher abgesetzten ADD-FILE-LINK-Aufruf angegebenen Parameterwerte über die beim *OPEN angegebenen Werte. Sind sie beim FASTPAM-OPEN nicht erlaubt, so wird der *OPEN-Aufruf zurückgewiesen.
Eine mit FPAMSRV geöffnete Datei bearbeiten (Makro FPAMACC)
Mit dem Makro FPAMACC kann auf die Datei schreibend oder lesend zugegriffen werden. Die Datei, das zugehörige Environment und der IO-Area-Pool werden dabei mittels OPEN-Kurzkennung spezifiziert. Die Ein-/Ausgaben können synchron und asynchron in Auftrag gegeben werden.
Synchrone Operationen sind:
READ AND WAIT
WRITE AND WAIT
READ AND EQUALIZE
Asynchrone Operationen sind:
READ
WRITE
Mit der WAIT-Operation wird das Ende asynchroner Aufträge, die nicht synchron durchgeführt wurden, abgewartet.
Um dem Anwender eine performante Bedienung von Dateien zu ermöglichen, die in einem Zwischenpuffer (Cache) gelagert sind, schließt FASTPAM synchron ausgeführte asynchrone Aufträge vollständig ab und sendet bei Teilnahme am Eventing kein Signal an die Ereigniskennung. Nach einem synchron ausgeführten Auftrag darf kein WAIT-Makro abgesetzt werden (bzw. bei Eventing darf kein SOLSIG-Aufruf abgesetzt werden).
Die Ein-/Ausgabelänge muss ein Vielfaches von BLKSIZE sein und darf den bei MAXIOLN angegebenen Wert nicht überschreiten. Notwendige Angaben sind ferner der logische Block innerhalb der Datei (BLOCK) und die Adresse des Ein-/Ausgabepuffers (IOAREA).
Um SVCs einzusparen, wird auch die Auftragskettung unterstützt. Mit dem Operanden CHAIN können bis zu 5000 FPAMACC-Listen miteinander verbunden werden.
Eventing Verarbeitung
FASTPAM bietet analog zu UPAM die ereignisgesteuerte Verarbeitung von Ein-/Ausgaben an (siehe Abschnitt „TU-Eventing - ereignisgesteuerte Verarbeitung" und Handbuch „Makroaufrufe an den Ablaufteil“ [2]). Wurde der Auftrag nicht synchron beendet, gibt FASTPAM nach Vollendung einer Ein-/Ausgabe eine Meldung an die zugeordnete Ereigniskennung, die vom Anwender mit dem Makroaufruf SOLSIG abgeholt wird. Bei Angabe von EVENTING=YES erfolgt eine Benachrichtigung; bei Angabe von EVENTING=NO erfolgt keine Benachrichtigung. Es muss ein WAIT abgesetzt werden.
Eine mit FASTPAM geöffnete Datei schließen (Makrofunktion FCT=*CLOSE)
Mit der Funktion CLOSE (Makro FPAMSRV, Operand FCT=*CLOSE) wird eine geöffnete Datei wieder geschlossen. Auch hier wird die Datei mittels OPEN-Kurzkennung identifiziert.
Systemumgebung für FASTPAM-Bearbeitung abbauen (Makrofunktion FCT=*DISENV)
Mit der Funktion DISABLE ENVIRONMENT (Makro FPAMSRV, Operand FCT=*DISENV) löst eine Task die Verbindung zu einem mittels Kurzkennung spezifizierten FASTPAM-Environment. Bei der Diskonnektierung der letzten Task wird das FASTPAM-Environment abgebaut. Der Anwenderspeicher wird dabei nicht freigegeben.
IO-Area für FASTPAM-Bearbeitung abbauen (Makrofunktion FCT=*DISIPO)
Mit der Funktion DISABLE IOAREA POOL (Makro FPAMSRV, Operand FCT=*DISIPO) löst eine Task die Verbindung zu einem mittels Kurzkennung spezifizierten FASTPAM-IO-Area-Pool. Bei der Diskonnektierung der letzten Task wird der IO-Area-Pool abgebaut. Der Anwenderspeicher wird dabei nicht freigegeben.