VSAM - Kurzanleitung

Die Virtual Storage Access Method (VSAM) ist eine leistungsstarke Zugriffsmethode und Datensatzorganisation, die Daten über eine Katalogstruktur organisiert und verwaltet. Es nutzt das Konzept des virtuellen Speichers und kann Datensätze auf verschiedenen Ebenen durch die Angabe von Kennwörtern schützen. VSAM kann in COBOL-Programmen wie physischen sequentiellen Dateien verwendet werden. VSAM sind die logischen Datensätze zum Speichern von Datensätzen. Dateien können in VSAM nacheinander und zufällig gelesen werden. Es ist eine verbesserte Methode zum Speichern von Daten, die einige der Einschränkungen herkömmlicher Dateisysteme wie sequentieller Dateien überwindet.

Eigenschaften von VSAM

Es folgen die Eigenschaften von VSAM -

  • VSAM schützt Daten mithilfe von Kennwörtern vor unbefugtem Zugriff.

  • VSAM bietet schnellen Zugriff auf Datensätze.

  • VSAM bietet Optionen zur Leistungsoptimierung.

  • VSAM ermöglicht die gemeinsame Nutzung von Datensätzen in Batch- und Online-Umgebungen.

  • VSAM sind beim Speichern von Daten strukturierter und organisierter.

  • Freier Speicherplatz wird in VSAM-Dateien automatisch wiederverwendet.

Einschränkungen von VSAM

Die einzige Einschränkung von VSAM besteht darin, dass es nicht auf dem TAPE-Volume gespeichert werden kann. Es wird immer im DASD-Speicherplatz gespeichert. Es erfordert eine Anzahl von Zylindern, um die Daten zu speichern, was nicht kosteneffektiv ist.

VSAM besteht aus folgenden Komponenten:

  • VSAM-Cluster
  • Kontrollbereich
  • Kontrollintervall

VSAM-Cluster

VSAM sind die logischen Datensätze zum Speichern von Datensätzen und werden als Cluster bezeichnet. Ein Cluster ist eine Zuordnung des Index, des Sequenzsatzes und der Datenteile des Datensatzes. Der von einem VSAM-Cluster belegte Platz ist in zusammenhängende Bereiche unterteilt, die als Steuerintervalle bezeichnet werden. Wir werden später in diesem Modul über Kontrollintervalle diskutieren.

In einem VSAM-Cluster gibt es zwei Hauptkomponenten:

  • Index Componententhält den Indexteil. Indexdatensätze sind in der Indexkomponente vorhanden. Verwenden der Indexkomponente VSAM kann Datensätze von der Datenkomponente abrufen.

  • Data Componententhält den Datenteil. Aktuelle Datensätze sind in der Datenkomponente vorhanden.

Kontrollintervall

Steuerintervalle (CI) in VSAM entsprechen Blöcken für Nicht-VSAM-Datensätze. Bei Nicht-VSAM-Methoden wird die Dateneinheit durch den Block definiert. VSAM arbeitet mit einem logischen Datenbereich, der als Steuerintervalle bezeichnet wird.

Steuerintervalle sind die kleinste Übertragungseinheit zwischen einer Festplatte und dem Betriebssystem. Immer wenn ein Datensatz direkt aus dem Speicher abgerufen wird, wird das gesamte CI, das den Datensatz enthält, in den VSAM-Eingabe-Ausgabe-Puffer eingelesen. Der gewünschte Datensatz wird dann vom VSAM-Puffer in den Arbeitsbereich übertragen.

Das Kontrollintervall besteht aus -

  • Logische Aufzeichnungen
  • Kontrollinformationsfelder
  • Freiraum

Wenn ein VSAM-Dataset geladen wird, werden Steuerintervalle erstellt. Die Standardgröße für das Steuerintervall beträgt 4 KB und kann bis zu 32 KB betragen.

Analyse des Kontrollintervalls

Es folgt die Beschreibung der im obigen Programm verwendeten Begriffe -

  • R1..R5 - Datensätze, die im Kontrollintervall gespeichert sind.

  • FS - FS ist freier Speicherplatz, der zur weiteren Erweiterung des Datensatzes verwendet werden kann.

  • RDF- RDF wird als Datensatzdefinitionsfelder bezeichnet. RDF sind 3 Bytes lang. Es beschreibt die Länge von Datensätzen und gibt an, wie viele benachbarte Datensätze dieselbe Länge haben.

  • CIDF- CIDF wird als Kontrollintervall-Definitionsfelder bezeichnet. CIDF sind 4 Byte lang und enthalten Informationen zum Kontrollintervall.

Kontrollbereich

Ein Kontrollbereich (CA) wird gebildet, indem zwei oder mehr Kontrollintervalle zusammengestellt werden. Ein VSAM-Datensatz besteht aus einem oder mehreren Kontrollbereichen. Die Größe von VSAM ist immer ein Vielfaches seines Kontrollbereichs. VSAM-Dateien werden in Einheiten von Kontrollbereichen erweitert.

Es folgt das Beispiel des Kontrollbereichs -

VSAM-Cluster ist in definiert JCL. JCL verwendetIDCAMSDienstprogramm zum Erstellen eines Clusters. IDCAMS ist ein von IBM entwickeltes Dienstprogramm für Access Method Services. Es wird hauptsächlich zum Definieren von VSAM-Datasets verwendet.

Cluster definieren

Die folgende Syntax zeigt die Hauptparameter, unter denen gruppiert ist Define Cluster, Data und Index.

.DEFINE CLUSTER (NAME(vsam-file-name)      -
BLOCKS(number)                             -
VOLUMES(volume-serial)                     -
[INDEXED / NONINDEXED / NUMBERED / LINEAR] -
RECSZ(average maximum)                     -
[FREESPACE(CI-Percentage,CA-Percentage)]   -
CISZ(number)                               -
[KEYS(length offset)]                      -
[READPW(password)]                         -
[FOR(days)|TO(date)]                       -
[UPDATEPW(password)]                       -
[REUSE / NOREUSE] )                        -
DATA                                       -
   (NAME(vsam-file-name.data))             -
INDEX                                      -
   (NAME(vsam-file-name.index))            -
CATALOG(catalog-name[/password]))

Parameter auf CLUSTER-Ebene gelten für den gesamten Cluster. Parameter auf DATA- oder INDEX-Ebene gelten nur für die Daten- oder Indexkomponente.

Wir werden jeden Parameter in der folgenden Tabelle ausführlich diskutieren -

Sr.Nr. Parameter mit Beschreibung
1

DEFINE CLUSTER

