Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

OPEN-Modi

INPUT

Lesen von Blöcken aus einer vorhandenen Datei

OUTIN

Erstellen einer neuen Datei und ggf. Lesen von Blöcken aus dieser Datei

INOUT

Lesen von Blöcken aus einer vorhandenen Datei und ggf. Hinzufügen und/oder Austauschen von Blöcken

PAM-Operationen und OPEN-Modi

PAM-Makro-Funktionen

OPEN-Modus
INPUT

OPEN-Modus
OUTIN

OPEN-Modus
INOUT

RD, RDWT, RDEQU, LRD, LRDWT

X

X

X

WRT, WRTWT, WRTWU

-

X

X

WT, CHK, SYNC

X

X

X

LOCK, UNLOCK, SETL

X

X

X

SETLPP

-

X

X

Multi-User-Betrieb

Eine UPAM-Datei kann mit den Zugriffsmethoden UPAM, FASTPAM (siehe "FASTPAM - Fast Primary Access Method") oder DIV (siehe "DIV - Data In Virtual") erstellt bzw. bearbeitet werden. FASTPAM und DIV können jedoch nur UPAM-Dateien mit der Eigenschaft BLKCTRL=NO bearbeiten.)

Die Erlaubnis für eine parallele Dateibearbeitung ist von den bei der Eröffnung angegebenen Werten der FCB-Operanden SHARUPD, OPEN und LOCKENV abhängig. (Der FCB-Operand OPEN entspricht dem Operand MODE der Makros DIV und FPAMSRV.)

Die möglichen parallelen Eröffnungen werden in der folgenden Tabelle dargestellt: 

Verträglichkeits-Matrix bei UPAM-OPEN




USER
B

USER
B

USER
B

USER
B

USER
B

USER
B

USER
B

USER
B

USER
B


SHARUPD=


*YES

*YES

*YES

*NO

*NO

*NO

*WEAK

*WEAK

*WEAK



OPEN-
Modus


I
N
P
U
T

I
N
O
U
T

O
U
T
I
N

I
N
P
U
T

I
N
O
U
T

O
U
T
I
N

I
N
P
U
T

I
N
O
U
T

O
U
T
I
N




U
S
E
R

A


*YES

INPUT
INOUT
OUTIN

X
O
O

O
O
O


X



X
X
X



*NO

INPUT
INOUT
OUTIN

X



X



X
X
X



*WEAK

INPUT
INOUT
OUTIN

X

X


X

X


X
X
X

X


Tabelle 8: UPAM: erlaubte SHARUPD-/OPEN-Kombinationen

X: OPEN erlaubt

O: OPEN nur erlaubt,

    • wenn die Eröffner dieselbe blockorientierte Zugriffsmethode benutzen (nur UPAM/FASTPAM oder nur DIV)

    • und denselben Wert für den Operanden LOCKENV benutzen
      (alle LOCKENV=*HOST oder LOCKENV=*XCS)

    • und alle im selben HOST laufen oder im selben XCS-Verbund bei Verwendung von LOCKENV=*XCS

Anmerkungen

  • Leseoperationen mit SHARUPD=*WEAK können eine Datei gleichzeitig mit jeder beliebigen Schreiboperation eröffnet haben.

    Ausnahme:
    Leseoperationen mit DIV-SHARUPD=*WEAK, die bei OPEN LOCVIEW=*NONE spezifiziert haben, besitzen dieselbe Verträglichkeit wie Leseoperationen mit UPAM-/FASTPAM-SHARUPD=*WEAK.
  • Eröffner mit DIV-SHARUPD=*YES sind nicht mit Eröffnern mit UPAM-/FASTPAM-SHARUPD=*YES verträglich.

  • Leseoperationen sind immer miteinander verträglich (unabhängig von Zugriffsmethode, SHARUPD-Spezifikation, LOCKENV-Spezifikation und Host).

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

  • Der Versuch, eine Band-Datei mit SHARUPD=YES oder WEAK zu eröffnen, führt ebenfalls zu einem OPEN-Fehler.

  • Ist für eine Banddatei ohne PAM-Schlüssel BLKSIZE kein Vielfaches von 2048, so wird jeder Öffnungsversuch mit FCBTYPE=PAM ebenfalls von UPAM mit OPEN-Fehler abgewiesen.

  • SHARUPD=*YES:
    Bei jedem Aufruf des Allocators wird die Dateigröße überprüft. Wenn bei dieser Überprüfung eine Dateigröße >= 32 GB ermittelt wird und im zugehörigen FCB das Attribut LARGE_FILE=*FORBIDDEN gesetzt ist, wird die Verarbeitung abgebrochen. UPAM liefert in diesem Fall den Returncode X'000009AD' (FILE SIZE GROESSER 32 GIGABYTES IST NICHT ERLAUBT).

  • Der Last Byte Pointer gibt das bytegenaue logische Dateiende einer PAM-Datei an. Er wird in den Katalogeintrag der Datei übernommen, wenn die Datei geschlossen wird. Details siehe „Abschnitt „OPEN-Modi"“.
    Der Benutzer bzw. die Anwendung muss bei Shared-Update-Verarbeitung sicherstellen, dass der Auftrag, der zuletzt in den letzten logischen Block der Datei schreibt, die Datei auch zuletzt schließt. Andernfalls ist der LBP nicht korrekt versorgt, was beim Umkopieren sowie Sichern und Restaurieren zu Inkonsistenzen führen kann.

