IEBCOPY
IEBCOPY ist ein Hilfsprogramm, welches in IBM-Großrechnerbetriebssystemen seit OS/360 verwendet wird, wenn mittels JCL Dateioperationen auf Partitioned Datasetset (PDS oder PDSE, sowohl V1 als auch V2) vorgenommen werden sollen. Das Programm gehört in die Gruppe einer ganzen Reihe von Hilfsprogrammen (sogenannte Utility) zur Dateibearbeitung wie IEBGENER, IDCAMS und IEBUPDTE.
Funktionalität
[Bearbeiten | Quelltext bearbeiten]- Umwandeln eines PDS/PDSE in eine sequentielle Datei für eine Datensicherung oder Übertragungszwecke
- Durchführung eines sogenannten "Compress" auf eine PDS Datei. Dabei wird Platz, welcher durch Löschung einzelner Member freigeworden ist, zur erneuten Verwendung freigegeben. Dieser PDS-Datei spezifische Vorgang darf nicht mit einer Datenkompression verwechselt werden. Für PDSE-Dateien spielt dieser "Compress" keine Rolle mehr, da PDSE-Dateien intern anders organisiert sind.
- Kopieren einzelner Member einer PDS-/PDSE-Datei
- Kopieren einer kompletten PDS-/PDSE-Datei
- Zusammenfassen mehrerer PDS-/PDSE-Dateien zu einer einzelnen PDS-Datei
- Für Sonderfälle: Änderung der Blockstruktur von Lademodulen, welche auf einem PDS/PDSE gespeichert sind
Beispiele
[Bearbeiten | Quelltext bearbeiten]Beispiel 1: Partielle PDS Kopie
[Bearbeiten | Quelltext bearbeiten]//JOB1 JOB (12345),MSGCLASS=X,NOTIFY=SYSPROG1
//COPY EXEC PGM=IEBCOPY
//SYSUT1 DD DISP=SHR,DSN=MY.HLQ.TEMP.HUGO
//SYSUT2 DD DISP=SHR,DSN=MY.HLQ.TEMP.HUGO.COPY
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
COPY INDD=SYSUT1,OUTDD=SYSUT2
SELECT MEMBER=((TEST5,,R))
Diese JCL kopiert mit IEBCOPY ein Einzelmember namens TEST5 von einer PDS / PDSE Datei mit dem logischen Namen SYSUT1 und dem physischen Namen MY.HLQ.TEMP.HUGO in Ziel PDS / PDSE mit dem logischen Namen SYSUT2 und dem physischen Namen MY.HLQ.TEMP.HUGO.COPY. Quell- und Ziel Dataset müssen existieren (DISP=SHR). Ein bereits im Ziel existierendes Member mit identischem Namen wird überschrieben (Subparameter R, siehe Zeile 8).
Beispiel 2: Komplette PDSE Kopie inklusive Memberversionen
[Bearbeiten | Quelltext bearbeiten]//JOB1 JOB (12345),MSGCLASS=X,NOTIFY=SYSPROG1
//COPY EXEC PGM=IEBCOPY
//SYSUT1 DD DSN=MY.HLQ.TEMP.HUGO,DISP=SHR
//SYSUT2 DD DSN=MY.HLQ.TEMP.HUGO.COPY,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(2,2),RLSE),
// UNIT=3390,DSNTYPE=(LIBRARY,2),MAXGENS=10,
// DCB=(DSORG=PO,RECFM=FB,LRECL=80)
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
COPYGROUP INDD=SYSUT1,OUTDD=SYSUT2,GENS=ALL
/*
Diese JCL kopiert mittels IEBCOPY alle Member von einem Quell PDSE in ein Ziel PDSE. Das Quell PDSE muss existieren (DISP=SHR) während das Ziel PDSE neu angelegt wird (DISP=NEW) und zwar als PDSE/V2, also sogenanntes LIBRARY Format mit maximal 10 Generationen. Beim Kopieren werden von der Quelle neben allen Membern auch alle Generationen je Member (GENS=ALL) mitgenommen. Der Subparameter GENS=ALL wird nur für PDSE/V2 und auch nur bei COPYGROUP unterstützt, nicht aber bei Verwendung des COPY Kommandos.
Historie
[Bearbeiten | Quelltext bearbeiten]- Einführung IEBCOPY als reines PDS Tool in den 1960er Jahren mit OS/360
- Erweiterung um PDSE Support mit dessen Einführung 1989
- Mit Einführung des Betriebssystems z/OS V1 R13 wurde die APF Authorization entfernt und Laufzeitverbesserungen implementiert
- Mit Einführung des Betriebssystems z/OS V2 R1 wurde die sog. "Copygropup" Syntax zur einfacheren Verarbeitung von Aliassen eingeführt und eine Wildcard Auswahl für Membernamen ermöglicht