Mit dem Befehl Cluster definieren wird ein Cluster definiert und Parameterattribute für den Cluster und seine Komponenten angegeben.

2

NAME

NAME gibt den Namen der VSAM-Datei an, für die wir den Cluster definieren.

3

BLOCKS

Blöcke gibt die Anzahl der Blöcke an, die dem Cluster zugewiesen sind.

4

VOLUMES

Volumes gibt ein oder mehrere Volumes an, die den Cluster oder die Komponente enthalten.

5

INDEXED / NONINDEXED / NUMBERED / LINEAR

Dieser Parameter kann je nach Art des von uns erstellten Datasets drei Werte annehmen: INDEXED, NONINDEXED oder NUMBERED. Für KSDS-Dateien (Key Sequenced) wird die Option INDEXED verwendet. Für ESDS-Dateien (Entry Sequenced) wird die Option NONINDEXED verwendet. Für RRDS-Dateien (Relative Record) ist die Option NUMBERED erforderlich. Für lineare (LDS) Dateien ist die Option LINEAR erforderlich. Der Standardwert dieses Parameters ist INDEXED. Wir werden in den kommenden Modulen mehr über KSDS, ESDS, RRDS und LDS diskutieren.

6

RECSZ

Der Parameter Datensatzgröße hat zwei Werte: Durchschnittliche und Maximale Datensatzgröße. Der Durchschnitt gibt die durchschnittliche Länge der logischen Datensätze in der Datei an und das Maximum gibt die Länge der Datensätze an.

7

FREESPACE

Freespace gibt den Prozentsatz des freien Speicherplatzes an, der für die Kontrollintervalle (CI) und Kontrollbereiche (CA) der Datenkomponente reserviert werden soll. Der Standardwert dieses Parameters ist null Prozent.

8

CISZ

CISZ wird als Kontrollintervallgröße bezeichnet. Es gibt die Größe der Steuerintervalle an.

9

KEYS

Der Schlüsselparameter wird nur in KSDS-Dateien (Key Sequenced) definiert. Es gibt die Länge und den Versatz des Primärschlüssels von der ersten Spalte an. Der Wertebereich dieses Parameters liegt zwischen 1 und 255 Byte.

10

READPW

Der Wert im Parameter READPW gibt das Kennwort der Leseebene an.

11

FOR/TO

Der Wert dieses Parameters gibt die Zeit in Bezug auf Datum und Tage für die Aufbewahrung der Datei an. Der Standardwert für diesen Parameter ist null Tage.

12

UPDATEPW

Der Wert im Parameter UPDATEPW gibt das Kennwort der Aktualisierungsstufe an.

13

REUSE / NOREUSE

Mit dem Parameter REUSE können Cluster definiert werden, die auf den leeren Status zurückgesetzt werden können, ohne sie zu löschen und neu zu definieren.

14

DATA - NAME

Der DATA-Teil des Clusters enthält den Dataset-Namen, der die tatsächlichen Daten der Datei enthält.

15

INDEX-NAME

Der INDEX-Teil des Clusters enthält den Primärschlüssel und den Speicherzeiger für den entsprechenden Datensatz im Datenteil. Es wird definiert, wenn ein Schlüsselsequenzierter Cluster verwendet wird.

16

CATALOG

Der Katalogparameter bezeichnet den Katalog, unter dem die Datei definiert wird. Wir werden den Katalog in den kommenden Modulen separat diskutieren.

Beispiel

Das folgende grundlegende Beispiel zeigt, wie ein Cluster in JCL definiert wird:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DEFINE CLUSTER (NAME(MY.VSAM.KSDSFILE)  -
   INDEXED                                 -
   RECSZ(80 80)                            -
   TRACKS(1,1)                             -
   KEYS(5  0)                              -
   CISZ(4096)                              -                            
   FREESPACE(3 3) )                        -
   DATA (NAME(MY.VSAM.KSDSFILE.DATA))      -
   INDEX (NAME(MY.VSAM.KSDSFILE.INDEX))
