Job Control Language (JCL) — език за управление на задания в IBM mainframe
Job Control Language (JCL) е наименование на езиците за писане на скриптове, използвани в операционните системи на IBM mainframe. Той инструктира системата как да изпълни пакетно задание или да стартира подсистема. JCL не е език за програмиране в класическия смисъл — той описва какви ресурси да се заделят, кои програми да се стартират и по какъв начин да се обработва вход/изход.
Каква е целта на JCL
Целта на JCL е да укаже кои програми да се изпълняват и с кои файлове (набори от данни) или устройства да работят. С JCL се задават параметри за стартиране на програми, се конфигурират входно-изходни единици, определят се условия за повторно стартиране или прескачане на стъпки и се задават зависимости между отделните стъпки на заданието.
Основни понятия и синтаксис
JCL използва редове (наречени statements), които започват с двойна наклонена черта (//) и имат строго фиксирани полета и формати. Най-често срещаните типове инструкции са:
- JOB — дефинира началото на задание (job card), предоставя обща информация като име на заданието, приоритет, собственик и евентуално обработка на грешки;
- EXEC — указва коя програма или процедура да се изпълни в една стъпка (step);
- DD (Data Definition) — свързва логическите входно-изходни файлове на програмата с физически набори от данни, устройства или временни файлове; тук се задават параметри като DSN (името на набора от данни), DISP (състояние/диспозиция), UNIT (вид устройство), SPACE, DCB и др.
Примерна структура на JCL задание
Един опростен JCL пример (с обяснения):
//MYJOB JOB (ACCT),'ИМЕ',CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID //STEP1 EXEC PGM=MYPROG //INFILE DD DSN=MY.INPUT.DATA,DISP=SHR //OUTFILE DD DSN=MY.OUTPUT.DATA,DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSPRINT DD SYSOUT=* //
Обяснение:
- //MYJOB JOB ... — начална карта за заданието, задаваща идентификатор и атрибути;
- //STEP1 EXEC PGM=MYPROG — изпълнява програмата MYPROG;
- //INFILE DD ... — указва набора от данни за вход;
- //OUTFILE DD ... — указва създаване на нов набор от данни за изход с параметри за заделяне;
- //SYSPRINT DD SYSOUT=* — изпраща изхода на принтер/системна опашка.
Управление на набори от данни (datasets) и устройства
С JCL се описва как да бъде третирано хранилището на данни: дали съществуващият набор да се използва (DISP=SHR), дали да се създаде нов (DISP=(NEW,...)), къде да се разположи (UNIT, VOLUME), и колко пространство да се задели (SPACE). В mainframe средата има множество типове устройства (например дискове SYSDA, tapes UNIT=3490 и др.), като изборът влияе на изпълнението и производителността.
Условно изпълнение и кодове за връщане
JCL поддържа условно изпълнение на стъпки (например чрез параметъра COND) — може да бъде указано да се пропусне една стъпка, ако предишна е върнала определен код за грешка. Стандартно, програмите и утилитите в z/OS връщат т.нар. return code (RC) илиabend кодове, които JCL и системните процедури използват за контрол на потока.
Процедури (PROCs) и повторна употреба
За да не се повтарят дълги групи от DD или EXEC инструкции, се използват процедури (PROCs). Процедурите могат да бъдат локални (във файла с JCL) или глобални, намиращи се в библиотека. С PROC се постига стандартизиране и по-лесна поддръжка на често използвани работни потоци.
Двете линии на IBM Job Control
Съществуват два различни езика на IBM Job Control:
- линията на операционната система, която започва с DOS/360 и чийто последен член е z/VSE; и
- линията от OS/360 до z/OS, като последният вече включва разширения на JES, език за контрол на въвеждането на задачи (JECL).
Те споделят някои основни правила за синтаксис и няколко основни понятия, но имат значителни различия в детайлите, поддръжката на възможности и конкретните параметри за управление на устройства и JES (Job Entry Subsystem).
Къде и кога се използва JCL днес
JCL остава в употреба в големите корпоративни среди, където работят IBM mainframe системи (банки, застрахователи, държавни институции и др.). Въпреки еволюцията на технологиите, голямо количество критични системи и данни продължават да работят върху тези платформи, което поддържа необходимостта от администратори и разработчици, които познават JCL.
Полезни съвети за работа с JCL
- Винаги проверявайте правилата за форматиране и колонирането на редовете — старите формати са чувствителни към позицията на символите.
- Използвайте коментари и ясни имена на JOB и STEP, за да улесните поддръжката.
- Тествайте внимателно DISP и параметрите за създаване/изтриване на набори от данни, за да избегнете загуба на данни.
- Използвайте PROC за повторно използвани конструкции и централизирано управление.
JCL е специализиран, но мощен инструмент за контрол на пакетно изпълнение в mainframe средите. Разбирането на основните му концепции — JOB, EXEC, DD, DISP и управлението на return code — дава възможност за надеждно и ефективно управление на сложни работни потоци.
Въпроси и отговори
В: Какво е JCL?
О: JCL е съкращение от Job Control Language (език за управление на задачите), който е скриптов език, използван в операционните системи на IBM mainframe, за да инструктира системата как да изпълни пакетна задача или да стартира подсистема.
В: Каква е целта на JCL?
О: Целта на JCL е да посочи кои програми да се изпълняват, като се използват кои файлове или устройства за вход или изход, и да посочи при какви условия да се прескочи дадена стъпка.
В: Колко различни езика за управление на задачите на IBM има?
О: Има два различни езика за управление на задачите на IBM. Единият е за линията на операционните системи, която започва с DOS/360 и чийто последен член е z/VSE, а другият е за линията от OS/360 до z/OS, като последната вече включва разширения на JES, Job Entry Control Language (JECL).
Въпрос: Какво е общото между двата различни езика за управление на задачите на IBM?
О: Двата различни езика за управление на задачите на IBM споделят някои основни правила за синтаксис и няколко основни понятия.
В: Какви са някои разлики между двата различни езика за управление на задачите на IBM?
О.: Двата различни езика IBM Job Control се различават значително.
В: Какво означава разширението JES?
О: Разширенията на JES означават език за контрол на въвеждането на задачи.
В: Кой е най-новият член на линията на операционните системи, която започва с DOS/360?
О: Най-новият член на линията на операционните системи, която започва с DOS/360, е z/VSE.