Jobbkontroll språk

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.

Felles for DOS og OS JCL

Design

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).

Syntaks

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 fichier2

eller 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 DUMMY

Denne 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 PARAMETRES

Parametere er atskilt med komma (,) uten mellomrom.

Inngangsstrømmer

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).

Poeng som er spesifikke for DOS JCL

Posisjonsparametere

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,16

Maskinvareavhengighet

I 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.

Poeng som er spesifikke for JCL OS

Generelt er JCL for OS / 360-familier mer fleksibel og enklere å bruke enn JCL for DOS / 360-familier.

Grunnleggende kort

JCL OS har bare tre grunnleggende kort:

Nøkkelordsparametere

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.

Maskinvareuavhengighet

I JCL OS kan maskinvare deklareres ved hjelp av generiske termer som TAPE eller DISK, som gir relativ maskinvareuavhengighet.

Konfigurerbare prosedyrer

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=2000

eller:

//JOB02 JOB .......... //STEP01 EXEC MYPROC FNAME=SUESFILE,SPTYPE=TRK,SPINIT=500,SPEXT=100,LR=100,BLK=5000

Betinget utførelse

JCL 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.

Verktøy

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:

Referanser