JCL - DD-Anweisung

Datensätze sind Mainframe-Dateien mit Datensätzen, die in einem bestimmten Format organisiert sind. Datensätze werden auf dem DASD (Direct Access Storage Device) oder den Bändern des Mainframes gespeichert und sind grundlegende Datenspeicherbereiche. Wenn diese Daten in einem Stapelverarbeitungsprogramm verwendet / erstellt werden müssen, werden der physische Name der Datei (dh der Datensatz) sowie das Dateiformat und die Organisation in einer JCL codiert.

Die Definition jedes in der JCL verwendeten Datensatzes wird mit dem angegeben DD statement. Die für einen Jobschritt erforderlichen Eingabe- und Ausgaberessourcen müssen in einer DD-Anweisung mit Informationen wie Dataset-Organisation, Speicheranforderungen und Datensatzlänge beschrieben werden.

Syntax

Es folgt die grundlegende Syntax einer JCL-DD-Anweisung:

//DD-name DD Parameters

Beschreibung

Sehen wir uns die Beschreibung der Begriffe an, die in der obigen DD-Anweisungssyntax verwendet werden.

DD-NAME

Ein DD-NAME identifiziert den Datensatz oder die Eingabe- / Ausgaberessource. Wenn dies eine Eingabe- / Ausgabedatei ist, die von einem COBOL / Assembler-Programm verwendet wird, wird die Datei innerhalb des Programms mit diesem Namen referenziert.

DD

Dies ist das Schlüsselwort, um es als DD-Anweisung zu identifizieren.

PARAMETER

Im Folgenden sind die verschiedenen Parameter für die DD-Anweisung aufgeführt. Sie können einen oder mehrere Parameter basierend auf den Anforderungen verwenden, die durch Komma getrennt sind:

Parameter Beschreibung
DSN

Der DSN-Parameter bezieht sich auf den physischen Datasetnamen eines neu erstellten oder vorhandenen Datasets. Der DSN-Wert kann aus Unternamen mit einer Länge von jeweils 1 bis 8 Zeichen, getrennt durch Punkte und einer Gesamtlänge von 44 Zeichen (alphanumerisch) bestehen. Es folgt die Syntax:

DSN=Physical Dataset Name

Temporary datasetsbenötigen nur Speicher für die Auftragsdauer und werden bei Abschluss des Auftrags gelöscht. Solche Datensätze werden als dargestelltDSN=&name oder einfach ohne DSN angegeben.

Wenn ein temporärer Datensatz, der von einem Jobschritt erstellt wurde, im nächsten Jobschritt verwendet werden soll, wird auf ihn verwiesen DSN=*.stepname.ddname. Das nennt man Backward Referencing.

DISP

Der DISP-Parameter wird verwendet, um den Status des Datensatzes und die Disposition am Ende des Jobschritts bei normalem und abnormalem Abschluss zu beschreiben. DISP ist in einer DD-Anweisung nur dann nicht erforderlich, wenn das Dataset im selben Jobschritt erstellt und gelöscht wird (wie die temporären Datasets). Es folgt die Syntax:

DISP=(status, normal-disposition, abnormal-disposition)

Es folgen gültige Werte für status::

  • NEW: Der Datensatz wird durch den Jobschritt neu erstellt. OUTPUT1 im obigen Beispiel.

  • OLD: Der Datensatz ist bereits erstellt und wird im Jobschritt überschrieben. Der Jobschritt erhält exklusiven Zugriff auf das Dataset, und bis zum Abschluss des Jobschritts kann kein anderer Job auf dieses Dataset zugreifen.

  • SHR: Der Datensatz ist bereits erstellt und wird im Jobschritt gelesen. Der Datensatz kann von mehreren Jobs gleichzeitig gelesen werden. Beispiel: INPUT1 und INPUT2.

  • MOD: Der Datensatz ist bereits erstellt. Diese Disposition wird verwendet, wenn neue Datensätze an den vorhandenen Datensatz angehängt werden müssen (vorhandene Datensätze werden nicht überschrieben).

EIN normal-disposition Der Parameter kann einen der folgenden Werte annehmen

  • CATLG, UNCATLG, DELETE, PASS und KEEP

EIN abnormal-disposition Der Parameter kann einen der folgenden Werte annehmen

  • CATLG, UNCATLG, DELETE und KEEP

Hier ist die Beschreibung der Parameter CATLG, UNCATLG, DELETE, PASS und KEEP:

  • CATLG : Der Datensatz bleibt mit einem Eintrag im Systemkatalog erhalten.

  • UNCATLG : Der Datensatz bleibt erhalten, der Systemkatalogeintrag wird jedoch entfernt.

  • KEEP: Der Datensatz bleibt erhalten, ohne dass die Katalogeinträge geändert werden. KEEP ist die einzig gültige Disposition für VSAM-Dateien. Dies ist nur für permanente Datensätze zu verwenden.

  • DELETE : Datensatz wird aus Benutzer- und Systemkatalog gelöscht.

  • PASS: Dies gilt nur für normale Disposition. Dies wird verwendet, wenn das Dataset vom nächsten Jobschritt in einer JCL übergeben und verarbeitet werden soll

Wenn einer der Unterparameter von DISP nicht angegeben wird, lauten die Standardwerte wie folgt:

  • status : NEU ist der Standardwert.

  • normal-disposition : Wenn der Status NEU ist, lautet die Standard-Normaldisposition LÖSCHEN, andernfalls KEEP.

  • abnormal-disposition : Wie normale Disposition.

DCB

