Jobkontrolsprog

Job Control Language ( JCL ) er et  programmeringssprog, der bruges i IBM mainframe -operativsystemer OS /360 , MVS , OS/390 , z/OS og deres kloner, herunder EU OS , TKS og BOS . IBM DOS/360 , DOS/VS , VSE , z/VSE -linjen implementerede en delvist kompatibel version af JCL. IBM GCS Guest OS implementerer en undergruppe af JCL.

Bruges til at styre lanceringen af ​​batchjob . På grund af dets funktionelle formål har det minimale udtryksegenskaber som i virkeligheden et programmeringssprog.

Operatørens syntaks var oprindeligt stift bundet til bestemte positioner (kolonner) på et hulkort :

Denne syntaks har eksisteret siden det tidspunkt, hvor opgaven blev indtastet fra hulkort (80-søjler) og giver dig mulighed for at beskytte mod utilsigtet lancering af information fra forkert indsatte (omvendte) kort.

Af kompatibilitetsformål har den ikke ændret sig siden 1960'erne . og bliver fortsat brugt i moderne versioner af z/OS- og z/VSE -operativsystemerne .

Eksempel

Denne sekvens af kommandoer (et "job" i EU OS-termer) kopierer indholdet af et datasæt IS198.TEST.INPUTtil et datasæt 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 //

Kopiering udføres af et hjælpeprogram IEBGENER, der kopierer inputdatasættet ( SYSUT1) til outputdatasættet ( SYSUT2). Det nye ( ) outputdatasæt vil blive tildelt plads (parameter ) på enheden med direkte adgang: 40 cylindre i starten og 15 gange 5 cylindre, når den oprindeligt tildelte plads er brugt op. Hvis jobbet fuldføres med succes, vil det nye datasæt blive katalogiseret ( ), og hvis det mislykkes, vil det blive slettet ( ) DISP=(NEW,CATLG,DELETE)SPACEDISP=(NEW,CATLG,DELETEDISP=(NEW,CATLG,DELETE)

Derudover har programmet en input-stream ( SYSIN- ikke brugt (DUMMY)) og en output-stream ( SYSPRINT). Operatøren JOBbeskriver brugerens kontooplysninger (formatet afhænger af systemindstillingerne) og jobudførelsesparametrene. I dette eksempel udføres opgaven med en klasse L(klasseparametre bestemmes af systemadministratoren ved opsætning af OS), servicemeddelelser vil blive udsendt til outputkøen for klassen A. Navnet angivet som etiketten for JOB-sætningen (IS198CPY) vil blive brugt som job-id, når jobbet udføres.

I et Unix-lignende system ville en lignende handling se ud

cp IS198.TEST.INPUT IS198.TEST.OUTPUT

Man skal dog huske på, at "opgaven" i form af "traditionelt" OS for mainframen stadig ikke er en direkte analog til en batchfil i et Unix-lignende system. Opgaver behandles af et særligt systemprogram - Task Scheduler. Da jobkontrolsproget ikke kun beskriver rækkefølgen for udførelse af visse programmer, men også alle de nødvendige ressourcer til dette (navne på datasæt og et sted for dem, I/O-enheder, krav til RAM og CPU-tid osv.) . Planlæggeren organiserer udførelsesrækkefølgen af ​​opgaver på en sådan måde, at den gør den mest effektive brug af tilgængelige computerressourcer med minimal menneskelig operatørindblanding.