- Язык управления заданиями
- СОДЕРЖАНИЕ
- Терминология
- Мотивация
- Общие функции для DOS и OS JCL
- Работа, шаги и процедуры
- Базовый синтаксис
- In-Stream ввод
- Сложность
- DOS JCL
- Позиционные параметры
- Зависимость от устройства
- Размещение файлов вручную
- ОС JCL
- Правила кодирования операторов JCL
- Параметры ключевого слова
- Доступ к данным (инструкция DD)
- Независимость от устройства
- Процедуры
- PROC & PEND
- Параметризованные процедуры
- Рефералы
- Комментарии
- Объединение входных файлов
- Условная обработка
- Утилиты
- Сложность использования
- Язык управления вводом вакансий
- OS / 360
- pre-JES JECL
- z / OS
- JES2 JECL
- JES3 JECL
- z / VSE
- Другие системы
- Управление заданиями и язык JCL
- Функции и компоненты подсистемы JES2
- Структура пакетного задания JCL
- Видео
Язык управления заданиями
Язык управления заданиями (JCL) ОС ЕС включает следующие основные операторы, приведенные в табл. 3.1 (см. также табл. 1.4).
Задание представляет собой совокупность операторов, помещенных между заголовком задания (JOB-карты) и пустым оператором (или следующей JOB-картой), и должно содержать хотя бы один оператор шага задания (ЕХЕС-карту), соответствующий некоторой выполняемой в данном шаге программе. Каждый наТаблица 3.1. Основные операторы языка управления заданиями (JCL-операторы, карты)
//ИМЯ JOB [ОПЕРАНДЫ][КОММЕНТАРИИ]
Заголовок шага задания
Примечание. В квадратные скобки включены необязательные компоненты.
бор данных (НД), вводимый или выводимый программой шага задания, задается картой описания данного (DD-оператором).
Для описания конструкций JCL-операторов обычно используется нотация IBM, которая включает следующие конструкции:
Каждый оператор DD имеет имя (ddname), используемое для ссылок на этот оператор в программе и других целей. Иногда группа DD-операторов может иметь одно имя, находящееся в карте первого из операторов, а в остальных операторах группы поле имени не заполнено. Такие наборы данных называются сцепленными, рассматриваются ОС как один набор данных и должны иметь одинаковую организацию, формат и длину записей (см. ниже).
Имеется ряд стандартных и/или зарезервированных в системе dd-имен:
joblib — библиотека задания; оператор размещается непосредственно после карты JOB и описывает одну или несколько (сцепленных) библиотек исполнительных программных модулей, один или несколько из которых вызываются в задании;
STEPLIB — библиотека шага задания. Оператор аналогичен joblib, но действие его распространяется только на данный шаг;
SYSUDUMP — НД, в который при аварийном завершении выводится дамп памяти — содержимое основной памяти, в которой выполняется задание, а также ряд дополнительных данных о состоянии системы;
SYS IN — системный вход; содержит исходную программу транслятора, исходные данные пользовательской программы, управляющие карты утилит; весьма часто размещается во входном потоке (см. ниже);
SYS print — системный вывод; содержит сообщения трансляторов, диагностические сообщения утилит и служебных программ; как правило, помещается в очередь, направленную на выходной принтер;
Основные параметры операторов управления данными. DD-one- раторы, как и другие JCL-операторы, могут содержать ключевые и позиционные параметры (подпараметры). Ключевые имеют вид: имя = значение, где имя — зарезервированное наименование параметра, а значение — выбираемое из зарезервированных (или произвольно), задаваемое программистом значение параметра.
Порядок ключевых параметров в операторах и их разрешенное отсутствие не играют роли. Позиционные параметры имен не имеют, и их смысл определяется позицией в конструкции JCL. Они, как правило, разделяются запятыми и отсутствие параметра требует наличия соответствующего разделителя. Наиболее часто употребляются параметры dsname (dsn), disp, unit, volume (vol), SPACE, label, DCB. Ниже приводятся краткие описания форматов и основных подпараметров данных конструкций.
Параметр dsname — имя НД и его вид (постоянный или временный).
Параметр задает имя набора, по которому осуществляется его поиск на устройствах ЭВМ или с которым он создается. Для временных наборов данных имя может не указываться либо должно начинаться с символов &&.
Параметр disp — текущее и будущее состояние набора данных, имеет следующую структуру. В то время как сам параметр DISP является ключевым подпараметры, указанные в скобках, — позиционные:
Первый подпараметр — состояние, может иметь значения: new — набор создается в данном пункте задания. При значении new необходимо указание также unit и, как правило, параметров dcb и space (см. ниже);
old — НД существует и программа шага задания получает монопольный доступ к нему;
SHR — то же, но доступ происходит совместно с другими, активными в данный момент, заданиями.
Второй подпараметр (диспозиция): keep — сохранить НД после завершения задания; delete — удалить набор после завершения шага задания; pass — сохранить в течение задания, но удалить после завершения последнего шага задания.
Третий подпараметр (условная диспозиция) может иметь значения keep, delete, pass, но определяет, что должно происходить с файлом при аварийном завершении. Если параметр отсутствует, временные НД уничтожаются.
Параметр unit — указывается при создании новых НД или при использовании существующих сохраненных наборов. Имеет вид:
Групповое имя: UNIT = (тип устройства, [число устройств] ) адрес.
Оба подпараметра — позиционные.
Групповое имя: таре — магнитные ленты; SYSDA — магнитные диски.
Тип устройства: 5010 или 2 311 — любой из НМД с пакетами емкостью 7,25 Мбайт; 50 61 или 2314 — НМД с пакетами емкостью 29 Мбайт; 5066 или 3330 — НМД емкостью 110 Мбайт; 5010 — накопитель на МЛ и т. п.
Адрес устройства — трехзначное шестнадцатеричное число, состоящее из номера канала ввода-вывода и номера устройства (табл. 3.2).
Таблица 3.2. Примеры типичных адресов устройств
Существует два разных языка IBM Job Control:
СОДЕРЖАНИЕ
Терминология
Некоторые слова или фразы, используемые в связи с JCL, относятся к технологии мэйнфреймов IBM.
Мотивация
Общие функции для DOS и OS JCL
Работа, шаги и процедуры
И в DOS, и в OS JCL первой «картой» должна быть карта JOB, которая:
Базовый синтаксис
Строго говоря, оба семейства операционных систем используют только 71 символ в строке. Символы 73-80 обычно представляют собой порядковые номера карт, которые система печатает в отчете об окончании работы и полезны для определения местоположения любых ошибок, о которых сообщает операционная система. Символ 72 обычно остается пустым, но он может содержать непустой символ, чтобы указать, что оператор JCL продолжается на следующей карточке.
Многие операторы JCL слишком длинные, чтобы уместиться в 71 символ, но их можно расширить до неопределенного числа карточек продолжения:
Состав наиболее распространенных типов карт:
In-Stream ввод
И DOS, и OS JCL позволяют ввод в потоке, то есть «карты», которые должны обрабатываться прикладной программой, а не операционной системой. Данные, которые должны храниться в течение длительного времени, обычно хранятся на диске, но до того, как использование интерактивных терминалов стало обычным явлением, единственным способом создания и редактирования таких файлов на диске было размещение новых данных на карточках.
DOS и OS JCL имеют разные способы сигнализации о начале ввода в потоке, но оба заканчивают ввод в потоке с помощью /* столбца 1 карты, следующего за последней картой данных в потоке. Это заставляет операционную систему возобновлять обработку JCL на карте, следующей за /* картой.
Сложность
Следующий пример с использованием JCL можно использовать для копирования файла в OS / 360:
Второе объяснение сложности JCL заключается в том, что ожидания выполнения задания отличаются от ожиданий на ПК или в Unix-подобной среде.
Более поздние версии операционных систем DOS / 360 и OS / 360 сохраняют большинство функций исходного JCL, хотя были сделаны некоторые упрощения, чтобы не заставлять клиентов переписывать все свои файлы JCL. Многие пользователи сохраняют в качестве процедуры любой набор операторов JCL, который может использоваться более одного или двух раз.
Синтаксис OS JCL аналогичен синтаксису макросов на языке ассемблера System / 360 и поэтому был бы знаком программистам в то время, когда многие программы были написаны на языке ассемблера.
DOS JCL
Позиционные параметры
Параметры DOS JCL являются позиционными, что затрудняет их чтение и запись, но упрощает анализ системы.
DOS JCL в некоторой степени смягчает трудности позиционных параметров за счет использования большего количества операторов с меньшим количеством параметров, чем OS JCL. В этом примере операторы ASSGN, DLBL и EXTENT выполняют ту же работу (указывая, где должен быть сохранен новый файл на диске), что и один DD оператор в OS JCL.
Зависимость от устройства
В исходной DOS / 360 и в большинстве версий DOS / VS нужно было указать номер модели устройства, которое должно было использоваться для каждого диска или файла на магнитной ленте, даже для существующих файлов и для временных файлов, которые будут удалены при конец работы. Это означало, что, если заказчик переходил на более современное оборудование, многие файлы JCL приходилось изменять.
Позднее члены семейства DOS / 360 сократили количество ситуаций, в которых требовались номера моделей устройств.
Размещение файлов вручную
ОС JCL
OS JCL состоит из трех основных типов операторов:
С самого начала JCL для семейства ОС (включая z / OS ) был более гибким и простым в использовании.
В следующих примерах используется старый стиль синтаксиса, который был предоставлен с момента запуска System / 360 в 1964 году. Старый синтаксис все еще довольно часто встречается в заданиях, которые выполнялись десятилетиями, с незначительными изменениями.
Правила кодирования операторов JCL
Каждый оператор JCL разделен на пять полей:
Параметры ключевого слова
Позиционный параметр должен предшествовать параметрам ключевого слова. Параметры ключевого слова всегда присваивают значения ключевому слову с помощью знака равенства ( = ).
Доступ к данным (инструкция DD)
DD Оператор используется для справочных данных. Этот оператор связывает внутреннее описание набора данных в программе с данными на внешних устройствах: дисках, магнитных лентах, картах, принтерах и т. Д. DD может предоставлять такую информацию, как тип устройства (например, «181», «2400-5», » TAPE ‘), серийный номер тома для лент или дисков и описание файла данных, называемого DCB субпараметром после блока управления данными (DCB) в программе, используемой для идентификации файла.
Информация, описывающая файл, может поступать из трех источников: информация о карте DD, информация о метке набора данных для существующего файла, хранящегося на ленте или диске, и макрос DCB, закодированный в программе. Когда файл открывается, эти данные объединяются, причем информация DD имеет приоритет над информацией о метке, а информация DCB имеет приоритет над обоими. Затем обновленное описание записывается обратно в метку набора данных. Это может привести к непредвиденным последствиям, если будет предоставлена неверная информация DCB.
Независимость от устройства
Процедуры
Процедуры позволяют сгруппировать один или несколько операторов « EXEC PGM = » и DD, а затем вызвать их с помощью « EXEC PROC = procname» или просто «EXEC procname»
Средство, называемое библиотекой процедур, позволяет предварительно сохранять процедуры.
PROC & PEND
Процедуры также могут быть включены в поток заданий, завершив процедуру с помощью // PEND оператора, а затем вызвав его по имени, как если бы он находился в библиотеке процедур.
Параметризованные процедуры
Процедуры OS JCL были параметризованы с самого начала, что делало их скорее похожими на макросы или даже простые подпрограммы и, таким образом, увеличивало возможность их повторного использования в широком диапазоне ситуаций.
В этом примере все значения, начинающиеся с амперсандов » & «, являются параметрами, которые будут указаны, когда задание запрашивает использование процедуры. Оператор PROC, помимо присвоения имени процедуре, позволяет программисту указать значения по умолчанию для каждого параметра. Таким образом, можно использовать одну процедуру в этом примере для создания новых файлов разных размеров и макетов. Например:
Рефералы
В многоэтапных заданиях на более позднем этапе может использоваться обратная ссылка вместо полного указания файла, который уже был указан на более раннем этапе. Например:
Здесь MYPR02 используется файл, указанный NEWFILE в шаге MYPR01 ( DSN означает «имя набора данных» и указывает имя файла; DSN не может превышать 44 символа).
В заданиях, которые содержат смесь JCL для конкретного задания и вызовов процедур, шаг для конкретного задания может ссылаться на файл, который был полностью указан в процедуре, например:
где DSN=*.STEP01.MYPR01.NEWFILE означает «использовать файл, указанный NEWFILE на шаге MYPR01 процедуры, использованной на шаге STEP01 этого задания». Использование имени шага, который вызвал процедуру, а не имени процедуры, позволяет программисту использовать одну и ту же процедуру несколько раз в одном и том же задании, не беспокоясь о том, какой экземпляр процедуры используется в ссылке.
Комментарии
Файлы JCL могут быть длинными и сложными, а язык непросто читать. OS JCL позволяет программистам включать два типа пояснительных комментариев:
Объединение входных файлов
OS JCL позволяет программистам объединять («цеплять») входные файлы, чтобы они отображались в программе как один файл, например
Второй и третий операторы не имеют значения в поле имени, поэтому ОС обрабатывает их как конкатенации. Файлы должны быть одного и того же базового типа (почти всегда последовательные) и иметь одинаковую длину записи, однако длина блока не обязательно должна быть одинаковой.
В более поздних версиях ОС (обязательно после OS / MVS R3.7 с соответствующими «выбираемыми единицами») сама ОС во время выделения будет проверять каждый экземпляр в конкатенации и подставлять максимальную длину найденного блока.
Обычным откатом было просто определить максимально возможную длину блока на устройстве и указать это в названном операторе DD, как, например, в
Цель этого запасного варианта состояла в том, чтобы гарантировать, что метод доступа выделит набор входных буферов, который был достаточно большим для размещения любого и всех указанных наборов данных.
Условная обработка
Это переводится в следующий псевдокод :
COND Параметр также может быть указан в JOB заявлении. Если это так, система «выполняет одни и те же тесты кода возврата для каждого шага задания. Если проверка кода возврата оператора JOB удовлетворяется, задание завершается».
Утилиты
Джобс использует ряд служебных программ IBM для помощи в обработке данных. Утилиты наиболее полезны при пакетной обработке. Утилиты можно сгруппировать в три набора:
Сложность использования
OS JCL, несомненно, сложна и была описана как «враждебная пользователю». Как было сказано в одном учебном пособии по JCL: «Почему даже опытные программисты сомневаются, когда дело доходит до языка управления заданиями?» В книге говорилось, что многие программисты либо копировали управляющие карты, не понимая, что они делают, либо «верили распространенным слухам о том, что JCL ужасен, и только« твердолобые »компьютерные типы когда-либо понимали это», и передали задачу выяснить причину. Заявления JCL кому-то другому. Такое отношение можно было найти в учебниках по языкам программирования, которые предпочитали сосредотачиваться на самом языке, а не на том, как выполняются программы на нем. Как сказано в одном учебнике Fortran IV при перечислении возможных сообщений об ошибках от компилятора WATFOR : «Были ли вы настолько глупы, что пытались написать свои собственные карты управления системой DD? Немедленно прекратите и воздержитесь; бегите, не ходите, за помощью. «
Язык управления вводом вакансий
JECL отличается от языка управления заданиями (JCL), который указывает операционной системе, как выполнять задание.
Существуют разные версии JECL для трех сред.
OS / 360
pre-JES JECL
z / OS
JES2 JECL
Следующие операторы JES2 JECL используются в z / OS 1.2.0.
Заявление JECL | Функция | Пример |
---|---|---|
/*$command | Вводит команду оператора (консоли) | /*$S PRINTER3 |
/*JOBPARM | Задает значения для параметров, связанных с заданием | /*JOBPARM TIME=10 |
/*MESSAGE | Отправляет сообщение на консоль оператора | /*MESSAGE CALL JOE AT HOME IF JOB ABENDS |
/*NETACCT | Указывает номер учетной записи для сетевого задания | /*NETACCT 12345 |
/*NOTIFY | Указывает место назначения для уведомлений | /*NOTIFY SAM |
/*OUTPUT | Определяет параметры набора данных SYSOUT | /*OUTPUT FORMS=BILL |
/*PRIORITY | Устанавливает приоритет выбора работы | /*PRIORITY 15 |
/*ROUTE | Задает назначение вывода или узел выполнения | /*ROUTE PRT RMT5 |
/*SETUP | Запрашивает монтирование тома или другую офлайн-операцию | /*SETUP TAPE01,TAPE02 |
/*SIGNOFF | Завершает удаленный сеанс | /*SIGNOFF |
/*SIGNON | Начинает удаленный сеанс | /*SIGNON REMOTE5 password |
/*XEQ | Определяет узел выполнения | /*XEQ DENVER |
/*XMIT | Указывает на задание или набор данных для передачи на другой сетевой узел | /*XMIT NYC |
JES3 JECL
Следующие операторы JES3 JECL используются в z / OS 1.2.0
Заявление JECL | Функция | Пример |
---|---|---|
//**command | Вводит команду оператора JES3 (консоль) | |
//*DATASET | Отмечает начало набора данных In-Stream | |
//*ENDDATASET | Обозначает конец набора данных In-Stream | |
//*ENDPROCESS | Означает конец серии //*PROCESS утверждений | |
//*FORMAT | Определяет SYSOUT параметры набора данных | |
//*MAIN | Задает значения для параметров, связанных с заданием | |
//*NET | Определяет отношения между заданиями с помощью зависимого управления заданиями JES3 | |
//*NETACCT | Указывает номер учетной записи для сетевого задания | |
//*OPERATOR | Отправляет сообщение на консоль оператора | |
//*PAUSE | Останавливает читатель ввода | |
//*PROCESS | Выявляет нестандартную работу | |
//*ROUTE | Задает узел выполнения для задания | |
/*SIGNOFF | Завершает удаленный сеанс | /*SIGNOFF |
/*SIGNON | Начинает удаленный сеанс |
z / VSE
Другие системы
Управление заданиями и язык JCL
Функции и компоненты подсистемы JES2
Спул используется для временного хранения данных, связанных с выполнением каждого поступившего в подсистему JES2 задания, и содержит:
На этапе ввода осуществляется регистрация задания, заключающаяся в присваивании заданию уникального идентификатора (JobID) и занесении учетной и статусной информации в специальный реестр JES2, получивший название очередь заданий (JOBQUEUE). Помимо идентификатора, JOBQUEUE содержит также значения класса, приоритета и текущего состояния задания. Фактически все множество очередей, представленных на рисунке, хранится в одной общей таблице JOBQUEUE. В этом случае выборка заданий производится по значению кода текущего состояния, показывающего, на каком этапе обработки задание находится в данный момент.
Все зарегистрированные задания поступают затем в очередь на следующий этап обработки.
На этапе выполнения ( execution phase ) ключевую роль играют системные программы, получившие название инициаторов (initiators). Обычно запускается несколько инициаторов одновременно, так чтобы один инициатор обслуживал одну или несколько конкретных очередей заданий ( по значениям класса). Каждый инициатор работает в собственном виртуальном адресном пространстве в соответствии со следующим алгоритмом:
Отметим, что в z/OS поддерживается два типа инициаторов: инициаторы JES и инициаторы WLM. Инициаторы JES2 обычно запускаются автоматически при инициализации системы в соответствии с настройками JES2 и назначаются на обслуживание определенных классов заданий. Инициаторы WLM запускаются динамически в зависимости от текущей нагрузки системы и в соответствии с установленной политикой управления нагрузкой в целевом режиме.
Важно подчеркнуть, что для большинства заданий не создаются новые адресные пространства z/OS, поскольку их выполнение происходит в адресных пространствах инициаторов. Исключение составляют задания классов STC и TSU, которые не обрабатываются инициаторами. Для этих классов JES2 самостоятельно создает отдельные адресные пространства для каждого пользовательского сеанса TSO и каждой запускаемой процедуры, а также обрабатывает поступающие сообщения.
На этапе печати (hardcopy phase ) производится вывод подготовленного отчета из набора данных SYSOUT на указанное пользователем или установленное JES2 выходное устройство (принтер, узел сети и т.п.), и задание передается в очередь на стадию завершения.
На этапе завершения ( purge phase ) JES2 осуществляет «очистку» спула и очереди заданий от информации, связанной с выполненным заданием, и формирует соответствующее сообщение.
Следует напомнить, что в z/OS существует специальный опциональный компонент SDSF, предназначенный для просмотра параметров текущего состояния всех запущенных в системе заданий и отчетов о выполнении, а также предоставляющий возможность изменять некоторые параметры и управлять ходом выполнения заданий динамически.
Структура пакетного задания JCL
Примеры неправильных имен: 3DIAGNOZ (начинается с цифры), DIAGNOSTIKA (содержит более восьми символов), ТОМ+И (содержит недопустимый символ И ).
Вслед за полем имени следуют другие поля, отделяемые друг от друга одним или несколькими пробелами.
Оператор | Назначение оператора |
---|---|
JOB | Начало задания и режим выполнения задания |
EXEC | Начало шага задания, указание выполняемой программы или процедуры |
DD | Описание набора данных и используемых устройств |
COMMAND | Ввод системной (консольной) команды MVS или команды JES |
PROC | Начало процедуры и описание параметров процедуры |
PEND | Конец процедуры |
JCLLIB | Список библиотек для поиска процедур, указанных в задании |
OUTPUT | Параметры формирования отчета о выполнении задания (SYSOUT) |
INCLUDE | Имя раздела библиотеки, текст которого необходимо включить в указанное место задания |
CNTL/ENDCNTL | Начало и конец блока управляющих параметров, передаваемых программе во входном потоке |
IF/THEN/ELSE/ENDIF | Условное выполнение шагов задания (ветвление) |
SET | Инициализация или изменение значений символических параметров |
/* | Оператор ограничения данных, представленных во входном потоке |
// | Пустой оператор (конец задания) |
//* | Оператор комментария |
Поле операнды предложения JCL содержит список разделенных запятыми параметров, которые записывают вслед за именем оператора (через один или несколько пробелов). С помощью параметров сообщают информацию, необходимую для выполнения оператора. Различают позиционные и ключевые параметры.
Позиционные параметры часто имеют произвольный формат записи, но всегда указываются в строгой последовательности и всегда перед ключевыми параметрами. Если позиционный параметр опускается, то запятая, которая должна следовать за параметром, остается ( исключение составляет случай, когда опускается последний параметр в списке позиционных параметров). Примеры записи позиционных параметров:
Отдельные параметры могут включать подпараметры, которые также задают в виде списка, заключенного в апострофы или круглые скобки. Как и параметры, подпараметры могут быть позиционными и ключевыми. Скобки или апострофы опускаются, если в списке указывается один подпараметр. Например:
Поля предложений JCL не должны выходить за пределы 71-й позиции строки. Если же текст предложения не умещается в одной строке, то его (кроме предложения комментария //* ) разрешается продолжить на следующей. При этом если необходимо перенести на следующую строку некоторые параметры из списка, то следует соблюдать такие правила:
Вот как выглядит запись многострочного предложения JCL :
Видео
Планировщик заданий Windows — создание простого заданияСкачать
👅 Как убрать лишний фантомный язык Windows раскладку клавиатурыСкачать