Job Control Language
Job Control Language (llenguatge de control de treballs, JCL) és un llenguatge de programació per a la creació de scripts i el llançament de treballs per lots en ordinadors centrals IBM. El codi JCL determina quins programes s'executen, utilitzant quins fitxers i dispositius per a l'entrada o la sortida. Els paràmetres del JCL també poden proporcionar informació comptable per al seguiment dels recursos utilitzats per un treball, així com en quina màquina s'ha d'executar el treball.[1]
Hi ha dues variants principals basades en la plataforma amfitriona i el llinatge associat. Una versió està disponible al llinatge de la plataforma que comença amb DOS/360 i ha progressat fins a z/VSE. L'altra versió comença amb OS/360 i continua fins a z/OS, que inclou extensions JES, Job Entry Control Language (JECL). Les variants comparteixen sintaxi i conceptes bàsics, però tenen diferències significatives. El sistema operatiu VM no té JCL com a tal; els components CP i CMS tenen llenguatges d'ordres.[2]
El terme llenguatge de control de treballs fa referència a qualsevol llenguatge de programació per al control de treballs; no només la tecnologia mainframe d'IBM amb el mateix nom.[3]
Terminologia
[modifica]La terminologia específica de JCL inclou:[4]
Conjunt de dades
Un fitxer; temporal o permanent; ubicat en una unitat de disc, una cinta d'emmagatzematge o un altre dispositiu.
Conjunt de dades particionat (PDS)
Una col·lecció de fitxers; s'utilitza habitualment per emmagatzemar dades textuals com ara codi font, macros d'assemblador (SYS1.MACLIB), configuració del sistema (SYS1.PARMLIB), procediments JCL reutilitzables (SYS1.PROCLIB), etc. Com a col·lecció de fitxers, un PDS és com un fitxer d'arxiu (ZIP, TAR, etc.) que al seu torn és com un directori del sistema de fitxers. Un PDS pot contenir codi executable (carregar mòduls o objectes de programa) que fa que un PDS sigui com una biblioteca estàtica basada en Unix. Un membre, un cop emmagatzemat, no es pot actualitzar, tot i que es pot suprimir i substituir, com ara mitjançant la utilitat IEBUPDTE. Des del llançament de MVS DFP 3.2 de 1989, hi ha disponible una versió millorada, el conjunt de dades particionat estès (PDSE).[5]
Membre
Un fitxer (conjunt de dades) en un PDS. Es pot accedir a un membre especificant el nom del PDS amb el nom del membre entre parèntesis. Per exemple, la macro de sistema GETMAIN a SYS1.MACLIB es pot referenciar com a SYS1.MACLIB(GETMAIN)
SYS1.MACLIB(GETMAIN)
.
Serveis del sistema Unix (USS)
Un entorn Unix complet que s'executa com a part del programa de control base MVS. Permet que els fitxers, scripts, tasques i programes Unix s'executin en un mainframe en un entorn Unix compatible amb POSIX sense virtualització.
Motivació
[modifica]Originàriament, els sistemes mainframe estaven orientats al processament per lots. Moltes tasques per lots requereixen configuració, amb requisits específics per a l'emmagatzematge principal i dispositius dedicats com ara cintes magnètiques, volums de disc privats i impressores configurades amb formularis especials. JCL es va desenvolupar com un mitjà per garantir que tots els recursos necessaris estiguin disponibles abans que es programi l'execució d'una tasca. Per exemple, molts sistemes, com ara Linux, permeten la identificació dels conjunts de dades necessaris que s'especifiquen a la línia d'ordres i, per tant, estan subjectes a substitució per l'intèrpret d'ordres o que el programa els genera en temps d'execució.
En aquests sistemes, el planificador de tasques del sistema operatiu té poca o cap idea dels requisits de la tasca. En canvi, JCL especifica explícitament tots els conjunts de dades i dispositius necessaris. El planificador pot preasignar els recursos abans d'alliberar la tasca per executar-la. Això ajuda a evitar el "bloqueig", on la tasca A conté el recurs R1 i sol·licita el recurs R2, mentre que simultàniament s'executa la tasca B conté el recurs R2 i sol·licita R1. En aquests casos, l'única solució és que l'operador de l'ordinador finalitzi una de les tasques, que després s'ha de reiniciar. Amb el control de tasques, si la tasca A està programada per executar-se, la tasca B no s'iniciarà fins que la tasca A completi o alliberi els recursos necessaris.[6]
Característiques comunes al JCL de DOS i OS
[modifica]Treballs, passos i procediments
[modifica]Tant per a DOS com per a OS, la unitat de treball és la tasca. Una tasca consta d'un o diversos passos, cadascun dels quals és una sol·licitud per executar un programa específic. Per exemple, abans de l'època de les bases de dades relacionals, una tasca per produir un informe imprès per a la gestió podia constar dels passos següents: un programa escrit per l'usuari per seleccionar els registres adequats i copiar-los a un fitxer temporal; ordenar el fitxer temporal en l'ordre requerit, normalment utilitzant una utilitat d'ús general; un programa escrit per l'usuari per presentar la informació d'una manera que sigui fàcil de llegir per als usuaris finals i que inclogui altra informació útil com ara subtotals; i un programa escrit per l'usuari per formatar pàgines seleccionades de la informació de l'usuari final per mostrar-les en un monitor o terminal.
Tant en DOS com en OS JCL, la primera "targeta" ha de ser la targeta JOB, que:
- Identifica la feina.
- Normalment proporciona informació per permetre que el departament de serveis informàtics facturi al departament usuari corresponent.
- Defineix com s'ha d'executar la tasca en conjunt, p. ex. la seva prioritat en relació amb altres tasques de la cua.
Els procediments (comunament anomenats procs ) són JCL preescrits per a passos o grups de passos, inserits en una feina. Tots dos JCL permeten aquests procediments. Els procs s'utilitzen per repetir passos que s'utilitzen diverses vegades en una feina o en diverses feines diferents. Estalvien temps del programador i redueixen el risc d'errors. Per executar un procediment, simplement s'inclou al fitxer JCL una única "targeta" que copia el procediment d'un fitxer especificat i l'insereix al flux de treballs. A més, els procs poden incloure paràmetres per personalitzar el procediment per a cada ús.
Sintaxi bàsica
[modifica]Tant DOS com OS JCL tenen una longitud de línia màxima utilitzable de 80 caràcters, perquè quan es van utilitzar per primera vegada DOS/360 i OS/360, el mètode principal per proporcionar nova entrada a un sistema informàtic eren les targetes perforades de 80 columnes. Més tard va ser possible enviar treballs mitjançant fitxers de disc o cinta amb longituds de registre més llargues, però els components d'enviament de treballs del sistema operatiu ignoraven tot el que hi havia després del caràcter 80.
En rigor, ambdues famílies de sistemes operatius només utilitzen 71 caràcters per línia. Els caràcters 73-80 solen ser números de seqüència de targetes que el sistema imprimeix a l'informe de finalització de treball i són útils per identificar les ubicacions de qualsevol error informat pel sistema operatiu. El caràcter 72 normalment es deixa en blanc, però pot contenir un caràcter que no sigui en blanc per indicar que l'instrucció JCL continua a la targeta següent.
Totes les ordres, noms de paràmetres i valors han d'anar en majúscules, excepte els noms de fitxer USS.
Totes les línies excepte les d'entrada en flux (vegeu més avall) han de començar amb una barra inclinada " /
", i totes les línies que processa el sistema operatiu han de començar amb dues barres inclinades //
, sempre començant a la primera columna. Tanmateix, hi ha dues excepcions: l'instrucció delimitadora i l'instrucció de comentari. Una instrucció delimitadora comença amb una barra inclinada i un asterisc ( /*
), i una instrucció de comentari en OS JCL comença amb un parell de barres inclinades i un asterisc ( //*
) o un asterisc en DOS JCL.
Moltes instruccions JCL són massa llargues per cabre en 71 caràcters, però es poden estendre a un nombre indefinit de targetes de continuació mitjançant:
JCL del sistema operatiu | JCL del DOS |
---|---|
Finalitzant totes les targetes JCL reals excepte l'última en un punt on la sintaxi requereix una coma ( , )
|
Finalització de totes les targetes JCL reals excepte l'última en un punt on la sintaxi requereix una coma ( , ) i un caràcter que no sigui un espai en blanc a la columna 72
|
Començant cada targeta de continuació amb // a la columna 1 i després com a mínim 1 espai
|
Començant cada targeta de continuació amb espais i continuant a la columna 15 |
L'estructura dels tipus de targeta més comuns és:
JCL del sistema operatiu | JCL del DOS |
---|---|
|
|
Referències
[modifica]- ↑ «Basic JCL concepts» (en anglès americà). [Consulta: 18 agost 2025].
- ↑ «Job Control Language | Software Development» (en anglès). [Consulta: 18 agost 2025].
- ↑ Stallings, William. Computer Organization and Architecture: Designing for Performance (en anglès). Fourth. Upper Saddle River, New Jersey: Prentice-Hall, 1996, p. 228. ISBN 0-13-359985-X.
- ↑ «Understanding the JCL(Job Control Language)» (en anglès). [Consulta: 18 agost 2025].
- ↑ Lewis, Cecilia. «What We've Done for You Lately With PDSE» (en anglès). SHARE in Orlando, 08-08-2011. [Consulta: 3 març 2023].
- ↑ «Job Control Language - an overview | ScienceDirect Topics» (en anglès). [Consulta: 18 agost 2025].