UPAM ist die primäre blockorientierte Zugriffsmethode im BS2000 für wahlfreien Zugriff auf Plattendateien. Zu jedem Zeitpunkt kann auf einen beliebigen Block der Datei lesend oder schreibend zugegriffen werden.
Auch Banddateien können mit UPAM verarbeitet werden (siehe unten).
Mit dem Operanden BLKCTRL in den Makros FILE und FCB kann der Anwender wählen, ob eine K- oder eine NK-Datei verarbeitet werden soll: BLKCTRL=PAMKEY vereinbart eine K-PAM-Datei, BLKCTRL=DATA oder BLKCTRL=NO legt eine NK-PAM-Datei fest.
Auf einer NK2-Platte wird bei Angabe der Blockgröße mit BLKSIZE=(STD,n), wobei n eine gerade Zahl ist, eine NK4-PAM-Datei angelegt. Wenn n eine ungerade Zahl ist, wird eine NK2-PAM-Datei angelegt.
Auf einer NK4-Platte kann nur eine NK4-PAM-Datei liegen (siehe auch Kapitel „Zugriffsmethoden“, Handbuch „Einführung in das DVS“ [1]).
Durch die Angabe BLKSIZE=(STD,n) (n > 1) im FCB- oder FILE-Makro können mehrere 2048-Byte-Standardblöcke zu einem Datenblock (Logischen Block) zusammengefasst werden.
Bei einer K-PAM-Datei kann jeder Standardblock innerhalb des logischen Datenblockes im Programm angesprochen werden.
Bei einer NK-PAM-Datei kann nur der gesamte Datenblock (logischer Block) im Programm angesprochen werden; eine getrennte Verarbeitung der einzelnen 2048-Byte-Blöcke, aus denen er gebildet wurde, ist nicht möglich.
Bild 4: Arbeitsweise von UPAM
Makroaufrufe für die Zugriffsmethode UPAM
Service-Makroaufrufe
Makro | Operation | Funktion |
OPEN | Datei eröffnen | |
CLOSE | Datei schließen | |
FCB | Dateisteuerblock definieren | |
EXLST | Fehlerausgänge definieren | |
PAM | CHK | Zustand der Ein-/Ausgabeverarbeitung prüfen |
LOCK | eine PAM-Seite sperren | |
LRD | eine PAM-Seite sperren und den Inhalt in den Arbeitsspeicher lesen | |
LRDWT | eine PAM-Seite sperren, den Inhalt in den Arbeitsspeicher lesen und Abschluss der Ein-/Ausgabe abwarten | |
RD | PAM-Seite in den Arbeitsspeicher lesen | |
RDEQU | wie RDWT (siehe unten); zusätzlich wird bei Dateien mit Dual Recording by Volume die Kopie aktualisiert (DRV, siehe Handbuch „DRV“ [15]) | |
RDWT | PAM-Seite in den Arbeitsspeicher lesen und Ein-/Ausgabe-Abschluss abwarten | |
SETL | Dateizeiger positionieren | |
SETLPP | Last Page Pointer (Dateiende-Zeiger) verändern; auf diese Weise können Dateien verkürzt werden, d.h. nach dem CLOSE können nicht mehr benötigte PAM-Seiten freigegeben werden. Diese Operation ist nicht zulässig für Dateien, die mit SHARUPD=WEAK/YES oder OPEN=INPUT eröffnet wurden. Bei Banddateien wird SETLPP ignoriert. | |
SYNC | auf Abschluss der Ein-/Ausgabe warten und den Inhalt des Magnetbandkassettenpuffers auf Band schreiben | |
UNLOCK | PAM-Seite freigeben | |
WRT | aus dem Arbeitsspeicher in eine PAM-Seite schreiben | |
WRTWT | aus dem Arbeitsspeicher in eine PAM-Seite schreiben und auf Abschluss der Ein-/Ausgabe warten | |
WRTWU | aus dem Arbeitsspeicher in die PAM-Seite schreiben, auf den Ein-/Ausgabe-Abschluss warten und die geschriebene PAM-Seite freigeben | |
WT | auf Abschluss der Ein-/Ausgabe warten |
Makroaufrufe zur ereignisgesteuerten Verarbeitung
Die Makroaufrufe ENAEI, DISEI und SOLSIG müssen bei jeder Art von Ereignissteuerung aufgerufen werden; nähere Informationen zu den unten aufgelisteten Makroaufrufen sind dem Handbuch „Makroaufrufe an den Ablaufteil“ [2] zu entnehmen.
CHKEI | prüft den Zustand einer Ereigniskennung |
CONTXT | greift lesend oder schreibend auf den Registersatz und Befehlszähler (den „Kontext“) eines unterbrochenen Contingency-Prozesses oder des Basisprozesses zu |
DISEI | trennt einen Auftrag von einer Ereigniskennung |
DISCO | entzieht einer Contingency-Definition die Möglichkeit, Contingency-Prozesse zu steuern |
ENACO | ermöglicht einer Contingency-Definition die Steuerung von Contingency-Prozessen |
ENAEI | weist einem Auftrag eine Ereigniskennung zu |
LEVCO | ändert die Priorität eines Contingency-Prozesses oder des Basisprozesses |
RETCO | beendet einen Contingency-Prozess |
SOLSIG | sendet eine Anforderung an eine Ereigniskennung |