JCL - Instrukcja DD
Zestawy danych to pliki mainframe z rekordami zorganizowanymi w określonym formacie. Zestawy danych są przechowywane w urządzeniu pamięci masowej z dostępem bezpośrednim (DASD) lub taśmach komputera głównego i są podstawowymi obszarami przechowywania danych. Jeśli dane te mają być używane / tworzone w programie wsadowym, wówczas fizyczna nazwa pliku (tj. Zestawu danych) wraz z formatem pliku i organizacją są kodowane w JCL.
Definicję każdego zestawu danych używanego w JCL podano przy użyciu rozszerzenia DD statement. Zasoby wejściowe i wyjściowe wymagane przez etap zadania muszą być opisane w instrukcji DD z takimi informacjami, jak organizacja zbioru danych, wymagania dotyczące przechowywania i długość rekordu.
Składnia
Poniżej przedstawiono podstawową składnię instrukcji JCL DD:
//DD-name DD Parameters
Opis
Zobaczmy opis terminów użytych w powyższej składni instrukcji DD.
NAZWA DD
DD-NAME identyfikuje zbiór danych lub zasób wejścia / wyjścia. Jeśli jest to plik wejścia / wyjścia używany przez program w języku COBOL / asembler, wówczas w programie istnieje odniesienie do tego pliku.
DD
To jest słowo kluczowe identyfikujące ją jako instrukcję DD.
PARAMETRY
Poniżej przedstawiono różne parametry instrukcji DD. Możesz użyć jednego lub więcej parametrów na podstawie wymagań i są one oddzielone przecinkami:
Parametr | Opis |
---|---|
DSN | Parametr DSN odnosi się do nazwy fizycznego zestawu danych nowo utworzonego lub istniejącego zestawu danych. Wartość DSN może składać się z pod-nazw, każda o długości od 1 do 8 znaków, oddzielonych kropkami, o łącznej długości 44 znaków (alfanumeryczne). Oto składnia: DSN=Physical Dataset Name Temporary datasetswymagają przechowywania tylko na czas trwania zadania i są usuwane po zakończeniu zadania. Takie zbiory danych są reprezentowane jakoDSN=&name lub po prostu bez określonego DSN. Jeśli tymczasowy zestaw danych utworzony przez krok zadania ma być użyty w następnym kroku zadania, odwołuje się do niego jako DSN=*.stepname.ddname. To się nazywa Backward Referencing. |
DISP | Parametr DISP służy do opisywania stanu zbioru danych, dyspozycji na końcu etapu zadania w przypadku normalnego i nienormalnego zakończenia. DISP nie jest wymagane w instrukcji DD tylko wtedy, gdy zestaw danych zostanie utworzony i usunięty w tym samym kroku zadania (jak tymczasowe zestawy danych). Oto składnia: DISP=(status, normal-disposition, abnormal-disposition) Poniżej przedstawiono prawidłowe wartości dla status:
ZA normal-disposition parametr może przyjąć jedną z następujących wartości
ZA abnormal-disposition parametr może przyjąć jedną z następujących wartości
Oto opis parametrów CATLG, UNCATLG, DELETE, PASS i KEEP:
Jeśli którykolwiek z parametrów podrzędnych DISP nie jest określony, wartości domyślne są następujące:
|
DCB | Parametr Data Control Block (DCB) szczegółowo opisuje fizyczne właściwości zbioru danych. Ten parametr jest wymagany w przypadku zestawów danych, które są nowo tworzone w kroku zadania. LRECL to długość każdego rekordu przechowywanego w zbiorze danych. RECFM to format zapisu zbioru danych. RECFM może przechowywać wartości FB, V lub VB. FB to stała organizacja blokowa, w której jeden lub więcej rekordów logicznych jest zgrupowanych w jednym bloku. V jest organizacją zmienną, w której jeden rekord logiczny o zmiennej długości jest umieszczony w jednym bloku fizycznym. VB to organizacja bloku o zmiennej długości, w której jeden lub więcej rekordów logicznych o zmiennej długości jest umieszczonych w jednym bloku fizycznym. BLKSIZE to rozmiar fizycznego bloku. Im większy blok, tym większa jest liczba rekordów w pliku FB lub VB. DSORG to typ organizacji zbioru danych. DSORG może przechowywać wartości PS (kolejność fizyczna), PO (organizacja partycjonowana) i DA (organizacja bezpośrednia). Gdy zachodzi potrzeba replikacji wartości DCB jednego zestawu danych do innego w ramach tego samego etapu zadania lub JCL, określa się je jako DCB = *. Stepname.ddname, gdzie stepname to nazwa kroku zadania, a ddname to zbiór danych, z którego DCB jest kopiowany. Sprawdź poniższy przykład, gdzie RECFM = FB, LRECL = 80 tworzy DCB zestawu danych OUTPUT1. |
SPACE | Parametr SPACE określa miejsce wymagane dla zestawu danych w DASD (dysk o bezpośrednim dostępie). Oto składnia: SPACE=(spcunits, (pri, sec, dir), RLSE) Oto opis wszystkich użytych parametrów:
|
UNIT | Parametry UNIT i VOL są wymienione w katalogu systemowym dla skatalogowanych zestawów danych, dzięki czemu można uzyskać do nich dostęp tylko za pomocą fizycznej nazwy DSN. Jednak w przypadku nieskatalogowanych zbiorów danych instrukcja DD powinna zawierać te parametry. W przypadku tworzenia nowych zestawów danych można określić parametry UNIT / VOL lub system Z / OS przydzieli odpowiednie urządzenie i wolumin. Parametr UNIT określa typ urządzenia, na którym przechowywany jest zestaw danych. Typ urządzenia można zidentyfikować za pomocą adresu sprzętowego lub grupy typów urządzeń. Oto składnia: UNIT=DASD | SYSDA Gdzie DASD to skrót od Direct Access Storage Device, a SYSDA to od System Direct Access i oznacza następne dostępne dyskowe urządzenie magazynujące. |
VOL | Parametr VOL określa numer woluminu na urządzeniu identyfikowany przez parametr UNIT. Oto składnia: VOL=SER=(v1,v2) Gdzie v1, v2 to numery seryjne woluminów. Możesz również użyć następującej składni: VOL=REF=*.DDNAME Gdzie REF jest wstecznym odniesieniem do numeru seryjnego woluminu zbioru danych w którymkolwiek z poprzednich kroków zadania w JCL. |
SYSOUT | Omówione do tej pory parametry instrukcji DD odpowiadają danym przechowywanym w zbiorze danych. Parametr SYSOUT kieruje dane do urządzenia wyjściowego na podstawie określonej klasy. Poniżej znajduje się składnia SYSOUT=class Gdzie, jeśli klasa jest A, to kieruje wyjście do drukarki, a jeśli klasa jest * następnie kieruje dane wyjściowe do tego samego miejsca docelowego, co parametr MSGCLASS w instrukcji JOB. |
Przykład
Poniżej znajduje się przykład, który wykorzystuje instrukcje DD wraz z różnymi parametrami wyjaśnionymi powyżej:
//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=*