UPAM-Formate

UPAM arbeitet blockorientiert, Grundlage der Verarbeitung ist bei K-PAM-Dateien der 2-KB-Standardblock, bei NK-PAM-Dateien der logische Block, dessen Größe durch den Operanden BLKSIZE im FCB- bzw. FILE-Makro festgelegt wird.
UPAM kann bis zu 16 2-KB-Standardblöcke gleichzeitig einlesen bzw. ausgegeben (LEN=(STD,n) oder LEN=n*2048 (n <= 16)).

Für K-PAM-Dateien gilt:

Ist der Wert des Operanden LEN im PAM-Makroaufruf kein ganzzahliges Vielfaches von 2048, wird auf das nächstgrößere ganzzahlige Vielfache von 2048 aufgerundet. Bei einer Schreiboperation ist dann der Rest der letzten zu schreibenden PAM-Seite in der Datei undefiniert. Erfolgte dieses Schreiben am Ende der Datei und wird die Datei dann geschlossen, wird die Position des letzten gültigen Bytes dieser PAM-Seite im Last Byte Pointer des Katalogeintrages abgelegt (siehe „Voraussetzung für die Nutzung des Last Byte Pointers"). Bei einer Leseoperation wird der Rest der letzten zu lesenden PAM-Seite nicht in den Puffer übertragen.

Für NK-PAM-Dateien gilt:

Ist der Wert des Operanden LEN im PAM-Makroaufruf kein ganzzahliges Vielfaches der Größe eines Logischen Blockes, wird auf das nächstgrößere ganzzahlige Vielfache der Logischen Blockgröße aufgerundet.
Bei einer Schreiboperation ist dann der Rest des Logischen Blockes in der Datei undefiniert. Erfolgte dieses Schreiben am Ende der Datei und wird die Datei dann geschlossen, wird die Position des letzten gültigen Bytes des letzten logischen Blocks im Last Byte Pointer des Katalogeintrages abgelegt (siehe „Voraussetzung für die Nutzung des Last Byte Pointers"). Bei einer Leseoperation wird der Rest des letzten zu lesenden logischen Blockes nicht in den Puffer übertragen und der restliche Pufferinhalt ist undefiniert.

Voraussetzung für die Nutzung des Last Byte Pointers

Voraussetzung für die Nutzung des Last Byte Pointers bei PAM-Dateien auf Public-Space ist, dass beim OPEN der Indikator LBP_REQUIRED im Dateisteuerblock (FCB) gesetzt wurde. Mit LBP_REQUIRED wird beim OPEN der LBP im FCB zur Verfügung gestellt und bei CLOSE der aktualisierte Wert im Katalogeintrag gespeichert.

Bei PAM-Node-Files wird stets ein Last Byte Pointer versorgt, unabhängig vom Flag LBP_REQUIRED. Allerdings ist hier zu beachten, dass der LBP im CE veraltet sein kann, da die Datei von einem fremden System geändert worden sein könnte. Deshalb wird im Rahmen des OPEN der aktuell gültige Last Byte Pointer ermittelt und der Anwendung im Dateisteuerblock (FCB) zur Verfügung gestellt. 

Beispiel

Für eine Datei mit BLKCTRL=NO und BLKSIZE=(STD,2) werden in einem PAM-Aufruf die Operanden WRT und LEN=5000 angegeben. Aus dem Puffer werden 5000 Byte übernommen, der Rest bis zum nächstgrößeren ganzzahligen Vielfachen der Logischen Blockgröße (8192 Byte) ist undefiniert.