Töökontrolli keel JCL IBMi suurarvutite määratlus ja kasutus
Job Control Language (JCL) on IBMi suurarvutite operatsioonisüsteemides kasutatavate skriptimiskeelte nimetus. See annab süsteemile juhiseid, kuidas käivitada partiitööd või allsüsteemi.
JCL-i eesmärk on öelda, milliseid programme käivitada, kasutades milliseid faile või seadmeid sisendiks või väljundiks. See võib näidata, millistel tingimustel tuleb mõni samm vahele jätta või kordusena käivitada ning määrata tööprioriteeti, ressursinõudeid ja töölogi käitumist.
On olemas kaks erinevat IBM Job Control keelt:
- üks operatsioonisüsteemi liini jaoks, mis algab DOS/360-ga ja mille viimane liige on z/VSE, ja
- teine OS/360 ja z/OS vahel, kusjuures viimane sisaldab nüüd JES laiendusi, Job Entry Control Language (JECL).
Nad jagavad mõningaid põhilisi süntaksireegleid ja mõningaid põhimõisteid, kuid on muidu väga erinevad.
Kus ja milleks JCL-i kasutatakse
JCL on peamiselt mõeldud partiitööde (batch jobs) kirjeldamiseks: teisendused, massandmed, varundused, aruanne- või printtööd jms. Suurarvuti keskkonnas, kus programme ei käivitata interaktiivselt iga kasutaja poolt, määrab JCL täpselt, millised programmid ja sammud järjestikku või paralleelselt käivitatakse, millised andmefailid kasutatakse ning milliseid seadmeid (näiteks kettad, lindid, printerid) on vaja.
Põhistruktuur ja tähtsamad JCL-laused
JCL-käsud koosnevad reast lihttekstist, kus tavaliselt kasutatakse eri lausetüüpe. Kõige sagedasemad on:
- JOB — defineerib partiitöö alguse, töö nime, konto- või arvestusteavet ja süsteemile vajalikud põhiparameetrid;
- EXEC — määrab, milline programm või tööetapp (step) käivitada;
- DD (Data Definition) — kirjeldab andmeühikuid: failide nimed (DSN), seadme tüübid (UNIT), juurdepääsu olek (DISP — NEW/OLD/SHR) ja muud DCB-parameetrid;
- SET, INCLUDE, PEND jt — lisaparameetrid ja JECL-i laiendused, mis võivad kontrollida töölogi või tingimuslikke osasid.
Ajalooliselt olid JCL-kaardid kindlate veerulisätetega (nt veerud 1–72), ja jätkamiseks kasutati erimärgendit. Tänapäeval redigeeritakse JCL-i teksti tööriistades, kuid mõtted kaartide struktuurist on endiselt nähtavad mitmes süntaksireeglis, nt ridade alguses olevad kaks kaldkriipsu //, mida kasutatakse juhtkaartide tähistamiseks.
Erinevused ja variandid
Kahe suure JCL-perekonna (DOS/360 → z/VSE ja OS/360 → z/OS koos JES/JECL-iga) vahel on sarnasusi, kuid ka olulisi erinevusi:
- z/VSE-liin (DOS/360 järglane) on lihtsama ülesehitusega ja sobib väiksema mahuga süsteemidele, kus on oma spetsiifika seadmete ja ühikute haldamisel;
- z/OS ja JECL sisaldavad rikkalikumaid võimalusi töösse saatmiseks, töötlemiseks ja väljundi haldamiseks, sealhulgas integreetud Job Entry Subsystem (JES) funktsioonid, mis lisavad käitlemistöötlust, ootejärjekordi, väljundi ümberjaotamist jpm.
Põhiterminid ja parameetrid
Mõned sageli kasutatavad parameetrid ja terminid, mida JCL-is näete:
- DISP — faili olek töös: NEW (uus), OLD (ainult omanik), SHR (jagamiskasutus) ning lõpetamisel määratavad väärtused (nt KEEP, DELETE);
- UNIT — seade või masin, kus andmed paiknevad (näiteks DISK või TAPE);
- DSN — andmekomplekti (faili) nimi;;
- PGM (EXEC PGM=...) — programm, mida EXEC käsk kutsub;
- COND, IF/THEN/ELSE — tingimuslik käitumine sammude vahele jätmiseks või käivitamiseks vastavalt eelmiste sammude lõpetuskoodidele.
Lihtne näidis ja selgitus
Kuigi siin ei ole täielikku koodi, näeb tüüpiline töölahendus ette:
- JOB-lausest algus, mis annab töö nime ja kontoinfo;
- ühe või mitu EXEC-sammu, kus iga samm kutsutakse välja konkreetse programmiga;
Kes JCL-i kasutab ja haldab
JCL-i kirjutavad ja haldavad tavaliselt süsteemioperaatorid, süsteemiadministraatorid (sysprog), rakenduste tooteautendid ja mõned arendajad, kes töötavad suurandmete või partiitöötlusega. JCL-iga töötamisel on oluline olla täpne — vale parameeter võib põhjustada andmekadu või töö ebaõnnestumise.
Moodne kasutus ja alternatiivid
Tänapäeval kasutatakse JCL-i endiselt laialdaselt IBM Big Iron keskkondades, kuid paljud organisatsioonid kombineerivad seda kaasaegsete töövoohaldussüsteemide, orkestreerimisvahendite ja skriptikeeltega (nt REXX, Python või töövoojuhtimise tööriistad), et automatiseerida ja jälgida tööde käivitamist kõrgemal tasemel. Siiski jääb JCL sageli vajalikuks madalama taseme tööde täpsustamiseks ja süsteemiresursside määramiseks.
Soovitused algajale
- Alusta väikeste testtöödega ja kasuta testiandmeid;
- õpi lugema töö logisid (job output, return codes) — need annavad täpse info, miks töö õnnestus või ebaõnnestus;
- kasuta kommentaare ja selgeid nimesid, eriti kui mitu inimest haldavad samu JCL-faile;
- õpi põhilisi parameetreid DD, EXEC ja JOB ning DISP-käitumist, sest need on kõige sagedamini kasutatavad.
Kokkuvõttes on JCL spetsiifiline, võimas ja aegade jooksul arenenud keel suurarvutite tööde kirjeldamiseks. Kuigi selle süntaks võib alguses tunduda rangena ja puine, annab see täpse kontrolli süsteemiressursside ja partiitööde käitumise üle.
Küsimused ja vastused
K: Mis on JCL?
V: JCL tähendab Job Control Language, mis on skriptikeel, mida kasutatakse IBMi suurarvutite operatsioonisüsteemides, et anda süsteemile juhiseid, kuidas käivitada batch-tööd või allsüsteemi.
K: Mis on JCL-i eesmärk?
V: JCL-i eesmärk on näidata, milliseid programme käivitada, milliseid faile või seadmeid kasutada sisendiks või väljundiks, ning määrata, millistel tingimustel tuleb mõni samm vahele jätta.
K: Mitu erinevat IBM Job Control keelt on olemas?
V: On kaks erinevat IBM Job Control keelt. Üks on operatsioonisüsteemi liinile, mis algab DOS/360-ga ja mille viimane liige on z/VSE, ja teine on liinile OS/360-st kuni z/OS-ni, kusjuures viimane sisaldab nüüd JES-i laiendusi, Job Entry Control Language (JECL).
K: Mida ühist on neil kahel erineval IBMi Job Control keelel?
V: Mõlemal erineval IBM Job Control keelel on ühised mõned põhilised süntaksireeglid ja mõned põhimõisted.
K: Millised on kahe erineva IBM Job Control keele erinevused?
V: Kaks erinevat IBM Job Control keelt on muidu väga erinevad.
K: Mida tähendab JES laiendused?
V: JES extensions tähendab Job Entry Control Language.
K: Milline on DOS/360-ga algava operatsioonisüsteemi perekonna viimane liige?
V: DOS/360-ga algava operatsioonisüsteemi liini viimane liige on z/VSE.