JCL - Istruzione DD
I set di dati sono file mainframe con record organizzati in un formato specifico. I set di dati sono archiviati sul DASD (Direct Access Storage Device) o sui nastri del mainframe e sono aree di archiviazione dati di base. Se è necessario utilizzare / creare questi dati in un programma batch, il nome fisico del file (ovvero, il set di dati) insieme al formato e all'organizzazione del file vengono codificati in un JCL.
La definizione di ogni set di dati utilizzato nel JCL viene fornita utilizzando il DD statement. Le risorse di input e output richieste da una fase di lavoro devono essere descritte all'interno di un'istruzione DD con informazioni quali l'organizzazione del set di dati, i requisiti di archiviazione e la lunghezza del record.
Sintassi
Di seguito è riportata la sintassi di base di un'istruzione DD JCL:
//DD-name DD Parameters
Descrizione
Vediamo la descrizione dei termini utilizzati nella sintassi dell'istruzione DD sopra.
DD-NAME
Un DD-NAME identifica il set di dati o la risorsa di input / output. Se si tratta di un file di input / output utilizzato da un programma COBOL / Assembler, al file viene fatto riferimento con questo nome all'interno del programma.
DD
Questa è la parola chiave per identificarlo come un'istruzione DD.
PARAMETRI
Di seguito sono riportati i vari parametri per l'istruzione DD. È possibile utilizzare uno o più parametri in base ai requisiti e sono separati da virgola:
Parametro | Descrizione |
---|---|
DSN | Il parametro DSN fa riferimento al nome del set di dati fisico di un set di dati appena creato o esistente. Il valore DSN può essere composto da sotto-nomi di lunghezza da 1 a 8 caratteri ciascuno, separati da punti e di lunghezza totale di 44 caratteri (alfanumerici). La seguente è la sintassi: DSN=Physical Dataset Name Temporary datasetsnecessitano di archiviazione solo per la durata del lavoro e vengono eliminati al completamento del lavoro. Tali set di dati sono rappresentati comeDSN=&name o semplicemente senza un DSN specificato. Se un set di dati temporaneo creato da una fase di lavoro deve essere utilizzato nella fase di lavoro successiva, viene indicato come DSN=*.stepname.ddname. Questo è chiamato Backward Referencing. |
DISP | Il parametro DISP viene utilizzato per descrivere lo stato del set di dati, la disposizione alla fine della fase di lavoro al completamento normale e anormale. DISP non è richiesto in un'istruzione DD solo quando il set di dati viene creato ed eliminato nella stessa fase del lavoro (come i set di dati temporanei). La seguente è la sintassi: DISP=(status, normal-disposition, abnormal-disposition) Di seguito sono riportati i valori validi per status:
UN normal-disposition parametro può assumere uno dei seguenti valori
UN abnormal-disposition parametro può assumere uno dei seguenti valori
Ecco la descrizione dei parametri CATLG, UNCATLG, DELETE, PASS e KEEP:
Quando uno qualsiasi dei sottoparametri di DISP non è specificato, i valori predefiniti sono i seguenti:
|
DCB | Il parametro Data Control Block (DCB) descrive in dettaglio le caratteristiche fisiche di un set di dati. Questo parametro è richiesto per i set di dati appena creati nella fase di lavoro. LRECL è la lunghezza di ogni record contenuto nel set di dati. RECFM è il formato di registrazione del set di dati. RECFM può contenere valori FB, V o VB. FB è un'organizzazione a blocchi fissi in cui uno o più record logici sono raggruppati in un unico blocco. V è un'organizzazione variabile in cui un record logico di lunghezza variabile è posizionato all'interno di un blocco fisico. VB è un'organizzazione a blocchi variabili in cui uno o più record logici di lunghezza variabile sono inseriti in un blocco fisico. BLKSIZE è la dimensione del blocco fisico. Più grande è il blocco, maggiore è il numero di record per un file FB o VB. DSORG è il tipo di organizzazione del set di dati. DSORG può contenere valori PS (Physical Sequential), PO (Partitioned Organization) e DA (Direct Organization). Quando è necessario replicare i valori DCB di un dataset su un altro all'interno dello stesso jobtep o JCL, viene specificato come DCB = *. Stepname.ddname dove stepname è il nome della fase di lavoro e ddname è il dataset da cui il DCB viene copiato. Controlla l'esempio sotto dove RECFM = FB, LRECL = 80 forma il DCB del dataset OUTPUT1. |
SPACE | Il parametro SPACE specifica lo spazio richiesto per il set di dati nel DASD (Direct Access Storage Disk). La seguente è la sintassi: SPACE=(spcunits, (pri, sec, dir), RLSE) Di seguito la descrizione di tutti i parametri utilizzati:
|
UNIT | I parametri UNIT e VOL sono elencati nel catalogo di sistema per i dataset catalogati e quindi è possibile accedervi solo con il nome DSN fisico. Ma per i set di dati non catalogati, l'istruzione DD dovrebbe includere questi parametri. Per creare nuovi set di dati, è possibile specificare i parametri UNIT / VOL o Z / OS alloca il dispositivo e il volume adatti. Il parametro UNIT specifica il tipo di dispositivo su cui è archiviato il set di dati. Il tipo di dispositivo può essere identificato utilizzando l'indirizzo hardware o il gruppo di tipi di dispositivo. La seguente è la sintassi: UNIT=DASD | SYSDA Dove DASD sta per Direct Access Storage Device e SYSDA sta per System Direct Access e si riferisce al successivo dispositivo di archiviazione su disco disponibile. |
VOL | Il parametro VOL specifica il numero di volume sul dispositivo identificato dal parametro UNIT. La seguente è la sintassi: VOL=SER=(v1,v2) Dove v1, v2 sono i numeri di serie del volume. Puoi anche usare la seguente sintassi: VOL=REF=*.DDNAME Dove REF è il riferimento a ritroso al numero di serie del volume di un set di dati in uno dei passaggi di lavoro precedenti nel JCL. |
SYSOUT | I parametri dell'istruzione DD discussi finora corrispondono ai dati archiviati in un set di dati. Il parametro SYSOUT indirizza i dati al dispositivo di output in base alla classe specificata. Di seguito è riportata la sintassi SYSOUT=class Dove se la classe è A, indirizza l'output alla stampante e se la classe è * quindi indirizza l'output alla stessa destinazione di quella del parametro MSGCLASS nell'istruzione JOB. |
Esempio
Di seguito è riportato un esempio, che utilizza le istruzioni DD insieme a vari parametri spiegati sopra:
//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=*