Job Control Language ( JCL ) este un limbaj de programare utilizat în sistemele de operare mainframe IBM OS / 360 , MVS , OS / 390 , z / OS și clonele acestora, inclusiv EU OS , TKS și BOS . Linia IBM DOS/360 , DOS/VS , VSE , z/VSE a implementat o versiune parțial compatibilă a JCL. Sistemul de operare IBM GCS Guest implementează un subset al JCL.
Folosit pentru a controla lansarea sarcinilor lot . Datorită scopului său funcțional, are proprietăți expresive minime ca, de fapt, un limbaj de programare.
Sintaxa operatorului a fost inițial legată rigid de anumite poziții (coloane) pe o carte perforată :
Această sintaxă a rămas încă de la momentul în care sarcina a fost introdusă din carduri perforate (cu 80 de coloane) și vă permite să vă protejați împotriva lansării accidentale a informațiilor de la carduri introduse incorect (inversate).
Din motive de compatibilitate, nu s-a schimbat din anii 1960 . și continuă să fie utilizat în versiunile moderne ale sistemelor de operare z/OS și z/VSE .
Această secvență de comenzi (o „loc de muncă” în termenii EU OS) copiază conținutul unui set de date IS198.TEST.INPUTîntr-un set de date IS198.TEST.OUTPUT.
//IS198CPY JOB (IS198T3*0500),'COPY JOB',CLASS=L,MSGCLASS=X //COPY01 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=A //SYSUT1 DD DSN=IS198.TEST.INPUT,DISP=SHR //SYSUT2 DD DSN=IS198.TEST.OUTPUT, // DISP=(NEW,CATLG,DELETE), // SPACE=(CYL,(40,5),RLSE), // DCB=(LRECL=115,BLKSIZE=0), // DATACLAS=SEQFB //SYSIN DD DUMMY //
Copierea este efectuată de un utilitar IEBGENERcare copiază setul de date de intrare ( SYSUT1) în setul de date de ieșire ( SYSUT2). Noului set de date de ieșire ( ) i se va aloca spațiu (parametru ) pe dispozitivul de acces direct: 40 de cilindri inițial și de 15 ori 5 cilindri când spațiul alocat inițial este epuizat. Dacă lucrarea se finalizează cu succes, noul set de date va fi catalogat ( ), iar dacă nu reușește, va fi șters ( ) DISP=(NEW,CATLG,DELETE)SPACEDISP=(NEW,CATLG,DELETEDISP=(NEW,CATLG,DELETE)
În plus, programul are un flux de intrare ( SYSIN- neutilizat (DUMMY)) și un flux de ieșire ( SYSPRINT). Operatorul JOBdescrie informațiile despre contul utilizatorului (formatul depinde de setările sistemului) și parametrii de execuție a lucrării. În acest exemplu, sarcina este executată cu o clasă L(parametrii clasei sunt determinați de administratorul de sistem la configurarea sistemului de operare), mesajele de serviciu vor fi trimise în coada de ieșire a clasei A. Numele dat ca etichetă a instrucțiunii JOB (IS198CPY) va fi folosit ca ID job atunci când jobul este executat.
Într -un sistem asemănător Unix , ar arăta o acțiune similară
cp IS198.TEST.INPUT IS198.TEST.OUTPUT
Cu toate acestea, trebuie avut în vedere că „sarcina” în ceea ce privește sistemul de operare „tradițional” pentru mainframe încă nu este un analog direct al unui fișier batch într-un sistem asemănător Unix. Sarcinile sunt procesate de un program special de sistem - Task Scheduler. Deoarece limbajul de control al jobului descrie nu numai ordinea de execuție a anumitor programe, ci și toate resursele necesare pentru aceasta (numele seturilor de date și un loc pentru acestea, dispozitivele I/O, cerințele pentru RAM și timp CPU etc.) . Planificatorul organizează ordinea de execuție a sarcinilor astfel încât să utilizeze cât mai eficient resursele de calcul disponibile cu intervenția minimă a operatorului uman.