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:

  • NEW: Il set di dati viene appena creato dalla fase di lavoro. OUTPUT1 nell'esempio sopra.

  • OLD: Il set di dati è già stato creato e verrà sovrascritto nella fase di lavoro. La fase di lavoro ottiene l'accesso esclusivo al set di dati e nessun altro lavoro può accedere a questo set di dati fino al completamento della fase di lavoro.

  • SHR: Il set di dati è già stato creato e verrà letto nella fase di lavoro. Il set di dati può essere letto da più lavori contemporaneamente. Esempio: INPUT1 e INPUT2.

  • MOD: Il set di dati è già stato creato. Questa disposizione verrà utilizzata quando è necessario aggiungere nuovi record al set di dati esistente (i record esistenti non verranno sovrascritti).

UN normal-disposition parametro può assumere uno dei seguenti valori

  • CATLG, UNCATLG, DELETE, PASS e KEEP

UN abnormal-disposition parametro può assumere uno dei seguenti valori

  • CATLG, UNCATLG, DELETE e KEEP

Ecco la descrizione dei parametri CATLG, UNCATLG, DELETE, PASS e KEEP:

  • CATLG : Il set di dati viene conservato con una voce nel catalogo di sistema.

  • UNCATLG : Il set di dati viene conservato ma la voce del catalogo di sistema viene rimossa.

  • KEEP: Il set di dati viene conservato senza modificare le voci di catalogo. KEEP è l'unica disposizione valida per i file VSAM. Deve essere utilizzato solo per set di dati permanenti.

  • DELETE : Il set di dati viene eliminato dal catalogo utente e di sistema.

  • PASS: Questo è valido solo per la disposizione normale. Viene utilizzato quando il set di dati deve essere passato ed elaborato dalla fase di lavoro successiva in un JCL

Quando uno qualsiasi dei sottoparametri di DISP non è specificato, i valori predefiniti sono i seguenti:

  • status : NUOVO è il valore predefinito.

  • normal-disposition : Se lo stato è NUOVO, la disposizione normale predefinita è DELETE, altrimenti è KEEP.

  • abnormal-disposition : Uguale alla disposizione normale.

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:

  • spcunits : Può essere uno dei CYL (cilindro), TRK (tracce) o BLKSIZE (dimensione blocco).

  • pri : Questo è lo spazio principale richiesto per il set di dati.

  • sec : Questo è lo spazio aggiuntivo richiesto, quando lo spazio principale non è sufficiente.

  • ir : Si tratta dei blocchi di directory richiesti, se il dataset è un PDS (Partitioned Dataset) con membri al suo interno.

  • RLSE : Viene utilizzato per liberare lo spazio inutilizzato al completamento del lavoro.

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=*