Язык управления заданиями

редактировать

Язык управления заданиями (JCL ) - это имя для языков сценариев Используется в системах системами мэйнфреймов IBM для системы, как запустить пакетное задание или запустить подсистему.

В частности, JCL предназначена для сказать какие программы запускать, какие файлы или устройства использовать для ввода или вывода, а иногда также указывать, при каких условиях пропустить шаг.

Существует два разных языка IBM Job Control:

  • один для линейки операционных систем, который начинается с DOS / 360 и последний член которого - z / VSE ; и
  • другой для происхождения от OS / 360 до z / OS, последний теперь включает расширение JES, Язык задания. (JECL).

У них есть общие правила синтаксиса и несколько основных концепций, но в остальном они очень разные. Операционная система ВМ не имеет JCL как такового; компоненты CP и CMS имеют языки команд.

Содержание

  • 1 Терминология
  • 2 Мотивация
  • 3 Функции, общие для DOS и OS JCL
    • 3.1 Задания, шаги и процедуры
    • 3.2 Базовый синтаксис
    • 3.3 Входящий поток
    • 3.4 Сложность
  • 4 DOS JCL
    • 4.1 Позиционные параметры
    • 4.2 Зависимость от устройства
    • 4.3 Ручное размещение файлов
  • 5 OS JCL
    • 5.1 Правила кодирования операторов JCL
    • 5.2 Параметры ключевых слов
    • 5.3 Доступ к данным (оператор DD)
    • 5.4 Независимость от устройства
    • 5.5 Процедуры
      • 5.5.1 PROC PEND
    • 5.6 Параметризованные процедуры
    • 5.7 Обращения
    • 5.8 Комментарии
    • 5.9 Объединение входных файлов
    • 5.10 Условная обработка
    • 5.11 Утилиты
    • 5.12 Сложность использования
  • 6 Язык управления вводом заданий
    • 6.1 OS / 360
      • 6.1.1 до JES JECL
    • 6.2 z / OS
      • 6.2.1 JES2 JECL
      • 6.2.2 JES3 JECL
    • 6.3 z / VSE
  • 7 Другие <системы 339>8 См. Также
  • 9 Ссылки
  • 10 Источники

Терминология

Определенные слова или фразы, используемые вместе с JCL специфичны для технологии мэйнфреймов IBM.

  • Набор данных: «набор данных» - это файл; он может быть временным или постоянным и размещаться на диске, ленточном накопителе или другом устройстве.
  • Член: «член» многораздельного набора (PDS) - это отдельный набор данных в PDS. Доступ к члену можно получить, указав имя PDS с именем члена в круглых скобках. Например, системный макрос GETMAIN в SYS1.MACLIB может упоминаться как SYS1.MACLIB (GETMAIN).
  • Многораздельный набор данных: «многораздельный набор данных» или PDS - это набор элементов или архив, обычно используемый для представления библиотеки. Как и в случае с большинством таких структур, однажды сохраненный член не может быть обновлен; член необходимо и заменить, например, с помощью удалить служебной программы IEBUPDTE. Секционированные наборы данных примерно аналогичны статическая библиотека на основе ar в системах на основе Unix.
  • USS: системная служба Unix, подсистема Unix, работающая как часть MVS и позволяющая файлы и сценарии Unix, задачи и программы для запуска в мэйнфрейме в среде UNIX.

Мотивация

Первоначально системы мэйнфреймов были ориентированы на пакетную обработку. Многие пакетные задания требуют настройки с особыми требованиями к основной памяти и выделенным устройствам, таким как магнитные ленты, частные дисковые тома и принтеры, настроенные с использованием специальных форм. JCL разработан как средство обеспечения доступности всех необходимых ресурсов до того, как запланировано выполнение задания. Например, многие системы, такие как Linux позволяют указывать необходимые наборы данных в внутренней и поэтому могут быть заменены оболочкой , или автоматически во время выполнения. В этих системах операционная система планировщик заданий мало или не знает требований задания. Напротив, JCL явно определяет все необходимые наборы данных и устройства. Планировщик может предоставить ресурсы перед запуском задания. Это помогает избежать «взаимоблокировки », когда задание удерживает ресурс R1 и запрашивает ресурс R2, в то время как одновременно выполняющееся задание B удерживает ресурс R2 и запрашивает R1. В таких случаях единственное решение для оператора компьютера - завершить одно из заданий, которое необходимо перезапустить. При управлении заданием, если задание запланировано для запуска, задание B не будет запущено, пока задание не завершит или не освободит необходимые ресурсы.

