Язык управления заданиями (JCL ) - это имя для языков сценариев Используется в системах системами мэйнфреймов IBM для системы, как запустить пакетное задание или запустить подсистему.
В частности, JCL предназначена для сказать какие программы запускать, какие файлы или устройства использовать для ввода или вывода, а иногда также указывать, при каких условиях пропустить шаг.
Существует два разных языка IBM Job Control:
У них есть общие правила синтаксиса и несколько основных концепций, но в остальном они очень разные. Операционная система ВМ не имеет JCL как такового; компоненты CP и CMS имеют языки команд.
Определенные слова или фразы, используемые вместе с JCL специфичны для технологии мэйнфреймов IBM.
Первоначально системы мэйнфреймов были ориентированы на пакетную обработку. Многие пакетные задания требуют настройки с особыми требованиями к основной памяти и выделенным устройствам, таким как магнитные ленты, частные дисковые тома и принтеры, настроенные с использованием специальных форм. JCL разработан как средство обеспечения доступности всех необходимых ресурсов до того, как запланировано выполнение задания. Например, многие системы, такие как Linux позволяют указывать необходимые наборы данных в внутренней и поэтому могут быть заменены оболочкой , или автоматически во время выполнения. В этих системах операционная система планировщик заданий мало или не знает требований задания. Напротив, JCL явно определяет все необходимые наборы данных и устройства. Планировщик может предоставить ресурсы перед запуском задания. Это помогает избежать «взаимоблокировки », когда задание удерживает ресурс R1 и запрашивает ресурс R2, в то время как одновременно выполняющееся задание B удерживает ресурс R2 и запрашивает R1. В таких случаях единственное решение для оператора компьютера - завершить одно из заданий, которое необходимо перезапустить. При управлении заданием, если задание запланировано для запуска, задание B не будет запущено, пока задание не завершит или не освободит необходимые ресурсы.
И для DOS, и для ОС единицей работы является задание. Задание состоит из одного или нескольких шагов, каждый из которых представляет собой запрос на запуск одной конкретной программы. Например, до появления реляционных баз данных задание по созданию печатного отчета для управления могло состоять из следующих этапов: написанная программа для выбора соответствующих записей и их копирование во временный файл; отсортировать временный файл в нужном порядке, обычно с помощью универсальной утилиты; написанная программа для представления информации в виде удобном для чтения конечными пользователями и включающая другую информацию, как промежуточные итоги; и написанная пользовательская программа для форматирования выбранных страниц информации о конечном устройстве для отображения на мониторе или терминале.
И в DOS, и в ОС JCL первой «картой» должна быть карта JOB, которая:
Процедуры (обычно называемые процедуры) - это объявленный JCL для шагов или групп шагов, вставленных в задание. Оба JCL допускают такие процедуры. Процедуры используются для повторения шагов, которые используются несколько раз в задании или в нескольких разных заданиях. Они экономят время программиста и снижают риск ошибок. Чтобы запустить запуск, нужно просто включить в файл JCL одну «карточку», которая копирует файл из потока заданий и вставляет ее в заданный поток. Кроме того, процедуры могут настраивать процедуры для каждого использования.
И DOS, и OS JCL максимальную полезную длину строки 80 символов, потому что, когда DOS / 360 и OS / 360 были впервые использованы, основной метод предоставления нового ввода для Компьютерная система представляла собой 80-столбец перфокарт. Позже стало возможно отправить задание с помощью файлов на диске или на магнитной ленте с помощью более высоких технологий, но компоненты отправки заданий системы игнорировали все, что находится после символов 80.
Строго говоря, обе операционные системы используют только 71 символ в строке. Символы 73-80 обычно представляют собой порядковые номера карт, которые распечатывает в отчете об окончании работы и полезны определения местоположения любых ошибок, сообщаемых системой. Символ 72 обычно остается пустым, но он может содержать непустой символ, чтобы указать, что оператор JCL продолжается на следующей карточке.
Все команды, имена параметров и значения должны быть заглавными, за исключением USS имен файлов.
Все строки, кроме входных в потоке (см. Ниже), должны начинаться с косой черты «/
», все строки, которые должны начинаться с двух косых черт //
- всегда начиная с первого столбца. Однако есть два исключения: оператор-разделитель и оператор комментария. Операторы-разделители начинаются с косой черты и звездочки (/ *
), а операторные комментарии в ОС JCL начинаются с пары косых черт и звездочки (// *
) или звездочки. в DOS JCL.
Многие операторы JCL слишком длинные, чтобы уместиться в 71 символ, но их можно расширить до неопределенного числа карточек продолжения:
OS JCL | DOS JCL |
---|---|
Завершить все фактические карты JCL, кроме последней в точке, где синтаксис требует запятой (, ) | Завершение всех фактических карт JCL, кроме последней, в точке, где синтаксис требует запятой (, ) и непустого символа в столбце 72 |
Начало каждой дополнительной карты с // в столбце 1 и как минимум 1 пробел | Запуск каждой дополнительной карты с пробелов и продолжение в столбце 15 |
Структура наиболее распространенных типов карт выглядит следующим образом:
OS JCL | DOS JCL |
---|---|
|
|
DOS и OS JCL допускают ввод в поток, то есть «карты», которые должны обрабатываться прикладной программой, а не операционной системой. Данные, которые должны храниться в течение длительного времени, обычно хранятся на диске, но до того, как использование интерактивных терминалов стало обычным явлением, способом создания и редактирования таких файлов на диске было размещение новых данных на картах..
DOS и OS JCL имеют разные способы сигнализации для начала ввода в поток, но оба заканчивают ввод в поток с помощью / *
в столбце 1 карты, следующей за последним входом карта потоковых данных. Это заставляет операционную систему возобновлять обработку JCL на карте, следующую за картой / *
.
// SYSIN DD *
. Операторы JCL могут быть включены как часть данных в потоке с помощью операторов DD DATA.// SUBM EXEC PGM = IEBGENER // SYSPRINT DD SYSOUT = Z // SYSUT2 DD SYSOUT = (A, INTRDR) // SYSIN DD DUMMY // SYSUT1 DD DATA, DLM = ZZ // RUNLATR JOB ACCT, MANIX, CLASS = A.TYPRUN = HOLD // * ^ задание для последующего выполнения // CPUHOG EXEC PGM = PICALC1K // ВЫВОД DD DSN = PICALC.1000DGTS, SPACE = (TRK, 1), DISP = (, KEEP) ZZ // * ^ как указано в DLM = ZZ // DROPOLDR EXEC PGM = IEFBR14 // УДАЛИТЬ4 DD DSN = PICALC.4DGTS, DISP = ( OLD, DELETE) // УДАЛИТЬ5 DD DSN = PICALC.5DGTS, DISP = (OLD, DELETE)
Большая часть сложности ОС JCL, в частности, происходит из большого количества опций для указания информации набора данных. В то время как файлы в Unix -подобные размеры систем абстрагируются в произвольные наборы байтов, при этом детали в степени обрабатываются операционной системой, наборы данных в OS / 360 и ее преемниках раскрывают свои типы и файлы, записывают Тип и длина, такие блоки, информация об устройстве, как магнитная лента плотность, и информация на этикетке. Хотя для многих параметров системных значений по умолчанию, программисту еще многое предстоит указать с помощью комбинации JCL и информации, закодированной в программе. Чем больше информации закодировано в программе, тем она менее гибкая, поскольку информация в программе перекрывает все, что есть в JCL; таким образом, большая часть обычно предоставляется через JCL.
Например, чтобы скопировать файл в операционной системе Unix, пользователь должен получить команду вида:
cp oldFile newFile
Следующий пример с использованием JCL может установить для копирования файла в OS / 360:
// IS198CPY JOB (IS198T30500), 'COPY JOB', CLASS = L, MSGCLASS = X // COPY01 EXEC PGM = IEBGENER // SYSPRINT DD SYSOUT = * // SYSUT1 DD DSN = OLDFILE, DISP = SHR // SYSUT2 DD DSN = NEWFILE, // DISP = (NEW, CATLG, DELETE), // SPACE = (CYL, (40, 5), RLSE), // DCB = (LRECL = 115, BLKSIZE = 1150) // SYSIN DD DUMMY
Второе объяснение сложности JCL заключается в том, что ожидания выполнения задания отличаются от ожиданий в ПК или Unix-подобная среда.
DISP = (NEW, CATLG, DELETE)
означает «если программа работает успешно, создайте новый файл и внесите его в каталог; в случае удаления удалите новый файл ». Программы, запускаемые на ПК, часто зависят от того, как пользователь устраняет неполадки после обработки.JOB
сообщает операционную систему, как выставлять счет для учетной записи пользователя (IS198T30500
), какой предопределенный объем памяти и могут быть выделены (CLASS = L
) и многое другое. // SYSPRINT DD SYSOUT = *
указывает компьютеру распечатать отчет программы на принтере по умолчанию , который загружен с обычной бумагой, а не на каком-либо другом принтере, может быть загружен с пустыми чеками. DISP = SHR
сообщает операционную систему, что другие программы могут читать OLDFILE
одновременно.Более поздние версии операционных систем DOS / 360 и OS / 360 сохраняют большую часть функций оригинального JCL - хотя было сделано упрощение, чтобы не заставлять клиентов переписывать все свои файлы JCL. Многие пользователи сохраняют в процедурах любой набор операторов JCL, который будет работать 1 более одного или двух раз.
Синтаксис OS JCL аналогичен синтаксису макросов в System / 360 язык ассемблера, и поэтому он был бы знаком программистам в то время, когда многие программы были написаны на языке ассемблера.
// TLBL TAPEFIL, 'COPYTAPE.JOB',,,, 2 // ASSGN SYS005,200 // DLBL DISKFIL, 'COPYTAPE.JOB', 0, SD // EXTENT SYS005, VOL01,1,0,800,1600
Параметры JCL DOS являются позиционными, что затрудняет их чтение и запись, но упрощает анализ системы.
DOS JCL в некотором количестве смягчает позиционных параметров за счет использования большего количества операторов с меньшими параметрами, чем JCL OS. В этом операторы ASSGN, DLBL и EXTENT где должен храниться новый файл на диске (должен храниться новый файл на диске), что и один оператор DD
в ОС JCL.
В исходной версии DOS / 360 и в большинстве версий DOS / VS нужно было указать номер модели устройства, которое должно было указать номер каждого диска или файла ленты - даже для файлов и файлов и для временных файлов, которые удалены в конце работы. Это означало, что если заказчик переходил на более современное оборудование, многие файлы JCL приходилось менять.
Более поздние члены семейства DOS / 360 уменьшили количество ситуаций, в которых требовались модели устройств.
DOS / 360 обязательно требовало, чтобы программист указывал расположение и размер всех файлов на DASD. Карточка EXTENT
определяет том, на котором находится экстент, начальную абсолютную дорожку и количество дорожек. Для z / VSE файл может иметь до 256 экстентов на разных томах.
OS JCL состоит из трех типов операторов:
JOB
инструкция, которая идентифицирует начало задания, и информация обо всем задании, например, биллинг, приоритет выполнения, а также ограничения по времени и пространству.Оператор EXEC
, который должен быть выполнен на этом шаге задания,. и информацию о шаге, включая УСЛОВИЯ для выполнения или пропуска операторы шага.DD
(определение данных), которые определяют файл данных, который будет указывать на шаге, и подробную информацию об этом файле. Операторы DD
могут быть в любом порядке на шаге.С самого начала JCL для семейства ОС (до z / OS включительно) был более гибким и простым использовать.
В следующих примерах используется старый стиль синтаксиса, который был предоставлен сразу с момента запуска System / 360 в 1964 году. Старый синтаксис все еще довольно распространен в заданиях, которые выполнялись десятилетиями. с незначительными изменениями.
Каждый оператор JCL разделен на пять полей:
Идентификатор-Имя поля-Операция поля-Поле Параметр-Поле Комментарии-Поле ^ ^ ^ ^ без пробела пробел пробел
Поле идентификаторадолжно быть объединено с Полем имени, т.е. между ними не должно быть пробелов.
//
): поле идентификатора указывает системе, что оператор является оператором JCL, а не данными. Поле идентификатора состоит из следующего: //
/*
// *
$
, #
, @
) символов от 1 до 8.JOB
, EXEC
и DD
.// NEWFILE DD DSN = MYFILE01, UNIT = DISK, SPACE = (TRK, 80,10), // DCB = (LRECL = 100, BLKSIZE = 1000), // DISP = ( NEW, CATLG, DELETE)
Все основные операторы JCL идентифицируют себя ключевыми словами и могут быть представлены в любом порядке. Некоторые из них содержат два или более субпараметра, таких как SPACE
(сколько места на диске выделить для нового файла) и DCB
(подробная спецификация макета файла) в примере выше. Подпараметры иногда позиционны, как в SPACE
, но самые сложные параметры, такие как DCB
, имеют подпараметры ключевых слов.
Позиционный параметр должен предшествовать параметры ключевого слова. Параметры ключевого всегда присваивают значения ключевому слову с помощью знака равенства (=
).
Оператор DD
используется для ссылки на данные. Этот оператор связывает внутреннее описание программы набора данных к данным на внешних устройствах: дисках, магнитных лентах, картах, принтерах и т. д. DD может использовать такую информацию, как тип устройства (например, '181', '2400-5', 'TAPE'), серийный номер тома для лент или дисков и описание файла, называемого субпараметром DCB
после блока управления данными (DCB) в программе, используемой для идентификации файла.
Информация, описывающая файл, может поступать из трех источников: информация карты DD, информация набора данных для существующего файла, хранящегося на ленте или диске, и макрос DCB, закодированный в программе. информация DD имеет приоритет над информацией о мет ке, а информация DCB имеет приоритет над обоими. Обновленное описание затем записывается обратно в метку набора данных. Это может привести к непредвиденным последствиям, если предоставлена неверная информация DCB.
Из-за параметров, перечисленных выше, из параметров информации для различных методов и устройств доступа, оператор DD является наиболее сложным оператором JCL. В одном справочном операторе IBM описание оператора DD занимает более 130 страниц - более чем в два раза больше, чем в одном операторе JOB и EXEC вместе взятые.
С самого начала JCL для Семейства операционных систем. Даже для новых файлов, которые должны быть сохранены после завершения задания, можно указать тип устройства в терминах общих, например, UNIT = DISK
, UNIT = TAPE
или UNIT = SYSSQ
(лента или диск). Конечно, если это имело значение, можно было бы указать номер модели или даже конкретный адрес устройства.
Процедуры позволяют сгруппировать один или несколько операторов «EXEC PGM =» и DD, а затем вызвать их с "EXEC PROC = procname" -или- просто "EXEC procname"
Средство, называемое библиотекой процедуры, позволяло ввести процедуры.
Процедуры также могут быть включены в поток заданий, если завершить операцию с помощью оператора // PEND
, а затем вызвать ее по имени, как это было если бы это было в библиотеке процедур.
Например:
// SUMPRINT PROC // PRINT EXEC PGM = IEBGENER // SYSUT1 DD DSN = CEO.FILES.DAYEND.RPT24A, DISP = SHR // SYSUT2 DD SYSOUT = A // SYSIN DD DUMMY // PEND // EXEC SUMPRINT
Процедуры OS JCL параметризовались с самого начала, они скорее похожими на макросы или даже простые подпрограммы и тем самым повышая их возможность повторного использования в результате выполнения.
// MYPROC PROC FNAME = MYFILE01, SPTYPE = TRK, SPINIT = 50, SPEXT = 10, LR = 100, BLK = 1000..... // NEWFILE DD DSN = FNAME, UNIT = DISK, SPACE = (SPTYPE, SPINIT, SPEXT), // DCB = (LRECL = LR, BLKSIZE = BLK), DISP = (NEW, CATLG, DELETE)....
В этом примере все значения, начинающиеся с амперсандов «», должны быть указаны указанные в программе пробуждение использование процедуры. Оператор PROC, позволяет указать значения по умолчанию для каждого параметра. Таким образом, можно использовать одну схему в этом примере для создания новых файлов разных размеров и макетов. Например:
// JOB01 JOB.......... // STEP01 EXEC MYPROC FNAME = JOESFILE, SPTYPE = CYL, SPINIT = 10, SPEXT = 2, LR = 100, BLK = 2000 или / / JOB02 JOB.......... // STEP01 EXEC MYPROC FNAME = SUESFILE, SPTYPE = TRK, SPINIT = 500, SPEXT = 100, LR = 100, BLK = 5000
В многоэтапных заданиях на более позднем этапе можно использовать обратную ссылку вместо инструкций, который уже был указан на более раннем этапе. Например:
// MYPROC................ // MYPR01 EXEC PGM =.......... // NEWFILE DD DSN = MYFILE, UNIT = DISK, SPACE = (TRK, 50,10), // DCB = (LRECL = 100, BLKSIZE = 1000), DISP = (NEW, CATLG, DELETE).... // MYPR02 EXEC PGM =.......... // INPUT01 DD DSN = *. MYPR01.NEWFILE
Здесь использует MYPR02
файл, имеющий как NEWFILE
на шаге MYPR01
(DSN
означает «имя набора данных» и указывает имя файла; длина DSN не может быть 44 символа).
В заданиях, которые содержат смесь JCL для конкретного задания и процедуры, этап, связанный с заданием, может ссылаться на файл, который был полностью указан в процедуре, например:
// MYJOB JOB.......... // STEP01 EXEC MYPROC Использование процедуры // STEP02 EXEC PGM =......... Шаг, специфичный для этого задания // INPUT01 DD DSN = *. ШАГ01. MYPR01.NEWFILE
, где DSN = *. STEP01.MYPR01.NEWFILE
означает «использовать файл, используемый как NEWFILE
на шаге MYPR01
процедуры, используемой шаг STEP01
этого задания». Использование имени шага, вызванного, а не имени процедуры, позволяет программисту использовать несколько раз в одном и том же задании, не беспокоясь о том, какой экземпляр процедуры используется в ссылке.
Файлы JCL могут быть новыми и сложными, а язык непростой для чтения. OS JCL позволяет программировать два типа пояснительных комментариев:
X
») в столбец 72, за которым следует «//
» в столбцах 1–3 следующей строки.// MYJOB JOB.......... // * Строки, содержащие только комментарии. // ******** Часто используется для разделения листа JCL на разделы ******** // STEP01 EXEC MYPROC Комментарий 2 в той же строке, что и оператор // STEP02 EXEC PGM =......... Комментарий 3 был расширен, и X // перетекает в другую строку. // INPUT01 DD DSN = STEP01.MYPR01.NEWFILE
OS JCL позволяет программистам объединять («цеплять») входные файлы так, они представляются программой как один файл, например
/ / INPUT01 DD DSN = MYFILE01, DISP = SHR // DD DSN = JOESFILE, DISP = SHR // DD DSN = SUESFILE, DISP = SHR
Второй и третий операторы не имеют значения в поле имени, поэтому рассматривает их как конкатенации. Файлы одного базового типа должны иметь одинаковую запись, однако длина блока не обязательно должна быть одинаковой.
В ранних версиях ОС (конечно, до OS / 360 R21.8) длина блока должна быть в убывании, или пользователь должен проверить каждый экземпляр и добавить к названному оператору DD найденную максимальную длину блока., например,
// INPUT01 DD DSN = MYFILE01, DISP = SHR, BLKSIZE = 800 // DD DSN = JOESFILE, DISP = SHR (BLKSIZE равным или меньше 800) // DD DSN = SUESFILE, DISP = SHR ( BLKSIZE равным или меньшим 800)
В более поздних версиях ОС (обязательно после ОС / MVS R3.7 с предоставлением «выбираемых единицами») сама ОС во время распределения, будет проверять каждый экземпляр в конкатенации и подставлять максимальную длину найденного блока.
Обычным откатом было просто определить максимально возможную длину блока на устройстве и указать это в названном операторе DD, например, в
// INPUT01 DD DSN = MYFILE01, DISP = SHR, BLKSIZE = 8000 // DD DSN = JOESFILE, DISP = SHR (BLKSIZE равным или меньше 8000) // DD DSN = SUESFILE, DISP = SHR (BLKSIZE равным или меньшим 8000)
Цель этого отката заключалась в том, чтобы метод доступа выделил набор входных буферов, который был достаточно большим для размещения любого и всех указанных наборов данных.
ОС ожидает, что программы установят код возврата, который достигает успешной, по мнению программы, она была. Наиболее распространенные стандартные значения:
OS JCL указано на код возврата как COND
(«код условия») и может использовать его, чтобы выполнить, выполнять ли последующие шаги. Однако, в отличие от других современных языков программирования, условные шаги в OS JCL не выполняются, если указанное условие является таким образом, возникает мнемоника : «это правда, переходите к [без запуска кода]. "Еще больше усложняет ситуацию то, что условие может быть указано только после шага, к которому оно относится."
// MYJOB JOB........... // STEP01 EXEC PGM = PROG01.... // STEP02 EXEC PGM = PROG02, COND = (4, GT, STEP01).... // STEP03 EXEC PGM = PROG03, COND = (8, LE).... // STEP04 EXEC PGM = PROG04, COND = (ТОЛЬКО, STEP01).... // STEP05 EXEC PGM = PROG05, COND = (ЧЕТНЫЙ, ШАГ03)....
означает:
STEP01
и собрать его код возврат.STEP02
если число 4 больше, чем код возврат STEP01
.STEP03
, если число 8 или меньше равно любому предыдущему коду возврат.STEP04
, только если STEP01
завершился ненормально.STEP05
, даже если STEP03
завершился ненормально.Это преобразуется в следующий псевдокод :
запустить STEP01, если возврат кода STEP01 больше или равен 4, затем запустите STEP02 end, если ifлюбой предыдущий код возврат меньше, чем 8, затем запустите STEP03 end, если ifSTEP01 завершился ненормально, затем запустите STEP04 конец, если ifSTEP03 ненормально завершится, затем запустите STEP05 иначе запустите STEP05 конец, если
Обратите внимание, что, прочитав шаги, содержащие операторы COND
в обратном порядке, можно их правильно понять легко. Это пример логической перестановки. Позже IBM создала условие IF в JCL, тем упростив программирование для программ, сохранив параметр COND
(чтобы избежать внесения изменений в сопряжение JCL, где используется COND parm
).
Параметр COND
также может быть указан в операторе JOB
. Система возврата для каждого шага задания. Если проверка возврата оператора JOB удовлетворяется, задание завершается ».
Задания используют номер служебных программ IBM для помощи в обработке данных. Утилиты наиболее полезны при пакетной обработке. Утилиты можно сгруппировать в три набора:
OS JCL, несомненно, сложна и описывается как " пользователь враждебен ". Как было сказано в одном учебном пособии по JCL: «Почему даже опытные программисты сомневаются, когда речь идет о языке управления заданиями?» В книге говорилось, что многие программисты либо копировали контрольные карты, не понимая, что они делают, либо «верили распространенным слухам о том, что JCL ужасен, и только« твердолобые »компьютерные типы когда-либо понимали это», и передали задачу выяснить причину. Заявления JCL кому-то другому. Такое отношение можно было найти в учебниках по языкам программирования, которые предпочитали сосредотачиваться на самом языке, а не на том, как выполняются программы на нем. Как сказано в одном из учебников по Fortran IV при перечислении возможных сообщений об ошибках от компилятора WATFOR : «Были ли вы настолько глупы, что пытались написать свои собственные карты управления системой DD? Прекратите и немедленно воздержитесь; бегите, не ходите, за помощью ".
Тем не менее, в некоторых книгах, подробно описывающих JCL, подчеркивалось, что, как только он был изучен хотя бы до некоторой степени, можно получить свободу от всей установки значения по умолчанию и гораздо лучший контроль над тем, как система IBM обрабатывает вашу рабочую нагрузку. В другой книге говорилось о сложности, но говорилось: «Мужайтесь. Возможности JCL, которые вы получите из [предыдущей главы], - это все, что когда-либо понадобится большинству программистов».
В системах мэйнфреймов IBM Job Entry Control Language или JECL - это набор управляющих операторов языка команд, которые предоставляют информацию для подсистемы буферизации - JES2 или JES3 для z / OS или VSE / POWER для z / VSE. Операторы JECL могут «указывать на каком сетевом компьютере запускать задание, когда запускать задание и куда отправлять полученные результаты».
JECL отличается от управления заданием языка (JCL), который инструктирует операционную систему, как выполняет задание.
Существуют разные версии JECL для трех сред.
Первая версия языка управления вводом заданий для удаленного ввода заданий OS / 360 (номер программы 360S-RC-536) использовала идентификатор ..
в столбцах 1 –2 входной записи и состоял из единственного управляющего оператора: JED
(Определение записи задания). «Команды рабочей станции», такие как LOGON
, LOGOFF
и STATUS
, также начинались с ..
.
Хотя этот имел пока не был разработан, HASP действительно имел функциональность, аналогичную тому, что стало JECL для JES, включая синтаксис / *
.
Для JES2 операторы JECL начинаются с / *
, для JES3 они начинаются с // *
, за исключением удаленного / * SIGNON
и / * SIGNOFF
команды. Команды для двух систем совершенно разные.
В z / OS 1.2.0 используются следующие операторы JES2 JECL.
Оператор JECL | Функция | Пример |
---|---|---|
/ * $ command | Вводит команду оператора (консоль) | / * $ S PRINTER3 |
/ * JOBPARM | Задает значения для параметров задания | / * JOBPARM TIME = 10 |
/ * СООБЩЕНИЕ | Отправляет сообщение на консоль оператора | / * СООБЩЕНИЕ ВЫЗЫВАЙТЕ ДЖО НА ДОМУ, ЕСЛИ ЗАДАНИЕ ОТКАЗАЕТСЯ |
/ * NETACCT | Указывает номер места записи для сетевого задания | / * NETACCT 12345 |
/ * NOTIFY | Определяет назначение для уведомлений | / * NOTIFY SAM |
/ * OUTPUT | Определяет параметры набора данных SYSOUT | / * OUTPUT FORMS = BILL |
/ * PRIORITY | Устанавливает приоритет выбора задания | / * PRIORITY 15 |
/ * ROUTE | Определяет место назначения вывода или узел выполнения | / * ROUTE PRT RMT5 |
/ * SETUP | Запрашивает монтирование тома или другую автономную операцию | / * SETUP TAPE01, TAPE02 |
/ * SIGNOFF | Завершает удаленный сеанс | / * SIGNOFF |
/ * SI GNON | Начинает удаленный сеанс | / * SIGNON REM OTE5 пароль |
/ * XEQ | Определяет узел выполнения | / * XEQ DENVER |
/ * XMIT | Указывает, что задание или набор данные должны быть переданы на другой сетевой узел | / * XMIT NYC |
Следующие операторы JES3 JECL используются в z / OS 1.2.0
оператор JECL | Функция | Пример |
---|---|---|
// ** команда | Вводит команду оператора JES3 (консоль) | |
// * DATASET | Отмечает начало входящего потока набора данных | |
// * ENDDATASET | Обозначает конец набора данных в потоке | |
// * ENDPROCESS | Отмечает конец серии данных операторов // * PROCESS | |
// * FORMAT | Определяет SYSOUT Управление параметрами набора | |
// * MAIN | Определяет значения для связанных с заданием | |
// * NET | Определяет отношения между заданиями, используя зависимым заданием JES3 | |
// * NETACCT | Определяет номер учетной записи для сетевого задания | |
// * ОПЕРАТ ОР | Отправляет сообщение на консоль оператора | |
// * PAUSE | Останавливает ввод читателя | |
// * P ROCESS | Определяет нестандартное задание | |
// * ROUTE | Определяет узел выполнения для задания | |
/ * SIGNOFF | / * SIGNOFF | |
/ * SIGNON | Начинает удаленный сеанс |
Для операторов VSE JECL начинаются с ' * $$
(Обратите внимание на одиночный пробел). Язык управления вводом заданий определяет начальную и конечную строки заданий JCL. Он сообщает VSE / POWER, как выполнено это задание. Операторы JECL определяют имя задания (используется VSE / POWER), класс, выполняет выполнение задания, и расположение задания (т. Е. D
, L
, K
, H
).
Оператор JECL | Функция | Пример |
---|---|---|
* $$ CTL | Устанавливает класс ввода по умолчанию | * $$ CTL CLASS = A |
* $$ JOB | Указывает атрибуты задания | * $$ JOB JNM = PYRL, PRI = 9 |
* $$ EOJ | Отмечает конец задания | * $$ EOJ |
* $$ RDR | Вставляет файл с дискеты 3540 во входной поток | * $$ RDR SYS005, 'fname', 2 |
* $$ PRT | Задает характеристики буферных файлов печати. «LST» является синонимом «PRT» | * $$ PRT FNO = STD, COPY = 2 |
* $$ PUN | Определяет характеристики перфорации буферных файлов | * $$ PUN DISP = T, TADDR = 280 |
* $$ SLI | Вставляет данные ("книгу") из исходной библиотеки операторов входной поток | * $$ SLI A.JCL1 |
* $$ DATA | Вставляет данные из устройства чтения карт в книгу, извлеченные из библиотеки исходных операторов | * $$ DATA INPUT1 |
Пример:
* $$ JOB JNM = NAME, DISP = K, CLASS = 2 [здесь некоторые операторы JCL] * $$ EOJ
Д ругие мэйнфреймы пакет имеют некоторую форму ограничения языка троллей, называется он так или нет; их синтаксис полностью отличался от версий IBM, но обычно они предоставляют аналогичные возможности. Интерактивные системы включают «командные языки » - файлы команд (например, файлы «.bat» PCDOS) можно запускать неинтерактивно, но они обычно не обеспечивают такой надежной среды для выполнения автоматических заданий как JCL.. В некоторых компьютерных системах язык управления заданиями и язык интерактивных команд могут отличаться. Например, TSO в системах z / OS использует CLIST или Rexx в качестве командных языков вместе с JCL для пакетной работы. В других системах они могут быть такими же.
DD