Das DVS versorgt beim Erstellen einer SAM-Datei im FCB eine Wiedergewinnungsadresse, die für direkten Zugriff bei späterer Verarbeitung genutzt werden kann. Die Wiedergewinnungsadresse besteht aus Block- und Satznummern, die Blocknummer bezieht sich immer auf den logischen Datenblock (nicht auf PAM-Seiten), die Satznummer zeigt die Position des Satzes innerhalb eines Datenblocks. Bei Mehrbanddateien ist zu beachten, dass die Blocknummer nur innerhalb eines Bandes geführt wird.
Im 31-bit-TU-FCB, d.h. bei XS-Programmierung, ist die Wiedergewinnungsadresse auf zwei jeweils ein Wort lange Felder aufgeteilt: das Feld ID1BLK# enthält die Blocknummer innerhalb der Datei, das Feld ID1REC# die Satznummer innerhalb des Datenblocks. Satz- und Blockzähler werden bei PUT und GET vom System automatisch hochgezählt. Wird eine Datenübertragung ausgelöst, wird der Satzzähler automatisch zurückgesetzt.
Bei Nicht-XS-Verarbeitung ist die Wiedergewinnungsadresse im 24-bit-TU-FCB im Feld ID1RPTR in der Form „bbbbbbrr“ enthalten:
„bbbbbb“ ist die Nummer des Datenblocks in der Datei
„rr“ die Nummer des Satzes innerhalb des Datenblocks
Der Satzzähler wird vom System nicht automatisch hochgezählt, dies muss der Benutzer im Programm durchführen, wenn er die Wiedergewinnungsadresse nutzen will. Der Satzzähler wird jedoch bei jeder Datenübertragung automatisch zurückgesetzt.
Für Bandverarbeitung ist zu beachten, dass die Wiedergewinnungsadresse bei Nicht-XS-Verarbeitung nur für Dateien mit Standardblockung versorgt wird, sodass für Dateien mit Nicht-Standardblöcken kein SETL R möglich ist.
XS-Schnittstelle: 31-bit-TU-FCB | Nicht-XS-Schnittstelle: 24-bit-TU-FCB | ||
---|---|---|---|
ID1BLK# (1 Wort) | ID1REC# (1 Wort) | ID1RPTR (1 Wort) | |
Byte 1-3 | Byte 4 | ||
Blocknumer | Satznummer | Blocknummer | Satznummer |
Der erste Satz einer Datei hat also folgende Wiedergewinnungsadressen:
im 31-bit-TU-FCB 00000001 im Feld ID1BLK# und 00000001 im Feld ID1REC#
im 24-bit-TU-FCB 00000101 im Feld ID1RPTR
Die folgende Tabelle zeigt die Werte der Wiedergewinnungsadresse nach den Aktionsmakros SETL B und SETL E in Abhängigkeit des Open-Modus
OPEN-Modus | SETL B | SETL E | ||||
---|---|---|---|---|---|---|
ID1BLK# | ID1REC# | ID1RPTR | ID1BLK# | ID1REC# | ID1RPTR | |
INPUT, UPDATE | - | - | - | max | 1 | max 1 |
OUTPUT | 1 | 0 | 1 0 | Fehler | Fehler | Fehler |
EXTEND | 1 | 0 | 1 0 | Fehler | Fehler | Fehler |
REVERSE | - | - | - | - | - | - |
- | Feldinhalt unverändert |
max | höchste Blocknummer |
Im Feld IDRPTR sind Block- und Satzzähler dargestellt.
Die folgende Tabelle erläutert, in welcher Weise die Aktionsmakroaufrufe die Wiedergewinnungsadresse versorgen:
Makro | Versorgung der Wiedergewinnungsadresse |
---|---|
GET | Wird durch den angegebenen Satz eine Datenübertragung erforderlich, enthält der Blockzähler die logische Blocknummer, der Satzzähler wird zurückgesetzt. Bei XS-Programmierungwird der Satzzähler bei jedem Aktionsmakroaufruf aktualisiert. |
PUT | Wird durch den PUT-Makroaufruf für den angegebenen Satz eine Datenübertragung ausgelöst, dann wird der Blockzähler aktualisiert und der Satzzähler zurückgesetzt. Das heißt, dass der Blockzähler auf die Nummer des neuen Datenblocks gesetzt wird, der den Satz aufnehmen soll. Bei XS-Programmierung wird der Satzzähler bei jedem Aktionsmakroaufrufaktualisiert. |
RELSE | Wenn eine Datei erstellt oder erweitert wird (OPEN OUTPUT/EXTEND) enthält der Blockzähler die Nummer des Datenblocks, der den folgenden Satz aufnehmen soll, der Satzzähler wird auf null gesetzt. |
FEOV | nach Bandwechsel werden Block- und Satzzähler für das neue Band vom System zurückgesetzt. |
Beispiel
Die Dateieigenschaften werden definiert :
über den Makro FILE:
BLKCTRL=PAMKEY,
BLKSIZE=(STD,2),
RECFORM=F,
RECSIZE=512
oder
mit dem Kommando ADD-FILE-LINK:
BLOCK-CONTROL-INFO=*PAMKEY,
BUFFER-LENGTH=*STD( SIZE=2),
RECORD-FORMAT=*FIXED,
RECORD-SIZE=512
Die Wiedergewinnungsadresse lautet:
Wiedergewinnungsadresse | |||
---|---|---|---|
31-bit-TU-FCB | 24-bit-TU-FCB | ||
ID1BLK# | ID1REC# | IDRPTR | |
für Satz 10 | 00000002 | 00000002 | 00000202 |
für Satz 20 | 00000003 | 00000004 | 00000304 |
Hinweis zur Bearbeitung von SAM-Node-Files
Wird beim Beschreiben eines SAM-Node-Files ein Datenblock mit RELSE abgeschlossen, bevor er vollständig gefüllt worden ist, sind die Wiedergewinnungsadressen ab dieser Stelle nur gültig solange die Datei noch geöffnet ist.
Nach CLOSE und erneutem OPEN, ergibt sich eine andere Aufteilung der Datensätze des Node-Files auf die SAM-Blöcke, die der Zugriffsmethode zur Bearbeitung übergeben werden, so dass die vorherigen Wiedergewinnungsadressen nicht mehr zur Datei passen!
Der gleiche Effekt tritt bei der OPEN UPDATE-Verarbeitung auf. Wurde ein SAM-Node-File im UPDATE-Modus geöffnet und erweitert, sind Wiedergewinnungsadressen nach Schließen und erneutem Öffnen der Datei unbrauchbar.
Dieses Verhalten bei SAM-Node-Files (Net-Storage) ist inkompatibel zur Verarbeitung von SAM-Dateien auf herkömmlichem Public-Space, wo die Block- und Satzstruktur auch nach CLOSE und OPEN erhalten bleibt. Die Anwendung muss daher vor dem Öffnen der Datei mit dem Indikator SAM_NODE_FILE_ENABLE im Dateisteuerblock (FCB) anzeigen, dass sie in der Lage ist SAM-Node-Files korrekt zu verarbeiten.