Функции, общие для DOS и OS JCL

Задания, шаги и процедуры

И для 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 JCLDOS JCL
Завершить все фактические карты JCL, кроме последней в точке, где синтаксис требует запятой (,)Завершение всех фактических карт JCL, кроме последней, в точке, где синтаксис требует запятой (,) и непустого символа в столбце 72
Начало каждой дополнительной карты с //в столбце 1 и как минимум 1 пробелЗапуск каждой дополнительной карты с пробелов и продолжение в столбце 15

Структура наиболее распространенных типов карт выглядит следующим образом:

OS JCLDOS JCL
  • //
  • Поле имени для этого оператора, следующее за //без пробелов между ними. Не иметь имени по крайней мере один пробел сразу после //.
  • Space ( s)
  • Тип оператора
  • Пространство (а)
  • Параметры, которые различаются в зависимости от оператора типа, разделенный запятыми и без пр обелов между ними.
  • //(пробелы, если это продолжение предыдущей строки)
  • Тип оператора для этого оператора, следующий за //с пробелом между.
  • Пробел (я)
  • Имя ресурса
  • Пробел
  • Параметры, которые различаются в зависимости от типа инструкции, разделены запятыми и без пробелов между ними. Позиционные параметры, за которыми следуют параметры ключевого слова.

Ввод в потоке

DOS и OS JCL допускают ввод в поток, то есть «карты», которые должны обрабатываться прикладной программой, а не операционной системой. Данные, которые должны храниться в течение длительного времени, обычно хранятся на диске, но до того, как использование интерактивных терминалов стало обычным явлением, способом создания и редактирования таких файлов на диске было размещение новых данных на картах..

DOS и OS JCL имеют разные способы сигнализации для начала ввода в поток, но оба заканчивают ввод в поток с помощью / *в столбце 1 карты, следующей за последним входом карта потоковых данных. Это заставляет операционную систему возобновлять обработку JCL на карте, следующую за картой / *.

  • OS JCL: операторы DD Сообщение для описания данных в потоке, а также наборов данных. Оператор DD, имеющий дело с данными в потоке, имеет звездочку (*) после возникновения DD, например // SYSIN DD *. Операторы JCL могут быть включены как часть данных в потоке с помощью операторов DD DATA.
Операнд с именем DLM позволяет указывать разделитель (по умолчанию "/ *"). Указание альтернативного разделителя позволяет читать данные JCL, например, для отправки процедур в член библиотеки или для отправки внутреннему считывателю.
  • Пример, который передает задание внутреннему считывателю (INTRDR ):
// 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)
  1. Программа под названием PICALC1K будет ждать (TYPRUN = HOLD) освобождения вручную
  2. Два файла, PICALC.4DGTS и PICALC.5DGTS, будут удалены СЕЙЧАС.
  • DOS JCL: просто введите данные в потоке после карты EXEC для программы.

Сложность

Большая часть сложности ОС 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-подобная среда.

  • Младшие процессоры System / 360 были менее мощными и более дорогими, чем ПК середины 1980-х, для которых была размещена MS-DOS. OS / 360 была предназначена для систем с минимальным объемом памяти 32 КБ, а DOS / 360 - для систем с минимальным объемом памяти 16 КБ. ЦП 360/30 - младший, когда System / 360 был анонсирован в 1964 году - обрабатывал от 1,8 до 34,5 тыс. Инструкций в секунду. Первый ПК IBM в 1981 году имел 16 или 64 КБ памяти и обрабатывать около 330 КБ инструкций в секунду. В результате компьютер должен был легко обрабатывать JCL, а простота использования программ была намного менее приоритетной. В то время программисты были намного дешевле компьютеров.
  • JCL был разработан для пакетной обработки. Таким образом, он должен сообщать операционную систему все, включая, что делать в зависимости от результата шага. Например, DISP = (NEW, CATLG, DELETE)означает «если программа работает успешно, создайте новый файл и внесите его в каталог; в случае удаления удалите новый файл ». Программы, запускаемые на ПК, часто зависят от того, как пользователь устраняет неполадки после обработки.
  • Машины System / 360 были разработаны для совместного использования всеми пользователями в организации. Таким образом, карта JOBсообщает операционную систему, как выставлять счет для учетной записи пользователя (IS198T30500), какой предопределенный объем памяти и могут быть выделены (CLASS = L) и многое другое. // SYSPRINT DD SYSOUT = *указывает компьютеру распечатать отчет программы на принтере по умолчанию , который загружен с обычной бумагой, а не на каком-либо другом принтере, может быть загружен с пустыми чеками. DISP = SHRсообщает операционную систему, что другие программы могут читать OLDFILEодновременно.