/*

Wenn Sie die obige JCL auf dem Mainframes-Server ausführen. Es sollte mit MAXCC = 0 ausgeführt werden und erstellt die VSAM-Datei MY.VSAM.KSDSFILE.

Cluster löschen

Um eine VSAM-Datei zu löschen, muss der VSAM-Cluster mit dem Dienstprogramm IDCAMS gelöscht werden. Der Befehl DELETE entfernt den Eintrag des VSAM-Clusters aus dem Katalog und entfernt optional die Datei, wodurch der vom Objekt belegte Speicherplatz frei wird. Wenn der VSAM-Datensatz nicht abgelaufen ist, wird er nicht gelöscht. Verwenden Sie die Option PURGE, um solche Datasets zu löschen.

DELETE data-set-name CLUSTER  
[ERASE / NOERASE] 
[FORCE / NOFORCE] 
[PURGE / NOPURGE] 
[SCRATCH / NOSCRATCH]

Die obige Syntax zeigt die Parameter, die wir mit der Delete-Anweisung verwenden können. Wir werden jeden von ihnen in der folgenden Tabelle ausführlich besprechen -

Sr.Nr. Parameter mit Beschreibung
1

ERASE / NOERASE

Die Option ERASE wird angegeben, um das für das Objekt im Katalog angegebene ERASE-Attribut zu überschreiben. Die Option NOERASE ist standardmäßig aktiviert.

2

FORCE / NOFORCE

Die Option FORCE wird angegeben, um SPACE und USERCATALOG zu löschen, auch wenn sie nicht leer sind. Die Option NOFORCE ist standardmäßig aktiviert.

3

PURGE / NOPURGE

Mit der Option PURGE wird das VSAM-Dataset gelöscht, wenn das Dataset nicht abgelaufen ist. Die Option NOPURGE ist standardmäßig aktiviert.

4

SCRATCH / NOSCRATCH

Die Option SCRATCH wird angegeben, um den zugehörigen Eintrag für das Objekt aus dem Inhaltsverzeichnis des Volumes zu entfernen. Es wird hauptsächlich für Nicht-Vsam-Datensätze wie GDGs verwendet. Die Option NOSCRATCH ist standardmäßig aktiviert.

Beispiel

Das folgende grundlegende Beispiel zeigt, wie ein Cluster in JCL gelöscht wird:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DELETE MY.VSAM.KSDSFILE CLUSTER
	PURGE
/*

Wenn Sie die obige JCL auf dem Mainframes-Server ausführen. Es sollte mit MAXCC = 0 ausgeführt werden und löscht die VSAM-Datei MY.VSAM.KSDSFILE.

ESDS wird als entry Sequenced Data Set bezeichnet. Ein eintragssequenzierter Datensatz verhält sich wie eine sequentielle Dateiorganisation mit einigen weiteren Funktionen. Wir können direkt auf die Aufzeichnungen zugreifen und aus Sicherheitsgründen auch Passwörter verwenden. Wir müssen codierenNONINDEXEDim Befehl DEFINE CLUSTER für ESDS-Datasets. Im Folgenden sind die wichtigsten Funktionen von ESDS aufgeführt:

  • Datensätze im ESDS-Cluster werden in der Reihenfolge gespeichert, in der sie in den Datensatz eingefügt wurden.

  • Datensätze werden durch die physikalische Adresse referenziert, die als bekannt ist Relative Byte Address (RBA). Angenommen, in einem ESDS-Dataset haben wir 80-Byte-Datensätze, die RBA des ersten Datensatzes ist 0, die RBA für den zweiten Datensatz ist 80, für den dritten Datensatz sind es 160 und so weiter.

  • Auf Datensätze kann nacheinander von RBA zugegriffen werden, was als bekannt ist addressed access.

  • Die Aufzeichnungen werden in der Reihenfolge aufbewahrt, in der sie eingefügt wurden. Neue Datensätze werden am Ende eingefügt.

  • Das Löschen von Datensätzen ist im ESDS-Datensatz nicht möglich. Sie können jedoch als inaktiv markiert werden.

  • Datensätze im ESDS-Datensatz können eine feste Länge oder eine variable Länge haben.

  • ESDS ist nicht indiziert. Schlüssel sind im ESDS-Dataset nicht vorhanden, daher kann es doppelte Datensätze enthalten.

  • ESDS kann in COBOL-Programmen wie jede andere Datei verwendet werden. Wir geben den Dateinamen in JCL an und können die ESDS-Datei für die Verarbeitung innerhalb des Programms verwenden. Geben Sie im COBOL-Programm die Dateiorganisation als anSequential und Zugriffsmodus als Sequential mit ESDS-Datensatz.

ESDS-Cluster definieren

Die folgende Syntax zeigt, welche Parameter beim Erstellen des ESDS-Clusters verwendet werden können. Die Parameterbeschreibung bleibt die gleiche wie im VSAM - Cluster Modul.

DEFINE CLUSTER (NAME(esds-file-name)     -
BLOCKS(number)                           -
VOLUMES(volume-serial)                   -
NONINDEXED                               -
RECSZ(average maximum)                   -
[FREESPACE(CI-Percentage,CA-Percentage)] -
CISZ(number)                             -
[READPW(password)]                       -
[FOR(days)|TO(date)]                     -
[UPDATEPW(password)]                     -
[REUSE / NOREUSE])                       -
DATA                                     -
   (NAME(esds-file-name.data))

Beispiel

Das folgende Beispiel zeigt, wie Sie mit dem IDCAMS-Dienstprogramm einen ESDS-Cluster in JCL erstellen.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DEFINE CLUSTER (NAME(MY.VSAM.ESDSFILE)  -
   NONINDEXED                              -
   RECSZ(80 80)                            -
   TRACKS(1,1)                             -
   CISZ(4096)                              -                            
   FREESPACE(3 3) )                        -
   DATA (NAME(MY.VSAM.ESDSFILE.DATA))      
/*

Wenn Sie die obige JCL auf dem Mainframes-Server ausführen. Es sollte mit MAXCC = 0 ausgeführt werden und erstellt die VSAM-Datei MY.VSAM.ESDSFILE.

ESDS-Cluster löschen

Der ESDS-Cluster wird mit dem Dienstprogramm IDCAMS gelöscht. Der Befehl DELETE entfernt den Eintrag des VSAM-Clusters aus dem Katalog und entfernt optional die Datei, wodurch der vom Objekt belegte Speicherplatz frei wird.

DELETE data-set-name CLUSTER  
[ERASE / NOERASE] 
[FORCE / NOFORCE] 
[PURGE / NOPURGE] 
[SCRATCH / NOSCRATCH]

Die obige Syntax zeigt, welche Parameter beim Löschen des ESDS-Clusters verwendet werden können. Die Parameterbeschreibung bleibt die gleiche wie im VSAM - Cluster Modul.

Beispiel

Das folgende Beispiel zeigt, wie ein ESDS-Cluster in JCL mit dem Dienstprogramm IDCAMS gelöscht wird.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DELETE MY.VSAM.ESDSFILE CLUSTER
/*

Wenn Sie die obige JCL auf dem Mainframes-Server ausführen. Es sollte mit MAXCC = 0 ausgeführt werden und löscht MY.VSAM.ESDSFILE VSAM Cluster.

KSDS wird als Key Sequenced Data Set bezeichnet. Ein schlüsselsequenzierter Datensatz (KSDS) ist komplexer als ESDS und RRDS, aber nützlicher und vielseitiger. Wir müssen codierenINDEXEDim Befehl DEFINE CLUSTER für KSDS-Datasets. Der KSDS-Cluster besteht aus zwei Komponenten:

  • Index- Die Indexkomponente des KSDS-Clusters enthält die Liste der Schlüsselwerte für die Datensätze im Cluster mit Zeigern auf die entsprechenden Datensätze in der Datenkomponente. Die Indexkomponente bezieht sich auf die physikalische Adresse eines KSDS-Datensatzes. Dies bezieht den Schlüssel jedes Datensatzes auf die relative Position des Datensatzes im Datensatz. Wenn ein Datensatz hinzugefügt oder gelöscht wird, wird dieser Index entsprechend aktualisiert.

  • Data- Die Datenkomponente des KSDS-Clusters enthält die eigentlichen Daten. Jeder Datensatz in der Datenkomponente eines KSDS-Clusters enthält ein Schlüsselfeld mit derselben Anzahl von Zeichen und tritt in jedem Datensatz an derselben relativen Position auf.

Im Folgenden sind die Hauptmerkmale von KSDS aufgeführt:

  • Datensätze innerhalb des KSDS-Datensatzes werden immer nach Schlüsselfeldern sortiert. Die Datensätze werden in aufsteigender Reihenfolge nach Schlüssel sortiert gespeichert.

  • Auf Datensätze kann nacheinander zugegriffen werden, und ein direkter Zugriff ist ebenfalls möglich.

  • Datensätze werden mit einem Schlüssel identifiziert. Der Schlüssel jedes Datensatzes ist ein Feld an einer vordefinierten Position innerhalb des Datensatzes. Jeder Schlüssel muss im KSDS-Datensatz eindeutig sein. Eine Vervielfältigung von Datensätzen ist daher nicht möglich.

  • Wenn neue Datensätze eingefügt werden, hängt die logische Reihenfolge der Datensätze von der Sortierreihenfolge des Schlüsselfelds ab.

  • Datensätze im KSDS-Datensatz können eine feste Länge oder eine variable Länge haben.

  • KSDS kann in verwendet werden COBOLProgramme wie jede andere Datei. Wir geben den Dateinamen in JCL an und können die KSDS-Datei für die Verarbeitung innerhalb des Programms verwenden. Geben Sie im COBOL-Programm die Dateiorganisation als anIndexed und Sie können jeden Zugriffsmodus verwenden (Sequential, Random or Dynamic) mit KSDS-Datensatz.

KSDS-Dateistruktur

Um nach einem bestimmten Datensatz zu suchen, geben wir einen eindeutigen Schlüsselwert an. Der Schlüsselwert wird in der Indexkomponente gesucht. Sobald der Schlüssel gefunden wurde, wird die entsprechende Speicheradresse abgerufen, die sich auf die Datenkomponente bezieht. Aus der Speicheradresse können wir die tatsächlichen Daten abrufen, die in der Datenkomponente gespeichert sind. Das folgende Beispiel zeigt die Grundstruktur von Index und Datendatei -

KSDS-Cluster definieren

Die folgende Syntax zeigt, welche Parameter beim Erstellen des KSDS-Clusters verwendet werden können.

Die Parameterbeschreibung bleibt die gleiche wie im VSAM - Cluster Modul.

DEFINE CLUSTER (NAME(ksds-file-name)     -
BLOCKS(number)                           -
VOLUMES(volume-serial)                   -
INDEXED                                  -
KEYS(length offset)                      -
RECSZ(average maximum)                   -
[FREESPACE(CI-Percentage,CA-Percentage)] -
CISZ(number)                             -
[READPW(password)]                       -
[FOR(days)|TO(date)]                     -
[UPDATEPW(password)]                     -
[REUSE / NOREUSE])                       -
DATA                                     -
   (NAME(ksds-file-name.data))           -
INDEX                                    -
   (NAME(ksds-file-name.index))

Beispiel

Das folgende Beispiel zeigt, wie Sie mit dem IDCAMS-Dienstprogramm einen KSDS-Cluster in JCL erstellen.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DEFINE CLUSTER (NAME(MY.VSAM.KSDSFILE)  -
   INDEXED                                 -
   KEYS(6 1)	                           -	
   RECSZ(80 80)                            -
   TRACKS(1,1)                             -
   CISZ(4096)                              -                            
   FREESPACE(3 3) )                        -
   DATA (NAME(MY.VSAM.KSDSFILE.DATA))      -
   INDEX (NAME(MY.VSAM.KSDSFILE.INDEX))    -
/*

Wenn Sie die obige JCL auf dem Mainframes-Server ausführen. Es sollte mit MAXCC = 0 ausgeführt werden und erstellt die VSAM-Datei MY.VSAM.KSDSFILE.

KSDS-Cluster löschen

Der KSDS-Cluster wird mit dem Dienstprogramm IDCAMS gelöscht. Der Befehl DELETE entfernt den Eintrag des VSAM-Clusters aus dem Katalog und entfernt optional die Datei, wodurch der vom Objekt belegte Speicherplatz frei wird.

DELETE data-set-name CLUSTER  
[ERASE / NOERASE] 
[FORCE / NOFORCE] 
[PURGE / NOPURGE] 
[SCRATCH / NOSCRATCH]

Die obige Syntax zeigt, welche Parameter beim Löschen des KSDS-Clusters verwendet werden können. Die Parameterbeschreibung bleibt die gleiche wie im VSAM - Cluster Modul.

Beispiel

Das folgende Beispiel zeigt, wie ein KSDS-Cluster in JCL mit dem Dienstprogramm IDCAMS gelöscht wird.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DELETE MY.VSAM.KSDSFILE CLUSTER
/*

Wenn Sie die obige JCL auf dem Mainframes-Server ausführen. Es sollte mit MAXCC = 0 ausgeführt werden und löscht MY.VSAM.KSDSFILE VSAM Cluster.

RRDS wird als relativer Datensatz bezeichnet. Der RRDS-Cluster ähnelt einem ESDS-Cluster. Der einzige Unterschied besteht darin, dass auf RRDS-Datensätze zugegriffen wirdRelative Record Number (RRN)müssen wir codieren NUMBEREDinnerhalb des Befehls DEFINE CLUSTER. Im Folgenden sind die wichtigsten Funktionen von RRDS aufgeführt:

  • Ein relativer Datensatzdatensatz enthält Datensätze, die durch die gekennzeichnet sind Relative Record Number (RRN)Dies ist die Sequenznummer relativ zum ersten Datensatz.

  • RRDS ermöglicht den Zugriff auf Datensätze nach Nummern wie Datensatz 1, Datensatz 2 usw. Dies ermöglicht einen wahlfreien Zugriff und setzt voraus, dass das Anwendungsprogramm die gewünschten Datensatznummern abrufen kann.

  • Auf die Datensätze in einem RRDS-Datensatz kann nacheinander, in der Reihenfolge der relativen Datensatznummern oder direkt zugegriffen werden, indem die relative Datensatznummer des gewünschten Datensatzes angegeben wird.

  • Die Datensätze in einem RRDS-Datensatz werden in Steckplätzen mit fester Länge gespeichert. Jeder Datensatz wird durch die Nummer seines Steckplatzes referenziert. Die Anzahl kann von 1 bis zur maximalen Anzahl von Datensätzen im Datensatz variieren.

  • Datensätze in einem RRDS können geschrieben werden, indem ein neuer Datensatz in einen leeren Steckplatz eingefügt wird.

  • Datensätze können aus einem RRDS-Cluster gelöscht werden, wodurch ein leerer Steckplatz verbleibt.

  • Anwendungen, die Datensätze fester Länge oder eine Datensatznummer mit kontextbezogener Bedeutung verwenden, die RRDS-Datasets verwenden können.

  • RRDS kann in verwendet werden COBOLProgramme wie jede andere Datei. Wir geben den Dateinamen in JCL an und können die KSDS-Datei für die Verarbeitung innerhalb des Programms verwenden. Geben Sie im COBOL-Programm die Dateiorganisation als anRELATIVE und Sie können jeden Zugriffsmodus verwenden (Sequential, Random or Dynamic) mit RRDS-Datensatz.

RRDS-Dateistruktur

Der Speicherplatz ist in der RRDS-Dateistruktur in Slots mit fester Länge unterteilt. Ein Steckplatz kann entweder vollständig frei oder vollständig belegt sein. Auf diese Weise können neue Datensätze zu leeren Slots hinzugefügt und vorhandene Datensätze aus gefüllten Slots gelöscht werden. Wir können direkt auf jeden Datensatz zugreifen, indem wir die relative Datensatznummer angeben. Das folgende Beispiel zeigt die Grundstruktur der Datendatei -

Datenkomponente

Relative Datensatznummer Datensatzfeld 1 Datensatzfeld 2
1 Lernprogramm Punkt
2 Mohtashim M.
3 Nishant Malik

RRDS-Cluster definieren

Die folgende Syntax zeigt, welche Parameter beim Erstellen eines RRDS-Clusters verwendet werden können.

Die Parameterbeschreibung bleibt die gleiche wie im VSAM - Cluster Modul.

DEFINE CLUSTER (NAME(rrds-file-name)     -
BLOCKS(number)                           -
VOLUMES(volume-serial)                   -
NUMBERED                                 -
RECSZ(average maximum)                   -
[FREESPACE(CI-Percentage,CA-Percentage)] -
CISZ(number)                             -
[READPW(password)]                       -
[FOR(days)|TO(date)]                     -
[UPDATEPW(password)]                     -
[REUSE / NOREUSE])                       -
DATA                                     -
   (NAME(rrds-file-name.data))

Beispiel

Das folgende Beispiel zeigt, wie Sie mit dem Dienstprogramm IDCAMS einen RRDS-Cluster in JCL erstellen.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DEFINE CLUSTER (NAME(MY.VSAM.RRDSFILE)  -
   NUMBERED                                -
   RECSZ(80 80)                            -
   TRACKS(1,1)                             -
   REUSE                                   - 
   FREESPACE(3 3) )                        -
   DATA (NAME(MY.VSAM.RRDSFILE.DATA))      
/*

Wenn Sie die obige JCL auf dem Mainframes-Server ausführen. Es sollte mit MAXCC = 0 ausgeführt werden und erstellt die VSAM-Datei MY.VSAM.RRDSFILE.

RRDS-Cluster löschen

Der RRDS-Cluster wird mit dem Dienstprogramm IDCAMS gelöscht. Der Befehl DELETE entfernt den Eintrag des VSAM-Clusters aus dem Katalog und entfernt optional die Datei, wodurch der vom Objekt belegte Speicherplatz frei wird.

DELETE data-set-name CLUSTER  
[ERASE / NOERASE] 
[FORCE / NOFORCE] 
[PURGE / NOPURGE] 
[SCRATCH / NOSCRATCH]

Die obige Syntax zeigt, welche Parameter beim Löschen des RRDS-Clusters verwendet werden können. Die Parameterbeschreibung bleibt die gleiche wie im VSAM - Cluster Modul.

Beispiel

Das folgende Beispiel zeigt, wie ein RRDS-Cluster in JCL mit dem Dienstprogramm IDCAMS gelöscht wird.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DELETE MY.VSAM.RRDSFILE CLUSTER
/*

Wenn Sie die obige JCL auf dem Mainframes-Server ausführen. Es sollte mit MAXCC = 0 ausgeführt werden und löscht MY.VSAM.RRDSFILE VSAM Cluster.

LDS wird als linearer Datensatz bezeichnet. Das lineare Dataset ist die einzige Form des Byte-Stream-Datasets, die in herkömmlichen Betriebssystemdateien verwendet wird. Lineare Datensätze werden selten verwendet. Im Folgenden sind die Hauptmerkmale von LDS aufgeführt:

  • Lineare Datensätze enthalten keine RDFs und CIDFs, da keine Steuerinformationen in das CI eingebettet sind.

  • Daten, auf die als byteadressierbare Zeichenfolgen im virtuellen Speicher in linearen Datasets zugegriffen werden kann.

  • Lineare Datensätze haben eine Kontrollintervallgröße von 4 KByte.

  • LDS ist eine Art Nicht-Vsam-Datei mit einigen VSAM-Funktionen wie der Verwendung von IDCAMS und VSAM-spezifischen Informationen im Katalog.

  • DB2 ist derzeit der größte Benutzer von linearen Datensätzen.

  • IDCAMS wird zum Definieren eines LDS verwendet, der Zugriff erfolgt jedoch über ein Data-In-Virtual-Makro (DIV).

  • Der lineare Datensatz enthält keine Konzepte für Datensätze. Alle LDS-Bytes sind Datenbytes.

LDS-Cluster definieren

Die folgende Syntax zeigt, welche Parameter beim Erstellen des LDS-Clusters verwendet werden können. Die Parameterbeschreibung bleibt die gleiche wie im VSAM - Cluster Modul.

DEFINE CLUSTER (NAME(lds-file-name)      -
BLOCKS(number)                           -
VOLUMES(volume-serial)                   -
LINEAR                                   -
CISZ(number)                             -
[READPW(password)]                       -
[FOR(days)|TO(date)]                     -
[UPDATEPW(password)]                     -
[REUSE / NOREUSE])                       -
DATA                                     -
   (NAME(lds-file-name.data))

Beispiel

Das folgende Beispiel zeigt, wie mit dem IDCAMS-Dienstprogramm ein LDS-Cluster in JCL erstellt wird.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DEFINE CLUSTER (NAME(MY.VSAM.LDSFILE)   -
   LINEAR                                  -
   TRACKS(1,1)                             -
   CISZ(4096) )                            -                            
   DATA (NAME(MY.VSAM.LDSFILE.DATA))      
/*

Wenn Sie die obige JCL auf dem Mainframes-Server ausführen. Es sollte mit MAXCC = 0 ausgeführt werden und erstellt die VSAM-Datei MY.VSAM.LDSFILE.

LDS-Cluster löschen

Der LDS-Cluster wird mit dem Dienstprogramm IDCAMS gelöscht. Der Befehl DELETE entfernt den Eintrag des VSAM-Clusters aus dem Katalog und entfernt optional die Datei, wodurch der vom Objekt belegte Speicherplatz frei wird.

DELETE data-set-name CLUSTER  
[ERASE / NOERASE] 
[FORCE / NOFORCE] 
[PURGE / NOPURGE] 
[SCRATCH / NOSCRATCH]

Die obige Syntax zeigt, welche Parameter beim Löschen des LDS-Clusters verwendet werden können. Die Parameterbeschreibung bleibt die gleiche wie im VSAM - Cluster Modul.

Beispiel

Das folgende Beispiel zeigt, wie ein LDS-Cluster in JCL mit dem Dienstprogramm IDCAMS gelöscht wird.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DELETE MY.VSAM.LDSFILE CLUSTER
/*

Wenn Sie die obige JCL auf dem Mainframes-Server ausführen. Es sollte mit MAXCC = 0 ausgeführt werden und löscht MY.VSAM.LDSFILE VSAM Cluster.

VSAM-Befehle werden verwendet, um bestimmte Vorgänge für VSAM-Datasets auszuführen. Im Folgenden sind die nützlichsten VSAM-Befehle aufgeführt:

  • Alter
  • Repro
  • Listcat
  • Examine
  • Verify

Ändern

Der Befehl ALTER wird verwendet, um VSAM-Dateiattribute zu ändern. Wir können die Attribute der VSAM-Datei ändern, die wir in der VSAM-Cluster-Definition erwähnt haben. Es folgt die Syntax zum Ändern der Attribute:

ALTER  file-cluster-name [password] 
   [ADDVOLUMES(volume-serial)] 
   [BUFFERSPACE(size)] 
   [EMPTY / NOEMPTY] 
   [ERASE / NOERASE] 
   [FREESPACE(CI-percentage CA-percentage)] 
   [KEYS(length offset)] 
   [NEWNAME(new-name)] 
   [RECORDSIZE(average maximum)] 
   [REMOVEVOLUMES(volume-serial)] 
   [SCRATCH / NOSCRATCH] 
   [TO(date) / FOR(days)] 
   [UPGRADE / NOUPGRADE] 
   [CATALOG(catalog-name [password]]

Die obige Syntax zeigt, welche Parameter in einem vorhandenen VSAM-Cluster geändert werden können. Die Parameterbeschreibung bleibt die gleiche wie im VSAM - Cluster Modul.

Beispiel

Das folgende Beispiel zeigt, wie Sie mit dem Befehl ALTER den freien Speicherplatz erhöhen, weitere Volumes hinzufügen und Schlüssel ändern können.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN DD  *
   ALTER  MY.VSAM.KSDSFILE 
   [ADDVOLUMES(2)] 
   [FREESPACE(6 6)] 
   [KEYS(10 2)] 
/*

Wenn Sie die obige JCL auf dem Mainframes-Server ausführen. Es sollte mit MAXCC = 0 ausgeführt werden und ändert den Freiraum, die Volumes und die Schlüssel.

Repro

Mit dem Befehl REPRO werden Daten in das VSAM-Dataset geladen. Es wird auch verwendet, um Daten von einem VSAM-Datensatz in einen anderen zu kopieren. Mit diesem Befehl können wir Daten aus einer sequentiellen Datei in eine VSAM-Datei kopieren. Das Dienstprogramm IDCAMS verwendet den Befehl REPRO, um die Datasets zu laden.

REPRO INFILE(in-ddname) 
   OUTFILE(out-ddname)

In der obigen Syntax ist der In-DD-Name der DD-Name für den Eingabedatensatz, der Datensätze enthält. Der out-ddname ist der DD-Name für den Ausgabedatensatz, in den die Eingabedatensatzdatensätze kopiert werden.

Beispiel

Das folgende Beispiel zeigt, wie Datensätze von einem Datensatz in einen anderen VSAM-Datensatz kopiert werden.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//IN  DD DSN = MY.VSAM.KSDSFILE,DISP = SHR
//OUT DD DSN = MY.VSAM1.KSDSFILE,DISP = SHR
//SYSPRINT DD  SYSOUT = *
//SYSIN DD  *
   REPRO INFILE(IN) 
      OUTFILE(OUT)
/*

Wenn Sie die obige JCL auf dem Mainframes-Server ausführen. Es sollte mit MAXCC = 0 ausgeführt werden und kopiert alle Datensätze von MY.VSAM.KSDSFILE in die VSAM-Datei MY.VSAM1.KSDSFILE.

Listcat

Mit dem Befehl LISTCAT werden die Katalogdetails eines VSAM-Datasets abgerufen. Der Befehl Listcat enthält die folgenden Informationen zu VSAM-Datasets:

  • SMS-Informationen
  • RLS-Informationen
  • Volumeninformationen
  • Kugelinformationen
  • Zuordnungsinformationen
  • Datensatzattribute
LISTCAT ENTRY(vsam-file-name) ALL

In der obigen Syntax ist vsam-file-name der Name des VSAM-Datasets, für den wir alle Informationen benötigen. Das Schlüsselwort ALL wird angegeben, um alle Katalogdetails abzurufen.

Beispiel

Das folgende Beispiel zeigt, wie alle Details mit dem Befehl Listcat für ein VSAM-Dataset abgerufen werden.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN DD  *
   LISTCAT ENTRY(MY.VSAM.KSDSFILE) 
   ALL 
/*

Wenn Sie die obige JCL auf dem Mainframes-Server ausführen. Es sollte mit MAXCC = 0 ausgeführt werden und zeigt alle Katalogdetails zum MY.VSAM.KSDSFILE-Dataset an.

Untersuchen

Mit dem Befehl "Untersuchen" wird die strukturelle Integrität eines Datensatzclusters mit Schlüsselsequenz überprüft. Es sucht nach Index- und Datenkomponenten und wenn ein Problem gefunden wird, werden die Fehlermeldungen spool gesendet. Sie können jede der IDCxxxxx-Nachrichten überprüfen.

EXAMINE NAME(vsam-ksds-name) -                                    
   INDEXTEST DATATEST -                  
   ERRORLIMIT(50)

In der obigen Syntax ist vsam-ksds-name der Name des VSAM-Datasets, für den wir den Index und den Datenteil des VSAM-Clusters untersuchen müssen.

Beispiel

Das folgende Beispiel zeigt, wie Sie überprüfen, ob der Index- und der Datenteil des KSDS-Datasets synchronisiert sind oder nicht.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN DD  *
   EXAMINE NAME(MY.VSAM.KSDSFILE) -                                    
   INDEXTEST DATATEST -                  
   ERRORLIMIT(50)
/*

Wenn Sie die obige JCL auf dem Mainframes-Server ausführen. Es sollte mit MAXCC = 0 ausgeführt werden und zeigt alle Probleme mit dem VSAM-Datensatz in einer der IDCxxxxx-Nachrichten in der Spool an.

Überprüfen

Mit dem Befehl "Überprüfen" werden VSAM-Dateien überprüft und behoben, die nach einem Fehler nicht ordnungsgemäß geschlossen wurden. Der Befehl fügt der Datei korrekte Datenenddatensätze hinzu.

VERIFY DS(vsam-file-name)

In der obigen Syntax ist vsam-file-name der Name des VSAM-Datasets, für den wir die Fehler überprüfen müssen.

Beispiel

Das folgende Beispiel zeigt, wie Fehler im VSAM-Dataset überprüft und behoben werden.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN DD  *
   VERIFY DS(MY.VSAM.KSDSFILE)                                  
/*

Wenn Sie die obige JCL auf dem Mainframes-Server ausführen. Es sollte mit MAXCC = 0 ausgeführt werden und behebt die Fehler im VSAM-Dataset.

Alternativer Index ist der zusätzliche Index, der zusätzlich zu seinem Primärindex für KSDS / ESDS-Datasets erstellt wird. Ein alternativer Index ermöglicht den Zugriff auf Datensätze mithilfe mehrerer Schlüssel. Der Schlüssel des alternativen Index kann ein nicht eindeutiger Schlüssel sein und Duplikate enthalten.

Erstellung eines alternativen Index

Die folgenden Schritte werden verwendet, um einen alternativen Index zu erstellen:

  • Alternativen Index definieren
  • Pfad definieren
  • Gebäudeindex

Alternativen Index definieren

Alternativer Index wird mit definiert DEFINE AIX Befehl.

DEFINE AIX                              -
(NAME(alternate-index-name)             -
RELATE(vsam-file-name)                  -
CISZ(number)                            -
FREESPACE(CI-Percentage,CA-Percentage)  -
KEYS(length offset)                     -
NONUNIQUEKEY / UNIQUEKEY                -
UPGRADE / NOUPGRADE                     -
RECORDSIZE(average maximum))            -
DATA                                    -
   (NAME(vsam-file-name.data))          -
INDEX                                   -
   (NAME(vsam-file-name.index))

Die obige Syntax zeigt die Parameter, die beim Definieren des alternativen Index verwendet werden. Wir haben bereits einige Parameter im Cluster-Modul definieren besprochen, und einige der neuen Parameter werden zur Definition des alternativen Index verwendet, den wir hier diskutieren werden.

Sr.Nr. Parameter mit Beschreibung
1

DEFINE AIX

Der Befehl AIX definieren wird verwendet, um den alternativen Index zu definieren und Parameterattribute für seine Komponenten anzugeben.

2

NAME

NAME gibt den Namen des alternativen Index an.

3

RELATE

RELATE gibt den Namen des VSAM-Clusters an, für den der alternative Index erstellt wird.

4

NONUNIQUEKEY / UNIQUEKEY

UNIQUEKEY gibt an, dass der alternative Index eindeutig ist, und NONUNIQUEKEY gibt an, dass möglicherweise Duplikate vorhanden sind.

5

UPGRADE / NOUPGRADE

UPGRADE gibt an, dass der alternative Index geändert werden soll, wenn der Basiscluster geändert wird, und NOUPGRADE gibt an, dass die alternativen Indizes in Ruhe gelassen werden sollen, wenn der Basiscluster geändert wird.

Beispiel

Das folgende grundlegende Beispiel zeigt, wie ein alternativer Index in JCL definiert wird:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DEFINE AIX (NAME(MY.VSAM.KSDSAIX)      -
   RELATE(MY.VSAM.KSDSFILE)               -
   CISZ(4096)                             -
   FREESPACE(20,20)                       -
   KEYS(20,7)                             -
   NONUNIQUEKEY                           -
   UPGRADE                                -
   RECORDSIZE(80,80))                     -
   DATA(NAME(MY.VSAM.KSDSAIX.DATA))       -
   INDEX(NAME(MY.VSAM.KSDSAIX.INDEX))
/*

Wenn Sie die obige JCL auf dem Mainframes-Server ausführen. Es sollte mit MAXCC = 0 ausgeführt werden und es wird ein alternativer Index für MY.VSAM.KSDSAIX erstellt.

Pfad definieren

Pfad definieren wird verwendet, um den alternativen Index mit dem Basiscluster zu verknüpfen. Bei der Definition des Pfads geben wir den Namen des Pfads und den alternativen Index an, auf den sich dieser Pfad bezieht.

DEFINE PATH                        -
NAME(alternate-index-path-name)    -
PATHENTRY(alternate-index-name))

Die obige Syntax hat zwei Parameter. NAME wird verwendet, um den alternativen Indexpfadnamen anzugeben, und PATHENTRY wird verwendet, um den alternativen Indexnamen anzugeben.

Beispiel

Im Folgenden finden Sie ein grundlegendes Beispiel zum Definieren des Pfads in der JCL:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
DEFINE PATH                          -
   NAME(MY.VSAM.KSDSAIX.PATH)    -
   PATHENTRY(MY.VSAM.KSDSAIX))
/*

Wenn Sie die obige JCL auf dem Mainframes-Server ausführen. Es sollte mit MAXCC = 0 ausgeführt werden und erstellt einen Pfad zwischen dem alternativen Index und dem Basiscluster.

Gebäudeindex

Der Befehl BLDINDEX wird zum Erstellen des alternativen Index verwendet. BLDINDEX liest alle Datensätze im VSAM-indizierten Datensatz (oder Basiscluster) und extrahiert die Daten, die zum Erstellen des alternativen Index erforderlich sind.

BLDINDEX                           -
INDATASET(vsam-cluster-name)       -
OUTDATASET(alternate-index-name))

Die obige Syntax hat zwei Parameter. INDATASET wird verwendet, um den VSAM-Clusternamen anzugeben, und OUTDATASET wird verwendet, um den alternativen Indexnamen anzugeben.

Beispiel

Im Folgenden finden Sie ein grundlegendes Beispiel für die Erstellung eines Index in JCL:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   BLDINDEX                           -
   INDATASET(MY.VSAM.KSDSFILE)        -
   OUTDATASET(MY.VSAM.KSDSAIX))
/*

Wenn Sie die obige JCL auf dem Mainframes-Server ausführen. Es sollte mit MAXCC = 0 ausgeführt werden und erstellt den Index.

Der Katalog verwaltet die Einheit und das Volumen, in dem sich der Datensatz befindet. Der Katalog wird zum Abrufen von Datensätzen verwendet. Nicht-VSAM-Datasets erstellen einen Katalogeintrag mithilfe des Dispositionsparameters in JCL. VSAM-Datasets verwalten einen eigenen Katalog in Form eines KSDS-Clusters. Im folgenden Bild sehen Sie den Typ der VSAM-Kataloge -

Hauptkatalog

Der Hauptkatalog ist selbst eine Datei, die den Betrieb von VSAM überwacht und verwaltet. Es gibt nur einen Hauptkatalog in einem System, der Einträge zu Systemdatensätzen und VSAM-Datensätzen enthält. VSAM- und Nicht-VSAM-Datasets haben möglicherweise einen Eintrag im Hauptkatalog, dies ist jedoch keine gute Vorgehensweise. Der Hauptkatalog wird während des Systemgenerierungsprozesses erstellt und befindet sich auf dem Systemvolume. Der Hauptkatalog besitzt alle VSAM-Ressourcen im Betriebssystem. Alle in VSAM verwendeten Dateien werden vom Hauptkatalog gesteuert. Der Hauptkatalog ist für folgende Vorgänge verantwortlich:

  • Passwortautorisierung für Dateien
  • Verbesserung der Sicherheit
  • VSAM-Zugriff für Dateien
  • Speicherplatzverwaltung der Datei
  • Speicherort der Datei
  • Freier Speicherplatz in Datei verfügbar

Wenn sich eines der oben genannten Dateiattribute ändert, werden sie automatisch im Hauptkatalog aktualisiert. Der Hauptkatalog wird mit IDCAMS-Programmen definiert.

Benutzerkatalog

Der Benutzerkatalog hat dieselbe Struktur und dieselben Konzepte wie der Hauptkatalog. Es ist auf der nächsten Hierarchieebene nach dem Hauptkatalog vorhanden. Der Benutzerkatalog ist im System nicht obligatorisch, wird jedoch zur Verbesserung der Sicherheit des VSAM-Systems verwendet. Der Hauptkatalog verweist auf VSAM-Dateien. Wenn jedoch ein Benutzerkatalog vorhanden ist, verweist der Hauptkatalog auf den Benutzerkatalog. Die Anzahl der Benutzerkataloge kann je nach Systemanforderung vielfältig sein. Wenn in der VSAM-Struktur der Hauptkatalog entfernt wird, hat dies keine Auswirkungen auf den Benutzerkatalog. Der Benutzerkatalog enthält Einträge zu anwendungsspezifischen Datensätzen. Die Informationen des Benutzerkatalogs werden im Hauptkatalog gespeichert.

Datenraum

Der Datenraum ist ein Bereich des Direktzugriffsspeichergeräts, der ausschließlich für die VSAM-Verwendung reserviert ist. Vor dem Erstellen von VSAM-Clustern muss ein Datenraum erstellt werden. Der vom Datenraum belegte Bereich wird im Volume-Inhaltsverzeichnis (VTOC) aufgezeichnet, sodass der Bereich nicht für eine andere Verwendung zur Verfügung steht, weder für VSAM noch für Nicht-VSAM. VTOC hat Zugang zum Bereich, der vom Raum besetzt ist. VSAM erstellt einen Datenbereich für die Benutzerkatalogeinträge. VSAM übernimmt die Kontrolle über diesen Speicherplatz und überwacht und verwaltet diesen Speicherplatz nach Bedarf für VSAM-Dateien.

Einzigartige Cluster

Einzigartige Cluster bestehen aus einem separaten Datenbereich, der von dem darin erstellten Cluster vollständig genutzt wird. Aus nicht zugewiesenem Speicherplatz im Direktzugriffsspeicher werden eindeutige Cluster erstellt.

Untergeordnete Cluster

Eine untergeordnete VSAM-Datei teilt den VSAM-Speicherplatz mit anderen untergeordneten Dateien. Es gibt an, dass die Datei innerhalb des vorhandenen VSAM-Speicherplatzes untergeordnet werden soll. Die Unterzuordnung wird zur einfacheren Verwaltung und Steuerung von VSAM-Räumen verwendet.

Nicht-VSAM-Datensätze

Nicht-VSAM-Datasets befinden sich sowohl auf Band- als auch auf Direktzugriffsspeicher. Nicht-VSAM-Datasets können Einträge sowohl im Hauptkatalog als auch im Benutzerkatalog enthalten. Die Hauptfunktion beim Katalogisieren von Nicht-VSAM-Datensätzen besteht darin, serielle Informationen zu Einheiten und Volumes beizubehalten.

Während der Arbeit mit VSAM-Datasets können Abbrüche auftreten. Im Folgenden finden Sie die allgemeinen Dateistatuscodes mit ihrer Beschreibung, mit deren Hilfe Sie die Probleme beheben können.

Code Beschreibung
00 Operation erfolgreich abgeschlossen
02 Nicht eindeutiger doppelter Schlüssel für alternativen Index gefunden
04 Ungültiger Datensatz mit fester Länge
05 Während der Ausführung von OPEN sind Datei und Datei nicht vorhanden
10 Dateiende gefunden
14 Es wurde versucht, einen relativen Datensatz außerhalb der Dateigrenze zu lesen
20 Ungültiger Schlüssel für VSAM KSDS oder RRDS
21 Sequenzfehler beim Ausführen von WRITE oder Ändern des Schlüssels bei REWRITE
22 Primärer doppelter Schlüssel gefunden
23 Datensatz nicht gefunden oder Datei nicht gefunden
24 Schlüssel außerhalb der Dateibegrenzung
30 Permanenter E / A-Fehler
34 Aufzeichnung außerhalb der Dateigrenze
35 Während der Ausführung von OPEN sind Datei und Datei nicht vorhanden
37 OPEN-Datei mit falschem Modus
38 Es wurde versucht, eine gesperrte Datei zu öffnen
39 OPEN ist aufgrund widersprüchlicher Dateiattribute fehlgeschlagen
41 Es wurde versucht, eine bereits geöffnete Datei zu öffnen
42 Es wurde versucht, eine Datei zu schließen, die nicht geöffnet ist
43 Versucht, neu zu schreiben, ohne vorher einen Datensatz zu lesen
44 Es wurde versucht, einen Datensatz mit einer anderen Länge neu zu schreiben
46 Es wurde versucht, über das Dateiende hinaus zu lesen
47 Es wurde versucht, aus einer Datei zu lesen, die nicht geöffnet wurde. IO oder INPUT
48 Es wurde versucht, in eine Datei zu schreiben, die nicht geöffnet wurde. IO oder OUTPUT
49 Es wurde versucht, eine Datei zu löschen oder neu zu schreiben, die nicht geöffnet wurde
91 Passwort oder Autorisierung fehlgeschlagen
92 Logikfehler
93 Ressourcen sind nicht verfügbar
94 Sequentieller Datensatz nicht verfügbar oder gleichzeitiger OPEN-Fehler
95 Dateiinformationen ungültig oder unvollständig
96 Keine DD-Anweisung für die Datei
97 OPEN erfolgreich und Dateiintegrität überprüft
98 Datei ist gesperrt - ÖFFNEN fehlgeschlagen
99 Datensatz gesperrt - Datensatzzugriff fehlgeschlagen