Der Parameter Data Control Block (DCB) beschreibt die physikalischen Eigenschaften eines Datensatzes. Dieser Parameter ist für Datasets erforderlich, die im Jobschritt neu erstellt wurden.

LRECL ist die Länge jedes Datensatzes, der im Datensatz enthalten ist.

RECFM ist das Datensatzformat des Datensatzes. RECFM kann die Werte FB, V oder VB enthalten. FB ist eine feste Blockorganisation, bei der ein oder mehrere logische Datensätze in einem einzelnen Block zusammengefasst sind. V ist eine variable Organisation, bei der ein logischer Datensatz variabler Länge innerhalb eines physischen Blocks platziert wird. VB ist eine Organisation mit variablem Block, bei der ein oder mehrere logische Datensätze variabler Länge in einem physischen Block platziert werden.

BLKSIZE ist die Größe des physischen Blocks. Je größer der Block ist, desto größer ist die Anzahl der Datensätze für eine FB- oder VB-Datei.

DSORG ist der Typ der Datensatzorganisation. DSORG kann die Werte PS (Physical Sequential), PO (Partitioned Organization) und DA (Direct Organization) enthalten.

Wenn die DCB-Werte eines Datasets innerhalb desselben Jobschritts oder derselben JCL in ein anderes repliziert werden müssen, wird dies als DCB = *. Stepname.ddname angegeben, wobei stepname der Name des Jobschritts und ddname das Dataset ist, aus dem Der DCB wird kopiert.

Überprüfen Sie das folgende Beispiel, wobei RECFM = FB, LRECL = 80 den DCB des Datensatzes OUTPUT1 bildet.

SPACE

Der Parameter SPACE gibt den für das Dataset erforderlichen Speicherplatz auf der DASD (Direct Access Storage Disk) an. Es folgt die Syntax:

SPACE=(spcunits, (pri, sec, dir), RLSE)

Hier ist die Beschreibung aller verwendeten Parameter:

  • spcunits : Dies kann CYL (Zylinder), TRK (Spuren) oder BLKSIZE (Blockgröße) sein.

  • pri : Dies ist der primäre Speicherplatz, der für das Dataset benötigt wird.

  • sec : Dies ist der zusätzliche Speicherplatz, der benötigt wird, wenn der primäre Speicherplatz nicht ausreicht.

  • ir : Dies sind die Verzeichnisblöcke, die erforderlich sind, wenn das Dataset ein PDS (Partitioned Dataset) mit darin enthaltenen Mitgliedern ist.

  • RLSE : Dies wird verwendet, um den nicht verwendeten Speicherplatz bei Abschluss des Jobs freizugeben.

UNIT

Die Parameter UNIT und VOL sind im Systemkatalog für katalogisierte Datasets aufgeführt und können daher nur mit dem physischen DSN-Namen aufgerufen werden. Bei nicht katalogisierten Datasets sollte die DD-Anweisung diese Parameter enthalten. Für die Erstellung neuer Datensätze können die UNIT / VOL-Parameter angegeben werden oder das Z / OS weist das geeignete Gerät und Volume zu.

Der Parameter UNIT gibt den Gerätetyp an, auf dem der Datensatz gespeichert ist. Der Gerätetyp kann anhand der Hardwareadresse oder der Gerätetypgruppe identifiziert werden. Es folgt die Syntax:

UNIT=DASD | SYSDA

Dabei steht DASD für Direct Access Storage Device und SYSDA für System Direct Access und bezieht sich auf das nächste verfügbare Festplattenspeichergerät.

VOL

Der Parameter VOL gibt die Datenträgernummer auf dem Gerät an, die durch den Parameter UNIT identifiziert wird. Es folgt die Syntax:

VOL=SER=(v1,v2)

Wobei v1, v2 Volumen-Seriennummern sind. Sie können auch die folgende Syntax verwenden:

VOL=REF=*.DDNAME

Dabei ist REF die Rückwärtsreferenz auf die Volume-Seriennummer eines Datasets in einem der vorhergehenden Jobschritte in der JCL.

SYSOUT

Die bisher diskutierten DD-Anweisungsparameter entsprechen Daten, die in einem Datensatz gespeichert werden. Der Parameter SYSOUT leitet die Daten basierend auf der angegebenen Klasse an das Ausgabegerät weiter. Es folgt die Syntax

SYSOUT=class

Wenn die Klasse A ist, wird die Ausgabe an den Drucker weitergeleitet, und wenn die Klasse A ist * Anschließend wird die Ausgabe an dasselbe Ziel wie das des MSGCLASS-Parameters in der JOB-Anweisung geleitet.

Beispiel

Es folgt ein Beispiel, in dem DD-Anweisungen zusammen mit verschiedenen oben erläuterten Parametern verwendet werden:

//TTYYSAMP JOB 'TUTO',CLASS=6,MSGCLASS=X,REGION=8K,
//         NOTIFY=&SYSUID
//*
//STEP010  EXEC PGM=ICETOOL,ADDRSPC=REAL
//*
//INPUT1   DD DSN=TUTO.SORT.INPUT1,DISP=SHR
//INPUT2   DD DSN=TUTO.SORT.INPUT2,DISP=SHR,UNIT=SYSDA,
//         VOL=SER=(1243,1244)
//OUTPUT1  DD DSN=MYFILES.SAMPLE.OUTPUT1,DISP=(,CATLG,DELETE),
//         RECFM=FB,LRECL=80,SPACE=(CYL,(10,20))
//OUTPUT2  DD SYSOUT=*