Översikt

Job Control Language, vanligen förkortat JCL, är ett kontrollspråk som används för att tala om för ett IBM‑stordatorsystem vilka batchjobb som ska köras och hur dessa ska hanteras. JCL beskriver vilka program som ska exekveras, vilka filer och enheter som ska användas för in‑ och utdata, samt villkor för felhantering och återanrop. Det är i grunden ett deklarativt, systemnära skriptspråk och skiljer sig från vanliga programmeringsspråk genom att fokus ligger på resurshantering och körningsparametrar i stället för algorithmisk logik.

Huvudkomponenter och syntax

En JCL‑körning består vanligen av flera rader eller uttalanden där de viktigaste typerna är JOB, EXEC och DD. Typiska element är:

  • JOB – deklarerar ett jobb, ger det ett namn och kan innehålla schemainformation och prioritet.
  • EXEC – anger vilket program eller vilken procedur (PROC) som ska köras i ett steg.
  • DD (Data Definition) – beskriver in‑ och utdataresurser: datasetnamn (DSN), enhet (UNIT), volym (VOL), disposition (DISP) med mera.

JCL‑uttalanden börjar ofta med två snedstreck (//) och använder positions‑ och nyckelordsparametrar. Det finns mekanismer för conditions (till exempel COND eller nyare IF/THEN/ELSE), symboliska parametrar i PROC och metoder för radbrytning och fortsättning. Även om syntaxen är kompakt kan den upplevas som kryptisk för nybörjare.

Historik och dialekter

JCL utvecklades för IBM:s tidiga stordatorsystem och har två huvudgrenar. Den ena grenen utvecklades i samband med DOS/360 och lever vidare i systemen i z/VSE‑familjen. Den andra grenen hör ihop med OS/360 och efterföljande z/OS, där tilläggen från Job Entry Subsystem (JES) ofta kallas JECL (Job Entry Control Language). De båda familjerna delar vissa grundläggande koncept men skiljer sig i detaljer, nyckelord och exekveringsmiljöer, och program som skrivits för den ena kan kräva ändringar för att fungera i den andra.

JES‑systemen (till exempel JES2 och JES3) ansvarar för jobbkön, schemaläggning och kommunikation med operatörer och skrivare. JCL i z/OS kan därför innehålla JES‑specifika parametrar och funktioner som inte finns i z/VSE‑världen.

Användningsområden och exempel

JCL används framför allt för batchbearbetning: periodiska jobb som körs nattetid, storskalig dataomvandling, säkerhetskopiering, rapportgenerering och som startpunkt för underhålls‑ eller driftsrutiner. Ett enkelt JCL‑jobb kan bestå av en JOB‑rad följd av ett eller flera EXEC‑steg och DD‑definitioner som pekar ut ingångs‑ och utgångsdata. Många organisationer har omfattande bibliotek av PROC‑definitioner så att vanliga konstruktioner återanvänds.

Skillnader mot andra kontrollspråk och praktiska aspekter

Till skillnad från interaktiva shells är JCL i huvudsak avsedd för batch‑körning och förlitar sig på operativsystemets kö- och resurshantering. Fel i JCL kan leda till att jobb inte startar, att fel dataset allokeras eller att stora mängder data skrivs felaktigt, varför noggrannhet och testning är viktiga. Många moderna utvecklingsverktyg och editors tillhandahåller syntakshjälp, validering och mallar för att underlätta arbetet.

Vidare läsning

För allmän orientering om vad JCL är och hur det används finns översikter och handböcker som beskriver syntax, vanliga nyckelord och exempel. Se till exempel introduktioner till skriptspråk för stordatorer, material från leverantören IBM och dokumentation för de olika operativsystemen i stordatorsammanhang för mer detaljerad och systemspecifik information.