Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

UPAM-Verarbeitung von Plattendateien

Für Plattendateien bietet UPAM folgende Funktionen:

Erstellen von Plattendateien

Den Zugriff auf Sätze muss der Benutzer selbst programmieren (z.B. sequenziellen Zugriff oder assoziativen Zugriff mittels Hashverfahren).

Lesen und Übertragen von SAM- und ISAM-Dateien

(OPEN INPUT) Lesen von SAM- und ISAM-Dateien und Übertragen auf andere Datenträger (z.B. von Platte auf Band): die Eigenschaften der Dateien werden jeweils im FCB abgesetzt (z.B. BLKSIZE, RECSIZE, RECFORM) bzw. im Kommando ADD-FILE-LINK (BUFFER-LENGTH, RECORD-SIZE, RECORD-FORMAT). Dies ermöglicht es dem Benutzer, den Zugriff auf Sätze zu programmieren.

UPAM kann SAM- oder ISAM-Dateien nicht im UPDATE-Modus eröffnen.

ISAM-Dateien lassen sich wegen der komplexen Zusammenhänge zwischen Index- und Datenblöcken mit UPAM nicht effektiv verarbeiten. Man kann UPAM jedoch dazu benutzen, eine ISAM-Datei blockweise auf ein Band zu übertragen.

Gekettete Ein-/Ausgabe

Bis zu 255 logisch aufeinander folgende PAM-Seiten einer Datei können mit einem PAM-Makroaufruf ein- bzw. ausgegeben werden. Der maximale Wert hängt von den Platteneigenschaften ab (siehe SHOW-MASTER-CATALOG-ENTRY, IO-Länge).

PAM-Makroaufrufe in Listenform

Bis zu 255 PAM-Makroaufrufe (die Aufrufe brauchen sich nicht alle auf die gleiche Datei zu beziehen) können mit einer UPAM-Ein-/Ausgabe-Anforderung abgearbeitet werden, d.h. es wird nur ein SVC benötigt. Die Kettung von PAM-Makros dient (ebenso wie gekettete Ein-/Ausgabe) der zeitlichen Optimierung von Benutzerprogrammen.

Benachrichtigung des Benutzerauftrags

Bei Beendigung einer UPAM-Ein-/Ausgabeoperation und Start eines Contingency-Prozesses (Eventing-Mechanismus) wird der Benutzerauftrag benachrichtigt.

DRV

Bei Dateien mit Dual Recording by Volume (DRV; siehe Handbuch „DRV“ [14]) kann sich der Benutzer über den aktuellen Zustand (gegebenenfalls Kopien-Ausfall) informieren. Die Information wird bei der Ausführung einer Ein-/Ausgabe von UPAM angefordert und im FCB (Feld ID1DRVST) hinterlegt. Dieses Feld wird jedoch nur bei einer Änderung des DRV-Status aktualisiert.

Shared-Update-Verarbeitung (Multi-User-Betrieb)

Mehrere parallele Aufträge können eine PAM-Datei gleichzeitig bearbeiten.

Plattendatei ohne PAM-Schlüssel

