Job Control Language
# Job Control Language

In informatica 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.

## Descrizione

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

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.

## Utility del JCL

La funzione di un JCL è di eseguire dei programmi ed allocargli le risorse fisiche (data set, workarea ed unit). Questo sembra molto semplice ma quando la mole di programmi e risorse diventa molto grande, sorgono problemi di gestione delle procedure di JCL. Nel tempo sono state create delle applicazioni schedulatori (Control-M) per automatizzare l'esecuzione delle procedure di JCL; la loro funzione è di analizzare i return code rilasciati dal job e far partire il successivo; il risultato di tutte l'elaborazioni gestite può essere monitorato online o con dei report.

Quando gli statement di JCL diventano migliaia, sorge il problema di conoscere tutti gli applicativi che utilizzano le risorse fisiche, a questo proposito sono state create delle applicazioni che collezionano gli statement e creano archivi (repository) per monitorare l'uso dei data bases e dei files.

