Job Control Language

Da Wikipedia, l'enciclopedia libera.
Curly Brackets.svg
A questa voce o sezione va aggiunto il template sinottico {{Linguaggio di programmazione}}
Per favore, aggiungi e riempi opportunamente il template e poi rimuovi questo avviso.
Per le altre pagine a cui aggiungere questo template, vedi la relativa categoria.

Il Job Control Language (JCL) è un linguaggio di scripting utilizzato nei sistemi operativi IBM DOS/VSE, OS/VS1 ed MVS per eseguire (in gergo lanciare) una procedura batch su un sistema generalmente mainframe.

Il linguaggio utilizza un file EBCDIC (o nei vecchi elaboratori un insieme di schede perforate) formato da una sequenza di tre tipi fondamentali di statement (in gergo schede): JOB, EXEC, DD nella sequenza:

JOB
EXEC
DD
...
DD
EXEC
DD
...
DD

Gli statement del JCL[modifica | modifica wikitesto]

La prima scheda (JOB), unica nel JCL e prima nella sequenza, assegna un nome alla procedura batch. Con tale nome la procedura è riconosciuta dal sistema operativo ed identificata nei messaggi di inizio e fine lavoro che appaiono sulla console.

La seconda (EXEC), una per ciascun programma, identifica tutti i programmi da eseguire per quella specifica procedura nella loro sequenza di lavorazione.

La terza (DD), Data Definition, una per ciascun dataset, definisce i dataset di input e di output utilizzati dal programma.

Gli statement iniziano sempre con una doppia barra a posizione 1 e 2.

Gli statement con un asterisco in terza posizione sono di commento e non vengono interpretati dal sistema operativo.

Gli statement che terminano con una virgola proseguono nella scheda successiva. La continuazione è utilizzata generalmente per le schede DD che devono fornire al sistema operativo numerose informazioni specifiche sui dataset utilizzati: nome del dataset, device di allocazione, formato del record, ecc.

Il JCL termina con uno statement che contiene solo una doppia slash.

Esempio di un semplice JCL[modifica | modifica wikitesto]

//POPRRIEP  JOB  
//**************************************************************************************** 
//* XII CENSIMENTO GENERALE DELLA POPOLAZIONE 1981 
//* PROCEDURA POP14 - ELABORAZIONE REGIONALE FASE RIEPILOGO 
//**************************************************************************************** 
//POP14RS1 EXEC PGM=SORT,TIME=1440 
//STEPLIB  DD  DSNAME=SYS1.LINKLIB,DISP=SHR 
//SORTLIB  DD  DSNAME=SYS1.SORTLIB,DISP=SHR 
//SYSOUT   DD  SYSOUT=A 
//SORTWK01 DD UNIT=3350,DSN=&&ROMA1,DISP=(NEW,DELETE), 
// SPACE=(CYL,(270)),VOL=SER=WORK2A 
//SORTWK02 DD UNIT=3350,DSN=&&ROMA2,DISP=(NEW,DELETE), 
// SPACE=(CYL,(270)),VOL=SER=WORK2A 
//SORTWK03 DD UNIT=3350,DSN=&&ROMA3,DISP=(NEW,DELETE), 
// SPACE=(CYL,(270)),VOL=SER=WORK2B 
//SORTWK04 DD UNIT=3350,DSN=&&ROMA4,DISP=(NEW,DELETE), 
// SPACE=(CYL,(270)),VOL=SER=WORK2B 
//SORTWK05 DD UNIT=3350,DSN=&&ROMA5,DISP=(NEW,DELETE), 
// SPACE=(CYL,(270)),VOL=SER=WORK2C 
//SORTWK06 DD UNIT=3350,DSN=&&ROMA6,DISP=(NEW,DELETE), 
// SPACE=(CYL,(270)),VOL=SER=WORK2C 
//SORTWK07 DD UNIT=3350,DSN=&&ROMA7,DISP=(NEW,DELETE), 
// SPACE=(CYL,(270)),VOL=SER=WORK2D 
//SORTWK08 DD UNIT=3350,DSN=&&ROMA8,DISP=(NEW,DELETE), 
// SPACE=(CYL,(270)),VOL=SER=WORK2D 
//SORTIN   DD  UNIT=3350,DISP=(OLD,KEEP),DSN=COPIA99.ROMA, 
// VOL=SER=(RICDK1,RICDK2,RICDK3) 
//SORTOUT  DD  UNIT=(3350,3),DCB=(RECFM=FB,LRECL=130,BLKSIZE=18980), 
// SPACE=(CYL,(520,180),RLSE),DISP=(NEW,PASS), 
// DSN=POP14RS1.ROMA,VOL=SER=(WORK2E,WORK2F,WORK2G) 
//SYSIN  DD  * 
SORT FIELDS=(59,4,A),FORMAT=BI 
/* 
//POP14110 EXEC PGM=POP14110 
//STEPLIB  DD DSN=PGM.LOAD,DISP=SHR 
//SYSOUT   DD SYSOUT=A 
//SYSUDUMP DD SYSOUT=A 
//SYSDBOUT DD SYSOUT=A 
//FILINP   DD UNIT=3350,DSN=POP14RS1.ROMA, 
// DISP=(OLD,KEEP,KEEP),VOL=SER=(WORK2E,WORK2F,WORK2G) 
//ORIEP117 DD UNIT=(3400-6,P),DSN=ORIEP117.ROMA,VOL=SER=09995, 
// DCB=(RECFM=FB,LRECL=400,BLKSIZE=8000),DISP=(NEW,KEEP) 
//ORIEP10  DD UNIT=(3400-6,P),DSN=ORIEP10.ROMA,VOL=SER=06583, 
// DCB=(RECFM=FB,LRECL=400,BLKSIZE=8000),DISP=(NEW,KEEP) 
//CHKPOINT DD UNIT=3350,VOL=SER=VS1104,DSN=CHKPOINT.ROMA, 
// DISP=(NEW,KEEP),SPACE=(CYL,(20,4),RLSE) 
//OSTAMPA  DD SYSOUT=A,DCB=(RECFM=FA,BLKSIZE=133) 
//

Collegamenti esterni[modifica | modifica wikitesto]