Более поздние версии операционных систем DOS / 360 и OS / 360 сохраняют большую часть функций оригинального JCL - хотя было сделано упрощение, чтобы не заставлять клиентов переписывать все свои файлы JCL. Многие пользователи сохраняют в процедурах любой набор операторов JCL, который будет работать 1 более одного или двух раз.

Синтаксис OS JCL аналогичен синтаксису макросов в System / 360 язык ассемблера, и поэтому он был бы знаком программистам в то время, когда многие программы были написаны на языке ассемблера.

DOS JCL

Позиционные параметры

// TLBL TAPEFIL, 'COPYTAPE.JOB',,,, 2 // ASSGN SYS005,200 // DLBL DISKFIL, 'COPYTAPE.JOB', 0, SD // EXTENT SYS005, VOL01,1,0,800,1600

Параметры JCL DOS являются позиционными, что затрудняет их чтение и запись, но упрощает анализ системы.

  • Программист должен помнить, какой элемент занимает какую позицию в каждом типе оператора.
  • Если некоторые необязательные параметры опущены, но более поздние, пропущенные параметры должны быть представлены запятыми без пробелов, так как в операторе TLBL выше.

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

OS JCL состоит из трех типов операторов:

  • JOBинструкция, которая идентифицирует начало задания, и информация обо всем задании, например, биллинг, приоритет выполнения, а также ограничения по времени и пространству.
  • Оператор EXEC, который должен быть выполнен на этом шаге задания,. и информацию о шаге, включая УСЛОВИЯ для выполнения или пропуска операторы шага.
  • DD(определение данных), которые определяют файл данных, который будет указывать на шаге, и подробную информацию об этом файле. Операторы DDмогут быть в любом порядке на шаге.

С самого начала JCL для семейства ОС (до z / OS включительно) был более гибким и простым использовать.

В следующих примерах используется старый стиль синтаксиса, который был предоставлен сразу с момента запуска System / 360 в 1964 году. Старый синтаксис все еще довольно распространен в заданиях, которые выполнялись десятилетиями. с незначительными изменениями.

Правила кодирования операторов JCL

Каждый оператор JCL разделен на пять полей:

Идентификатор-Имя поля-Операция поля-Поле Параметр-Поле Комментарии-Поле ^ ^ ^ ^ без пробела пробел пробел

