Нижегородский институт управления
- 1 year ago
- 0
- 0
Язык управления заданиями ( англ. Job Control Language , JCL) — язык программирования , применяющийся в операционных системах мейнфреймов фирмы IBM линии OS/360 , MVS , OS/390 , z/OS и их клонах, включая ОС ЕС , TKS и . В линии IBM DOS/360 , , , реализована частично совместимая версия JCL. В гостевой ОС IBM реализовано подмножество JCL.
Применяется для управления запуском пакетных заданий . В силу функционального назначения, обладает минимальными выразительными свойствами как, собственно, язык программирования.
Синтаксис оператора исходно был жестко привязан к определенным позициям (колонкам) на перфокарте :
//
— карта оператора. Карта, содержащая только символы // в начальных позициях — пустой оператор. Пустой оператор указывает на завершение описания задания.
/*
— конец данных, вводимых во входном потоке,
//*
— строка комментариев
JOB
— описание задания
EXEC
— описание шага задания
DD
— описание используемого в шаге задания набора данных или устройства ввода-вывода (по одному оператору на каждый используемый ресурс).
X
), а список параметров на карте продолжения должен был начинаться строго с 16-й колонки. В более современных версиях достаточно отделить параметры хотя бы одним пробелом от начальных //.
Этот синтаксис остался с тех времён, когда задание вводилось с перфокарт (80-колоночных) и позволяет предохранить от случайного запуска на выполнение информации с неправильно вставленных (перевёрнутых) карт.
В целях обеспечения совместимости он не менялся с 1960 гг. и продолжает применяться в современных версиях операционных систем z/OS и .
Эта последовательность команд («задание» в терминах ОС ЕС) копирует содержимое набора данных
IS198.TEST.INPUT
в набор данных
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
//
Копирование осуществляет служебная программа
IEBGENER
, которая копирует входной набор данных (
SYSUT1
) в выходной набор данных (
SYSUT2
).
Для нового (
DISP=(
NEW
,CATLG,DELETE)
) выходного набора данных будет выделено место (параметр
SPACE
) на устройстве прямого доступа: 40 цилиндров изначально и 15 раз по 5 цилиндров, когда первоначально выделенное место будет израсходовано. При успешном завершении задания новый набор данных будет каталогизирован (
DISP=(NEW,
CATLG
,DELETE
), а в случае аварийного завершения — удален (
DISP=(NEW,CATLG,
DELETE
)
)
Кроме того, у программы есть входной поток (
SYSIN
- не используется (DUMMY)) и выходной поток (
SYSPRINT
).
Оператор
JOB
описывает учетную информацию пользователя (формат зависит от настроек системы) и параметры выполнения задания. В данном примере задание выполняется с классом
L
(параметры класса определяет системный администратор при настройке ОС), служебные сообщения будут выводиться в выходную очередь класса
A
. Имя, заданное в качестве метки оператора JOB (IS198CPY), будет использовано в качестве идентификатора задания во время его выполнения.
В юниксоподобной системе аналогичное действие выглядело бы как
cp IS198.TEST.INPUT IS198.TEST.OUTPUT
Следует однако иметь в виду, что «задание» в терминах «традиционных» ОС для mainframe всё же не является прямым аналогом командного файла в юниксоподобной системе. Обработка заданий выполняется специальной системной программой — Планировщиком заданий. Так как язык управления заданиями описывает не только порядок выполнения определенных программ, но и все необходимые для этого ресурсы (имена наборов данных и место под них, устройства ввода-вывода, требования к оперативной памяти и времени центрального процессора и т.д.). Планировщик организовывает порядок выполнения заданий так, чтобы наиболее эффективно использовать доступные вычислительные ресурсы с минимальным вмешательством человека-оператора.