Partitioned Data Set
# Partitioned Data Set

Ein Partitioned Data Set (PDS oder PDSE), umgangssprachlich oft auch als Library oder auch als PO-Datei (partitioned organized) bezeichnet, ist eine Dateiorganisationsform (Dateiformat) auf IBM-Großrechnern.

## PDS

Bei einem Partitioned Data Set wird der Dataset in einzelne Partitionen (Member genannt) eingeteilt. Jedes PDS besteht aus einem Verzeichnis (directory) und den einzelnen PDS-Members. Im weitesten Sinne ist eine PDS Datei eine Containerdatei.
Beim Anlegen eines PDS beträgt die Mindestgröße eine Spur (track), es wird die Anzahl der Directory-Blöcke angegeben, und somit die maximale Größe des Verzeichnisses festgelegt.
Die Benennung erfolgt wie auch bei anderen Datasets. Durch Anhängen des Membernamens in Klammern kann direkt auf das Member zugegriffen werden.
Beispiel: TSO.MVS.CLIST(TEST)
Dabei bezeichnet der letzte Qualifier vor der Klammer in der Regel den Typ der enthaltenen Member. Hierbei handelt es sich aber um reine Namenskonventionen. Oft benutzt sind z. B.:
| Letzter Qualifier | Inhalt |
| CLIST | enthält ausführbare TSO-Befehle |
| CNTL | enthält ausführbare Batch-Jobs (JCL) |
| LOAD | enthält ausführbare Programme (Lademodul) Oft wird auch LOADLIB verwendet. Die Änderungen LPALIB und LINKLIB stellen Sonderfälle der LOAD Bibliotheken für Systemzwecke dar |
| TEXT | enthält Textdateien |
| COBOL | Cobol-Quelltexte |
| PLI | PL/I-Quelltexte |
| C | C-Quelltexte |
| ASM | Assembler-Quelltexte |
| PARMLIB | Konfigurationsdateien für das Betriebssystem und Softwareprodukte |
Beim Update eines Members wird dieses am Ende des PDS neu geschrieben. Der Platz, den das Member vorher einnahm, kann vorerst nicht benutzt werden. Erst ein sogenannter „Compress“ (IEBCOPY Hilfsprogramm (sog. Utility)) schiebt die Member wieder zusammen und gibt den Platz frei. Dieser PDS Datei spezifische Vorgang darf nicht mit einer Datenkompression verwechselt werden.
Wenn das Directory voll ist, können keine weiteren Member im PDS gespeichert werden. Üblicherweise wird diese Situation mit Umkopieren und Rename gelöst. Es gibt aber auch ein Freewareprogramm zur Directory-Vergrößerung.

## PDSE – Version 1

Durch die Einführung des System Managed Storages (SMS) existiert seit MVS/XA eine modernere Verwaltungsform, das Partitioned Data Set Extended (PDSE). Hier werden die Daten in 4-kB-Blöcken verwaltet, und der beim Löschen von Members frei gewordene Platz kann ohne Compress sofort verwendet werden. Die Verzeichnisgröße ist völlig variabel. Die Einführung von PDSE verläuft sehr langsam, da bis vor kurzem Integritätsprobleme bestanden. Durch einen speziellen Job können bestehende Partitioned Datasets in diese neue Verwaltungsform überführt werden.

## PDSE – Version 2

PDSE/V2 ist eine Weiterentwicklung von PDSE/V1. Neben besserer Performance und Speichereffizienz besteht der Hauptvorteil in der Möglichkeit mehrere Versionen je Member verwalten zu können. Mit der Einführung von PDSE/V2 wurde der Funktionsumfang vom IEBCOPY Programm, ISPF und auch der JCL Syntax Umfang erweitert, um PDSE/V2 verarbeiten zu können.
Beispiel: Anlegen PDSE/V2 Dataset mit JCL per IEFBR14:

## Bearbeitung PDS und PDSE Dateien

Folgende gängige Methoden zur PDS / PDSE Datei Verarbeitung finden in der Praxis Anwendung:
* Zuordnung physische Datei zu logischem Namen in JCL ist weder nur auf Dataset Ebene (ohne Memberangabe) möglich oder heruntergebrochen bis auf Memberebene (Datasetangabe mit Member)
* Verwendung des IEBCOPY Hilfsprogramms (sog. Utility)
* Für Online Anwender unter TSO kann ISPF verwendet werden
* Die APIs von ISPF können sowohl in Programmiersprachen wie Assembler, COBOL, PL/I, C als auch in Scriptsprachen (CLIST, REXX) verwendet werden. Damit ist ein einfacher Zugriff aus Programmen auf PDS / PDSE Dateien möglich.
* IBM File Manager for z/OS
* Diverse kommerzielle Produkte von Drittanbietern wie PDSMAN von Broadcom
* Diverse Freeware Tools