Job Control Language

Fra Wikipedia, den frie encyklopædi
Gå til: navigation, søg

Job Control Language forkortet JCL er et programmeringssprog, som bruges til at beskrive start af programmer på en IBM-mainframe. JCL kom som en del af styresystemet OS/360 og har været med i alle senere versioner uden væsentlige ændringer. En sekvens af programmer, der afvikles kaldes i denne sammenhæng for et job.

Strukturen i JCL[redigér | redigér wikikode]

Der er kun få kommandoer i JCL. Til gengæld er der masser af parametre. Nogle parametre har selv parametre. Der er store krav til formateringen, så et mellemrum for meget eller for lidt kan gøre at programmet ikke vil virke. Alle linjer med JCL-kommandoer skal starte med //. Kommentarer laves med //* og data, der angives i selve JCL'en afsluttes med /*.

JOB[redigér | redigér wikikode]

Alt JCL skal starte med en JOB-kommando. Her beskrives, hvad jobbet hedder, og hvordan det overordnet skal afvikles. Formatet er:

//jobnavn JOB 'brugerid', CLASS=x, MSGCLASS=(a,b), REGION=nK, TIME=(m.n)

Brugeridenten fortæller, hvem der skal modtage statusinformation og output. Det er også denne denne bruger, der vil blive afregnet for brug af CPU--tid og andre ressourcer. CLASS-parametren afgør, hvilken klasse jobbet afvikles i. For hver klasse er det defineret, hvor meget CPU-tid et job højst kan få, og hvordan print og andet output behandles. MSGCLASS bruges til at definere, hvor mange meddelelser, der vises. Første del-parameter bestemmer mængden af systemmeddelelser mens den andne parameter bestemmer mængden job-specifikke meddelelser. REGION sætter den maksimale mængde virtuel hukommelse, der må bruges og TIME bestemmer mængden af CPU-tid. Hvis REGION og TIME ikke er defineret, bruges værdier fra den aktuelle klasse.

EXEC PGM[redigér | redigér wikikode]

Denne kommando bruges til afvikling af et program. Hver EXEC definerer et trin (step) i jobbet. Hver trin har et unikt navn inden for et job. Format:

//trin EXEC PGM=programnavn, PARM="parametre"

Ud over det viste kan CLASS og MSGCLASS mv. defineres her. De nye værdier vil blive brugt i det aktuelle trin.

EXEC PROC[redigér | redigér wikikode]

EXEC PROC udfører en procedure, som er et stykke JCL, der er defineret på forhånd. En procedure kaldes med et navn og en række parametre, der er afhængige af den enkelte procedure. Et kald kan se sådan ud:

//trin EXEC PROC=procedure, param1=foo, param2=bar

DD[redigér | redigér wikikode]

DD bruges til at beskrive de dataset (filer), der skal bruges i et enkelt trin. Man skal definere, om et dataset skal findes i forvejen eller om det skal oprettes. Man skal også tage stilling til, om et nyt dataset skal slettes, hvis jobbet skulle fejle. For nye dataset skal der også angives en størrelse. Størrelsen af et dataset beskrives traditionelt som et ental spor eller cylindre på en disk. Nyere udgaver af JCL kan også håndtere angivelser i kilo- og megabytes.

Man bruger også DD til at angive, hvor der skal ledes efter procedurer og programmer. DD kan også bruges til at fortælle, hvor output skal sendes hen.

Procedurer[redigér | redigér wikikode]

Procedurer er skabeloner, hvor der bruges parametre i stedet for konkrete navne på dataset. En procedure er opbygget som følger:

//MINPROC PROC &LIB="TEST.LIBRARY"
// Her sker noget
//PEND