Поле идентификаторадолжно быть объединено с Полем имени, т.е. между ними не должно быть пробелов.

  • Поле идентификатора(//): поле идентификатора указывает системе, что оператор является оператором JCL, а не данными. Поле идентификатора состоит из следующего:
    • Столбцы 1 и 2 всех операторов JCL, кроме оператора-разделителя, содержат //
    • Столбцы 1 и 2 оператора-разделителя содержат /*
    • Столбцы 1, 2 и 3 оператора комментария JCL содержат // *
  • Поле имени: поле имени идентифицирует конкретный оператор, чтобы другие операторы и система могли ссылаться на него. Для операторов JCL оно должно быть закодировано следующим образом:
    • Имя должно начинаться в столбце 3.
    • Имя состоит из буквенно-цифровых или национальных ($, #, @) символов от 1 до 8.
    • Первый символ должен быть алфавитным.
    • После имени должен быть хотя бы один пробел.
  • Поле операции: поле операции указывает тип оператора или, для оператор команды, команда. Поле операциидолжно быть закодировано следующим образом:
    • Поле операции состоит из символов в поле синтаксиса для оператора.
    • Операция следует за полем имени.
    • Операции должно предшествовать и после нее должно быть хотя бы одно пустое место.
    • Операция будет иметь одно из следующих значений: JOB, EXECи DD.
  • Параметр -Field: поле параметра, также иногда называемое полем операнда, содержит параметры, разделенные запятыми.Поле параметра должно быть закодировано следующим образом:
    • Поле параметром следует за полем операции.
    • Поле должно выполнить предварительновать как минимум одному пробелу.
    • Поле параметров содержит параметры, которые ключевыми словами используются в операторе для предоставления информации, таком как имя программы или набора данных.
  • Поле комментариев: содержит комментарии. Поле комментариевдолжно быть закодировано следующим образом:
    • Поле комментариев следует за полем пользователя.
    • Перед полем комментариев должен стоять по крайней мере один пробел.

Параметры ключевого слова

// 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используется для ссылки на данные. Этот оператор связывает внутреннее описание программы набора данных к данным на внешних устройствах: дисках, магнитных лентах, картах, принтерах и т. д. 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"

Средство, называемое библиотекой процедуры, позволяло ввести процедуры.

PROC PEND

Процедуры также могут быть включены в поток заданий, если завершить операцию с помощью оператора // 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 позволяет программировать два типа пояснительных комментариев:

  • В той же строке, что и оператор JCL. Их можно расширить, поместив символ продолжения (обычно «X») в столбец 72, за которым следует «//» в столбцах 1–3 следующей строки.
  • Строки, содержащие только комментарии, часто используемые для объяснения основных моментов общей структуры JCL, а не местных деталей. Строки только с комментариями также используются для разделения длинных сложных файлов JCL на разделы.
// 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)

Цель этого отката заключалась в том, чтобы метод доступа выделил набор входных буферов, который был достаточно большим для размещения любого и всех указанных наборов данных.

Условная обработка

ОС ожидает, что программы установят код возврата, который достигает успешной, по мнению программы, она была. Наиболее распространенные стандартные значения:

  • 0 = Нормальный - все в порядке
  • 4 = Предупреждение - незначительные ошибки или проблемы
  • 8 = Ошибка - значительные ошибки или проблемы
  • 12 = серьезная ошибка - серьезные ошибки или проблемы, результаты (например, созданным файлом или отчетам) нельзя доверять.
  • 16 = ошибка терминала - очень серьезные проблемы, не используйте результаты!

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)....

означает:

  1. Выполнить STEP01и собрать его код возврат.
  2. Не запускать STEP02если число 4 больше, чем код возврат STEP01.
  3. Не запускайте STEP03, если число 8 или меньше равно любому предыдущему коду возврат.
  4. Запустите STEP04, только если STEP01завершился ненормально.
  5. Запустите 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 для помощи в обработке данных. Утилиты наиболее полезны при пакетной обработке. Утилиты можно сгруппировать в три набора:

  • Утилиты набора данных - Создание, печать, копирование, перемещение и удаление наборов данных.
  • Системные утилиты - Ведение каталогов и другой системной информации и управление ими.
  • Службы методов доступа - Процесс Метод доступа к виртуальному хранилищу (VSAM) и наборы данных без VSAM.

Трудность использования

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

Первая версия языка управления вводом заданий для удаленного ввода заданий OS / 360 (номер программы 360S-RC-536) использовала идентификатор ..в столбцах 1 –2 входной записи и состоял из единственного управляющего оператора: JED(Определение записи задания). «Команды рабочей станции», такие как LOGON, LOGOFFи STATUS, также начинались с ...

pre-JES JECL

Хотя этот имел пока не был разработан, HASP действительно имел функциональность, аналогичную тому, что стало JECL для JES, включая синтаксис / *.

z / OS

Для JES2 операторы JECL начинаются с / *, для JES3 они начинаются с // *, за исключением удаленного / * SIGNONи / * SIGNOFFкоманды. Команды для двух систем совершенно разные.

JES2 JECL

В 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

Следующие операторы 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Начинает удаленный сеанс

z / VSE

Для операторов 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 для пакетной работы. В других системах они могут быть такими же.

См. Также

Ссылки

Исходники

Последняя правка сделана 2021-05-24 10:58:35
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте