Job Control Language (" jobbkontrollspråk "), ofte kjent somJCL, angir visseskriptspråk, spesielt påOS- hovedrammefraIBM, hvis rolle er å kjøre enbatch.
Det er to IBM JCL-språk, det ene brukes på DOS / 360- familien , det andre på OS / 360- familien . Selv om de har vanlige syntaks- og designregler, er de ganske forskjellige språk.
I JCL er enheten jobben , som består av ett eller flere trinn . Hvert trinn består av utførelsen av et bestemt program. Dermed kan en jobb som vil bestå av å lage en rapport bestå av følgende trinn :
JCL bruker grunnleggende identifikatorer som kalles "kort" (resten av tiden da hver linje med skript, program osv. Ble levert til datamaskinen ved hjelp av et hullkort ). Et JCL-skript må starte med JOB-kortet som spesielt tillater:
Det er mulig å lage JCL-skript som kan kalles i andre JCL-skript ved å sende parametere om nødvendig. Slike skript kalles prosedyrer.
Merk: Ved metonymi betegner ordet JCL også selve skriptet (jobben). I et IBM-miljø snakker vi altså ikke om et JCL-skript, men bare om JCL ( f.eks: starte eller utføre en JCL).
JCL-syntaksen sammenlignet med de fleste batch-språk er ganske tung. Hvis du for eksempel vil kopiere en fil til en annen under MS-DOS eller UNIX , er det bare å skrive en instruksjon som:
copy fichier1 fichier2eller i JCL OS, for å få det samme resultatet, må du skrive noe sånt som:
//IS198CPY JOB (IS198T30500),'COPY JOB',CLASS=L,MSGCLASS=X //COPY01 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSUT1 DD DSN=FICHIER1,DISP=SHR //SYSUT2 DD DSN=FICHIER2, // DISP=(NEW,CATLG,DELETE), // SPACE=(CYL,(40,5),RLSE), // DCB=(LRECL=115,BLKSIZE=1150) //SYSIN DD DUMMYDenne tyngden skyldes noen få faktorer:
IBM beholdt den originale JCL-syntaksen slik at eldre skript fortsatt kan kjøres, men introduserte også mer brukervennlige alternativer for programmereren som CLIST. Muligheten for å bruke parametrerbare prosedyrer er også en måte å delvis komme seg rundt den tungvint syntaksen.
JCL-skriptlinjer er begrenset til 80 tegn. Dette er en arv fra dagene da programmene ble skrevet med 80 kolonnestansede kort. Alt som er skrevet ut over 80 th karakter er ignorert av operativsystemet. I virkeligheten er bare de første 71 tegnene virkelig tatt i betraktning og kan brukes av programmereren. Den 72 th karakter består vanligvis av et mellomrom og tegn fra 73 til 80 er reservert for linjenummerering.
Alle linjer unntatt inngangsstrømmer må starte med en skråstrek (/), og alle linjer som inneholder operativsystemprosesser må starte med to skråstreker (//) må alltid starte i kolonne 1. Det er to unntak fra denne regelen: skilletegn (/ *) , og kommentaren (// *).
Mange JCL-utsagn er for lange til å passe til 71 tegn, men kan utvides over et udefinert antall linjer.
Den generelle syntaksen til en JCL-uttalelse er:
//NOM CARTE PARAMETRESParametere er atskilt med komma (,) uten mellomrom.
JCL tillater inngangsstrømmer, det vil si kort som vil bli brukt direkte av de kallte programmene og ikke operativsystemet direkte.
Selv om DOS- og OS JCL-ene ikke definerer inngangsstrømmer det samme, avgrenser de begge dem med en stjerneskråstrek (/ *) i kolonne 1.
Strømmene, samt inngangs- / utdatafilene, kan beskrives ved hjelp av DD-kortet (som senere vil inspirere UNIX dd-verktøyet).
I DOS JCL er parametrene posisjonelle. Rekkefølgen parametrene skrives inn er derfor ekstremt viktig, og til og med plasseringen for valgfrie parametere må fylles ut med komma hvis programmereren ikke bruker dem.
Dette illustreres av eksemplet nedenfor:
// TLBL TAPEFIL,'COPYTAPE.JOB',,,,2 // ASSGN SYS005,DISK,VOL=VOL01,SHR // DLBL DISKFIL,'COPYTAPE.JOB',0,SD // EXTENT SYS005,VOL01,1,0,800,16I den opprinnelige versjonen av DOS / 360 så vel som i de fleste versjoner av DOS / VS, måtte du spesifisere modellnummeret på maskinvaren som ble brukt til å spille hver plate eller kassett, inkludert midlertidige filer. Å endre maskinvaren betydde derfor å måtte endre mange JCL-skript.
Generelt er JCL for OS / 360-familier mer fleksibel og enklere å bruke enn JCL for DOS / 360-familier.
JCL OS har bare tre grunnleggende kort:
JCL OS bruker også nøkkelordsparametere, noe som betyr at rekkefølgen parametrene sendes ikke betyr noe, og at valgfrie parametere ikke trenger å legges inn hvis de ikke brukes.
For eksempel :
//NEWFILE DD DSN=MYFILE01,UNIT=DISK,SPACE=(TRK,80,10), // DCB=(LRECL=100,BLKSIZE=1000), // DISP=(NEW,CATLG,DELETE)Mange nøkkelord (DSN, UNIT, SPACE, etc. ) brukes til å overføre parametere knyttet til NEWFILE-filen.
I JCL OS kan maskinvare deklareres ved hjelp av generiske termer som TAPE eller DISK, som gir relativ maskinvareuavhengighet.
JCL OS lar deg lage konfigurerbare prosedyrer, som lar deg lage skript som er enkle å bruke på nytt.
Prosedyrene er erklært ved hjelp av PROC-kortet. Parametere er angitt med tegn (&), og en standardverdi kan oppgis.
For eksempel kan du lage en prosedyre som denne:
//MYPROC PROC FNAME=MYFILE01,SPTYPE=TRK,SPINIT=50,SPEXT=10,LR=100,BLK=1000 ..... //NEWFILE DD DSN=&FNAME,UNIT=DISK,SPACE=(&SPTYPE,&SPINIT,&SPEXT), // DCB=(LRECL=&LR,BLKSIZE=&BLK),DISP=(NEW,CATLG,DELETE) ....og kaller det dette:
//JOB01 JOB .......... //STEP01 EXEC MYPROC FNAME=JOESFILE,SPTYPE=CYL,SPINIT=10,SPEXT=2,LR=100,BLK=2000eller:
//JOB02 JOB .......... //STEP01 EXEC MYPROC FNAME=SUESFILE,SPTYPE=TRK,SPINIT=500,SPEXT=100,LR=100,BLK=5000JCL OS brukes til å betingelsen utførelsen av trinnene i henhold til feilene som ble produsert av de forrige trinnene. Faktisk produserer hvert trinn en returkode (COND), som generelt følger denne standarden:
OS JCL brukes til å teste (eller endre) verdien av denne feilkoden for å betingelsen for utførelsen av følgende trinn.
Så i følgende JCL-skript:
//MYJOB JOB ........... //STEP01 EXEC PGM=PROG01 .... //STEP02 EXEC PGM=PROG02,COND=(4,GT,STEP01) .... //STEP03 EXEC PGM=PROG03,COND=(8,LE) .... //STEP04 EXEC PGM=PROG04,COND=(ONLY,STEP01) .... //STEP05 EXEC PGM=PROG05,COND=(EVEN,STEP03) ....gå:
IBM introduserte også senere IF-setningen som gjør koding av disse forholdene litt enklere.
IBM leverer forskjellige verktøy med sine hovedrammeinstallasjoner, som kan kalles i et JCL-skript. De tillater behandling av filer (kalt datasett) som kopiering, tildeling, omformatering, etc. eller forskjellige operasjoner: sortering, sammenslåing, etc.
Blant de mest brukte er: