Dieser Artikel von Wikipedia ist u.U. veraltet. Die neue Version gibt es hier. VSAM (Virtual Storage Access Method) beschreibt eine auf Dateien die auf IBM Großrechnersystemen unter Betriebssystem z/OS angelegt wurden. Die Namensgebung basiert auf Idee Dateiinhalte wie Zellen im (virtuellen) Hauptspeicher zu können was mit Hilfe einer RBA Byte Adresse) unterstützt wird. Erstmalig wurde es ermöglicht auf physikalische Eigenschaften der Speichermedien (Plattenzylinder keine Rücksicht mehr nehmen zu müssen.
VSAM-Dateien werden auch als Cluster (sinngemäß bezeichnet. Es gibt verschiedene Formen von VSAM-Cluster:
KSDS (Key sequential DataSet): Bei dieser erfolgt der Datenzugriff über einen Index der Betriebssystemebene in einem eigenen Dataset gespeichert wird. wird der sequentielle Zugriff unterstützt
ESDS (Entry sequential DataSet): Bei dieser wird sequentiell auf den Datenbestand der Datei Mit Hilfe von Alternativindizies kann nachträglich ein mit Hilfe von Indizies (Schlüsselfelder) ermöglicht werden.
RRDS (Relative Record DataSet): Der Zugriff mit Hilfe von logischen Satznummern.
LDS (Linear DataSet): Ist ein völlig Bytestrom der aber beliebig von der Anwendungssoftware ist.
zFS (zSeries Files System): Ist eine der HFS Datasets die von den Unix Services genutzt werden (enthält hierarchische Unix File
VSAM-Dateien werden unter z/OS mit Hilfe Utilities IDCAMS angelegt und verwaltet.
Datenbanksystemen wie IMS oder DB2 benutzen VSAM Cluster zur Speicherung ihrer
Da der Key meist aus mehreren wie etwa "Buchungsdatum Artikel Menge" besteht und VSAM-Cluster nach dem Key sortiert ist ergibt eine leistungsfähige und schnelle Zugriffsmöglichkeit auf alle die mit einem Teilkey beginnen.
Beispielweise sollen alle Records (Datensätze) selektiert deren Buchungsdatum im Januar 2003 war. Dafür VSAM die Option GENKEY was für "Generic Key" steht. Beim Lesen übergibt man dem READ-Befehl einen Key nur aus 6 Bytes besteht (JJJJMM). Von aus kann man sequentiell weiterlesen bis die 6 Bytes des Keys nicht mehr übereinstimmen. Pseudocode könnte das so aussehen:
Setze ENDE auf 'N'
Öffne die Datei in einer VSAM-Umgebung generischem Key.
Lies den ersten Datensatz dessen Key "200301" beginnt.
Solange ENDE ungleich 'J':
Schreibe Datensatz auf den Drucker
Lies den nächsten Datensatz
Wenn Dateiende erreicht oder der Anfang Keys des eben gelesenen Datensatzes nicht mehr