Eine Datei ohne PAM-Schlüssel wird im Makro FILE oder FCB mit den Operanden BLKCTRL=NO / DATA bzw. im Kommando ADD-FILE-LINK mit den Operanden BLOCK-CONTROL-INFO=*NO/WITHIN-DATA-BLOCK vereinbart. Dabei ist auf Folgendes zu achten:

  • Die Datei muss Standardblöcke haben (BLKSIZE=(STD,n)) bzw. BUFFER-LENGTH=*STD(SIZE=n)

  • Falls es sich nicht um eine ISAM-Datei handelt (FCBTYPE=SAM/PAM bzw. ACCESS-METHOD=*SAM/*UPAM), muss die Sekundärzuweisung mindestens so groß sein wie die vereinbarte Blockgröße (BLKSIZE bzw. BUFFER-LENGHTH).

Für die Zugriffsmethode UPAM gilt

  • Bei SHARUPD=*WEAK kann eine Datei auch dann lesend eröffnet werden, wenn sie von einer anderen Anlage der Multi-System-Umgebung schreibend eröffnet ist. Allerdings wird eine Dateierweiterung (Sekundärzuweisung), die von der anderen Anlage ausgelöst wird und zeitlich nach dem lokalen Eröffnen liegt, nicht zur Kenntnis genommen. Diese später erzeugten Dateibereiche können also vom lokalen Benutzer nicht gelesen werden.

  • Nicht erlaubte Kombinationen führen zu einem OPEN-Fehler.

  • Soll eine PAM-Datei von verschiedenen Aufträgen gleichzeitig bearbeitet werden, muss für jeden Auftrag im Makro FCB der Operand SHARUPD=YES bzw. im Kommando ADD-FILE-LINK der Operand SHARED-UPDATE=*YES angegeben werden.

    Bei UPAM gibt es keine implizite Sperre oder Freigabe von PAM-Seiten. Der Benutzer muss jede Sperre selbst anfordern bzw. freigeben. Die einzige Ausnahme ist der CLOSE-Makroaufruf: bevor die Datei geschlossen wird, werden alle PAM-Seiten freigegeben, die dieser Auftrag in der Datei noch gesperrt hat.
  • Ist eine PAM-Seite gesperrt, kann ein anderer Auftrag dennoch an ihm Lese- bzw. Schreiboperationen ausführen. Verhindert wird nur, dass ein anderer Auftrag diese PAM-Seite noch einmal sperrt. Deshalb sollten alle Aufträge bei Simultan-Aktualisierung nach folgendem Schema vorgehen:
    Sperren (LOCK) -> Lesen (RD) -> Schreiben (WRT) -> Freigeben (UNLOCK)

    Die Angaben in Klammern bezeichnen den Operanden im PAM-Makroaufruf.

    Der Benutzer sollte nicht versuchen, andere Betriebsmittel exklusiv anzufordern, während er PAM-Seiten gesperrt hat, da dies zu einer Deadlock-Situation führen kann (EXLST-Ausgang DLOCK).

  • Ein Auftrag kann nicht mehr als 255 PAM-Seiten gleichzeitig sperren.

  • Ein und dieselbe PAM-Seite kann gleichzeitig nur einmal innerhalb einer UPAM-Operandenlistenkette gesperrt werden.

  • UPAM wertet das FCB-Feld ID1TOUT (Wert des PAMTOUT-Operanden) aus, wenn eine Sperre angefordert wird.
    Daher kann das Benutzerprogramm diesen Wert beliebig verändern, solange die Datei geöffnet ist. Werden bei Kettung von PAM-Makroaufrufen mehrere Sperren angefordert, gilt der PAMTOUT-Wert des FCB, auf den sich die erste Sperre bezieht, für alle in dieser „Kette“ angeforderten Sperren.

  • Sind Sperrungen nicht unmittelbar verfügbar, wird der Auftrag für die im Feld ID1TOUT angegebene Zeit in eine Warteschlange gebracht. Ist nach dieser Zeit die angeforderte Sperre immer noch nicht verfügbar, wird entweder der DLOCK- oder der PGLOCK-Ausgang gewählt, abhängig davon, ob der Auftrag momentan PAM-Seiten gesperrt hat oder nicht.

  • Eine LOCK- bzw. UNLOCK-Operation, angewendet auf eine mit SHARUPD=*NO oder SHARUPD=*WEAK eröffnete Datei wird als Nulloperation behandelt; lediglich der Dateizeiger wird aktualisiert.

  • Bei einem PGLOCK kann das Programm normal fortfahren, z.B. nach einer Wartezeit erneut versuchen, den Block zu sperren. Beim DLOCK liegt zumindest der Versuch einer Mehrfachsperrung vor, und das Programm gerät in einen instabilen Zustand. Während dieses instabilen Zustandes löst jeder Versuch, eine PAM-Seite zu sperren, bevor alle aktuellen Sperren freigegeben sind, eine vorzeitige Programmbeendigung aus. Nur wenn in oder nach der Routine für den DLOCK-Ausgang alle aktuellen Sperren freigegeben worden sind, wird das Programm wieder stabil und kann dann wie üblich Sperren anfordern.

  • Mit UPAM kann auch auf SAM-Node-Files zugegriffen werden. Für schreibenden Zugriff (OPEN OUTIN) muss zusätzlich das Bit SAM_NODE_FILE_ENABLE im FCB gesetzt werden. Standardmäßig erhält UPAM beim Lesen aus SAM-Node-Files SAM-Blöcke in gleicher Struktur wie von Public-Space. Ebenso muss UPAM beim Schreiben Datenblöcke mit SAM-Struktur schreiben.
    Davon abweichend ist es möglich ohne Konvertierung der Daten vom UFS in das SAM-Block-Format zu arbeiten:
    Der sogenannte RAW-Zugriff ermöglicht den direkten Zugriff in die Daten des Node-Files. Der RAW-Zugriff wird durch Setzen des Indikators UPAM_RAW_ACCESS im FCB vor der OPEN-Verarbeitung aktiviert. Ein dynamisches Umschalten von blockorientierter in RAW-Verarbeitung ist nicht möglich.
    Falls nicht an das Dateiende geschrieben wird, muss in beiden Fällen (blockorientiert mit Konvertierung oder im RAW-Modus ohne Konvertierung) unbedingt darauf geachtet werden, dass die zu schreibenden (Nutz-)Daten exakt genauso lang sind wie die Daten, die überschrieben werden sollen. Ansonsten muss mit Datenverlust gerechnet werden. Beim Zugriff im RAW-Modus muss außerdem beachtet werden, dass UPAM die Daten in Vielfachen von 2kB addressiert und damit in der Regel ohne Beachtung von Satzanfang und -ende bzw. Satzlänge. Für die korrekte Verarbeitung der Daten ist die Anwendung verantwortlich.