Makrotyp: S-Typ (E-Form/L-Form) (siehe "Typen von Makroaufrufen")
Der VERIF-Makroaufruf dient dazu, eine Datei, Dateigeneration oder Dateigenerationsgruppe, die wegen eines Systemzusammenbruchs oder Auftragsabbruchs nicht ordnungsgemäß geschlossen wurde, wieder verfügbar zu machen.
Mithilfe des Makroaufrufs lässt sich:
eine Dateisperre aufheben, sodass die Datei wieder allgemein zugänglich wird;
eine Plattendatei wiederherstellen: der Katalogeintrag wird aktualisiert, wenn nötig, die Datei geschlossen; ISAM-Dateien werden anhand der vorhandenen Datensätze rekonstruiert.
Hinweis
Wurde der Dateizugriff unterbrochen, während sich Datenpuffer im Arbeitsspeicher befanden, können die letzten vorgenommenen Änderungen bei der rekonstruierten Datei fehlen, da der Pufferinhalt erst dann auf den externen Speicher gebracht wird, wenn der Puffer voll ist.
Der Benutzer kann Banddateien und Plattendateien, die mit dem Kommando SECURE-RESOURCE-ALLOCATION exklusiv reserviert wurden, entsperren, falls der Auftrag, der die Sperre verursachte, vom System mit der Konsolmeldung „Task Pended Indefinitely“
abgebrochen wurde.
Plattendateien, deren Dateisperre nicht durch das Kommando SECURE-RESOURCE-ALLOCATION verursacht wurde, können nur vom Systemverwalter entsperrt werden.
Bei der Rekonstruktion einer verschlüsselten ISAM-Datei muss das zugehörige Crypto-Kennwort vorgegeben werden.
Format
Operation | Operanden |
|
|
|
Operandenbeschreibung
pfadname1
bezeichnet den Pfadnamen der wiederherzustellenden permanenten oder temporären Datei, Dateigenerationsgruppe oder Dateigenerationen mit:
<c-string 1..54: filename 1..54>
„pfadname1“ bedeutet [:catid:][$userid.]dateiname
catid
Katalogkennung;
Default-Catid: die der Benutzerkennung zugeordnete Katalogkennung
userid
Benutzerkennung;
Default-Userid: die Benutzerkennung des SET-LOGON-PARAMETERS- bzw. LOGON-Kommandos
dateiname
vollqualifizierter Dateiname einer permanenten oder temporären Datei, Dateigeneration oder FGG
pfadname2
bezeichnet die Datei, in der die ISAM-Datei „pfadname1“ rekonstruiert werden soll, mit:
<c-string 1..54: filename 1..54>
„pfadname2“ ist nur bei der Rekonstruktion von ISAM-Dateien sinnvoll und darf nicht mit „pfadname1“ übereinstimmen. „pfadname2“ kann der Name einer permanenten oder temporären Datei bzw. Dateigeneration sein, nicht jedoch der Name einer Dateigenerationsgruppe. Ohne „pfadname2“ erstellt das System eine Arbeitsdatei für die Rekonstruktion der ISAM-Datei. „pfadname2“ muss jedoch angegeben werden, wenn die ISAM-Datei auf Privatplatte gespeichert ist, mit Index- und Datenteil auf verschiedenen Platten. Wenn eine verschlüsselte Datei wiederhergestellt werden muss, erhält „pfadname2“ die gleichen Verschlüsselungsattribute wie „pfadname1“.
„pfadname2“ bedeutet [:catid:][$userid.]dateiname
catid
Katalogkennung;
Default-Catid: die der Benutzerkennung zugeordnete Katalogkennung
userid
Benutzerkennung;
Default-Userid: die Benutzerkennung des SET-LOGON-PARAMETERS- bzw. LOGON-Kommandos
dateiname
vollqualifizierter Dateiname einer permanenten oder temporären Datei oder einer Dateigeneration. Eine Dateigenerationsgruppe kann nicht angegeben werden.
REPAIR
Gibt an, wie die mit „pfadname1“ bezeichnete Datei zu rekonstruieren ist; die Rekonstruktion ist abhängig von der Zugriffsmethode, mit der die Datei erstellt wurde.
„Eine Dateisperre aufheben“ bedeutet: der betreffende Eintrag in der Tabelle, in der die gesperrten Dateien erfasst sind (File Lock Table), wird gelöscht.
Concurrent Copy Locks bleiben bestehen, falls die Concurrent Copy Session noch nicht beendet ist. Bei REPAIR=YES/ABS/CHECK wird eine geforderte Rekonstruktion bzw. ein geforderter Konsistenzcheck trotzdem durchgeführt. Für REPAIR=NO siehe Operandenbeschreibung unter „Hinweise“.
Für Banddateien und Dateigenerationsgruppen ist nur REPAIR=NO möglich.
= YES
Nur für Plattendateien
PAM:
Der Zeiger zur letzten beschriebenen Seite (LPP) wird auf den höchst möglichen Wert gesetzt. Dies ist bei BLKCTRL=PAMKEY die Dateigröße (FILESIZE) und bei BLKCTRL=DATA/NO die Dateigröße abgerundet auf ein Vielfaches der Blockgröße. Dabei wird auch der Last Page Pointer auf Blockgrenze hochgesetzt.
Die Datei wird geschlossen.
Es wird eine Egalisierung der Datei bzgl. einer eventuell vorhandenen Spiegelplatte (DRV) durchgeführt.
SAM:
Die höchste beschriebene PAM-Seite der Datei wird ermittelt, und der Zeiger zur letzten beschriebene Seite (LPP) auf diesen Wert gesetzt.
Befindet sich die Datei auf einer Spiegelplatte (DRV), so wird, falls nötig, die Gleichheit der Blockinhalte durch Egalisierung wiederhergestellt.
Die Datei wird geschlossen.
ISAM:
Die Dateisperre wird aufgehoben und die Datei, falls sie als offen gekennzeichnet ist, rekonstruiert.
= ABS
Nur für Plattendateien:
Die Wiederherstellung wird durchgeführt, unabhängig davon, ob die Datei als offen gekennzeichnet ist oder nicht.
PAM:
Die Dateisperre wird aufgehoben. Anschließend wird der Zeiger zur letzten PAM-Seite (Last Page Pointer) auf die höchste beschriebene PAM-Seite und der Last Byte Pointer auf Blockgrenze hochgesetzt, sofern die Datei als offen gekennzeichnet ist; andernfalls bleiben der Last Page Pointer und Last Byte Pointer unverändert.
Für Dateien mit BLKCTRL=PAMKEY/DATA wird die höchste beschriebene PAM-Seite der Datei ermittelt, und der Zeiger zur letzten beschriebene Seite (LPP) auf diesen Wert gesetzt.
Für Dateien mit BLKCTRL=NO wird der Zeiger zur letzten Seite (LPP) auf die höchst mögliche PAM-Seite (Dateigröße abgerundet auf ein Vielfaches der Blockgröße) gesetzt.
Ist die Datei offen und befindet sie sich auf einer Spiegelplatte (DRV), so wird, falls nötig, die Gleichheit der Blockinhalte durch Egalisierung wiederhergestellt.
Die Datei wird ggf. geschlossen.
SAM:
Die Dateisperre wird aufgehoben; auch wenn die Datei nicht als offen gekennzeichnet ist, wird der Last Page Pointer auf die höchste beschriebene PAM-Seite gesetzt; die Datei wird ggf. geschlossen.
ISAM:
Die Dateisperre wird aufgehoben und die Datei rekonstruiert.
Für die Zugriffsmethoden SAM und ISAM ist die Wiederherstellung analog REPAIR=YES.
= CHECK
nur sinnvoll für NK-ISAM-Dateien, die mit WROUT=YES bearbeitet werden:
es werden nur Dateien ausgewählt, die als offen gekennzeichnet sind. Die Dateisperre wird aufgehoben, der Zeiger zur letzten PAM-Seite wird auf die höchste beschriebene Seite gesetzt, Multiblöcke werden auf Konsistenz der Blockungsstruktur geprüft, die Datei wird geschlossen.
Die Dateisperre wird aufgehoben; ist die Datei als offen gekennzeichnet so wird der Zeiger zum letzten PAM-Block auf die höchste beschriebene Seite gesetzt, die Multiblöcke werden auf Konsistenz geprueft, die vereinbarten Sekundärschlüssel werden auf vollständiges Erzeugen oder Löschen geprüft.
Befindet sich die Datei auf einer Spiegelplatte (DRV), so wird, falls nötig, die Gleichheit der Blockinhalte durch Egalisierung wiederhergestellt.
Wurden keine Fehler erkannt, so wird die Datei geschlossen.
„Konsistenz der Multiblöcke“ bedeutet, es ist kein Abbruch während des Schreibens eines Multiblocks aufgetreten ist.
= NO
für Band-Eingabedateien:
„dateiname“ muss vollqualifiziert angegeben werden; die Dateisperre wird aufgehoben.
für Plattendateien:
PAM – Die Dateisperre wird aufgehoben; die Datei gilt noch nicht als geschlossen, d.h. bei FSTAT ...,STATE=NOCLOS wird sie weiterhin gemeldet, für VERIF...,REPAIR=YES gilt sie als zu reparierende Datei.
SAM:
Die Dateisperre wird aufgehoben; die Datei gilt noch nicht als geschlossen, d.h. bei FSTAT ...,STATE=NOCLOS wird sie weiterhin gemeldet, für VERIF ...,REPAIR=YES gilt sie als zu reparierende Datei.
ISAM:
Die Dateisperre wird aufgehoben; falls die Datei als offen gekennzeichnet ist, führt das System eine privilegierte Schließoperation durch; der Last Page Pointer wird auf die höchste beschriebene PAM-Seite gesetzt, die Datei wird nicht rekonstruiert.
Befindet sich die Datei auf einer Spiegelplatte (DRV), so wird, falls nötig, die Gleichheit der Blockinhalte durch Egalisierung wiederhergestellt.
Inkonsistenzen zwischen INDEX- und Datenteil werden hierbei weder erkannt noch behoben.
Das gleiche gilt für Inkonsistenzen bezüglich der Sekundärschlüssel. Die Datei gilt jedoch als geschlossen, d.h. bei FSTAT ...,STATE=NOCLOS wird sie nicht gemeldet, für VERIFY ...,REPAIR=YES gilt sie nicht als zu reparierende Datei.
Hinweis in Zusammenhang mit dem Sicherungsverfahren „Concurrent Copy“
Concurrent Copy Locks auf eine Datei werden vom System/HSMS gesetzt (siehe Handbuch „HSMS“ [10]). Diese Locks kann ein Benutzer nur dann zurücksetzen, wenn die Sicherung (Concurrent Copy Session) beendet ist. Hinsichtlich der Returncodes ist hierbei Folgendes zu beachten:
Ist eine Datei sowohl durch Dateilocks als auch durch Concurrent Copy Locks gesperrt, so wird ein positiver Returncode gesetzt, falls die Dateilocks zurückgesetzt werden konnten.
Ist eine Datei dagegen nur durch einen Concurrent Copy Lock gesperrt, wird ein positiver Returncode nur dann gesetzt, wenn die Concurrent Copy Session beendet ist, andernfalls wird ein negativer Returncode gesetzt.
MF
Eine ausführliche Beschreibung des MF-Operanden ist im Anhang ("Typen von Makroaufrufen") enthalten.
Hinweise zur Programmierung
Bei ordnungsgemäßem Abschluss des Makroaufrufs wird der Inhalt des Registers 15 auf null gesetzt. Der Fehlerschlüssel bei nicht ordnungsgemäßem Abschluss ist im IDEMS-Makroaufruf definiert.
Rekonstruktion von ISAM-Dateien
Fehlt die Angabe „pfadname2“ für eine ISAM-Datei auf gemeinschaftlichen Datenträgern, wird sie in einer Arbeitsdatei rekonstruiert, die vom System erstellt wird. Anschließend wird die Datei „pfadname1“ gelöscht, und zwar ohne „DESTROY“ (siehe Makro CATAL, Operand DESTROY, "CATAL - Katalogeintrag bearbeiten"), und die Arbeitsdatei in „pfadname1“ umbenannt.
Fehlt die Angabe „pfadname2“ für eine ISAM-Datei auf privaten Datenträgern oder auf einem Net-Storage-Volume, wird sie in einer temporären Arbeitsdatei auf gemeinschaftlichen Datenträgern rekonstruiert. Anschließend wird die Arbeitsdatei in die Datei „pfadname1“ kopiert und mit „DESTROY“ (siehe Makro CATAL, Operand DESTROY, "CATAL - Katalogeintrag bearbeiten") gelöscht. Dieser Vorgang kann sehr zeitaufwändig sein, sodass es günstiger ist, „pfadname2“ anzugeben.Wird im VERIF-Makroaufruf „pfadname2“ angegeben, wird „pfadname1“ dort rekonstruiert. „pfadname1“ selbst bleibt unverändert. Soll „pfadname2“ auf privaten Datenträgern oder auf einem Net-Storage-Volume stehen oder handelt es sich bei „pfadname1“ um eine ISAM-Datei mit Daten- und Indexteil auf getrennten Privatplatten, muss „pfadname2“ vor Eingabe des VERIF-Makroaufrufs katalogisiert und Speicherplatz reserviert worden sein.
Datensätze, bei denen Index und Daten gleich sind, werden nur einmal in die rekonstruierte Datei übernommen.In den Datenblöcken der rekonstruierten Datei wird kein Platz für spätere Erweiterungen frei gehalten, was der Vereinbarung PAD=0 im FILE-Makroaufruf entspricht.
ISAM-Dateien mit Daten- und Indexblöcken auf getrennten privaten Datenträgern können mit dem VERIF-Makroaufruf nur rekonstruiert werden, wenn BLKSIZE=STD gilt.Enthält ein ISAM-Datenblock Daten, die keinem definierten Datensatz zugeordnet werden können, wird der gesamte Block in der PAM-Datei „S.dateiname1.REPAIR“ sichergestellt. Nach der VERIF-Bearbeitung steht diese Datei dem Benutzer zu eigenen Rekonstruktionsversuchen zur Verfügung. Falls der neue Dateiname zu lang wird, wird „dateiname1“ entsprechend gekürzt.
Da bei der Wiederherstellung von ISAM-Dateien eine Dateikopie angelegt wird, die zum Pubspace zählt, muss der Anwender dafür sorgen, dass ihm genügend Speicherplatz zur Verfügung steht.