Операционные системы и программное обеспечение на платформе zSeries

         

Структура пакетного задания JCL


Итак, прежде чем передать пакетное задание системе, пользователь должен подготовить его текст на языке JCL. Обычно текст задания создается в некотором наборе данных с помощью текстового редактора, откуда специальными средствами пользовательского интерфейса его можно направить на обработку в подсистему JES2. z/OS требует, чтобы для представления заданий использовались только последовательные и библиотечные наборы данных с параметрами RECFM=FB и LRECL=80. Текст задания вводится, как правило, прописными буквами.

Задание состоит из последовательности управляющих предложений JCL (job control statement)2). Каждое предложение имеет следующую структуру:

//ИМЯ ОПЕРАТОР ОПЕРАНДЫ КОММЕНТАРИЙ

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

Поле имя начинается с третьей позиции и служит для идентификации представленного в предложении оператора. Фактически это метка, на которую можно ссылаться из различных предложений задания или других заданий. Имя может содержать не более восьми символов, включающих латинские буквы, цифры и специальные знаки ($ # @). Имя должно начинаться с буквы или специального знака, русские буквы и пробелы использовать нельзя. В некоторых специальных случаях применяют составные имена, использующие в качестве разделителя точку. Пробел в третьей позиции является признаком отсутствия имени.

Примеры правильных имен: STOUT1, SYSPRINT, IVANOV, IVAN#S

Примеры неправильных имен: 3DIAGNOZ (начинается с цифры), DIAGNOSTIKA (содержит более восьми символов), ТОМ+И (содержит недопустимый символ И).

Вслед за полем имени следуют другие поля, отделяемые друг от друга одним или несколькими пробелами.

Таблица 5.4. Основные операторы JCL

ОператорНазначение оператора
JOBНачало задания и режим выполнения задания
EXECНачало шага задания, указание выполняемой программы или процедуры
DDОписание набора данных и используемых устройств
COMMANDВвод системной (консольной) команды MVS или команды JES
PROCНачало процедуры и описание параметров процедуры
PENDКонец процедуры
JCLLIBСписок библиотек для поиска процедур, указанных в задании
OUTPUTПараметры формирования отчета о выполнении задания (SYSOUT)
INCLUDEИмя раздела библиотеки, текст которого необходимо включить в указанное место задания
CNTL/ENDCNTLНачало и конец блока управляющих параметров, передаваемых программе во входном потоке
IF/THEN/ELSE/ENDIFУсловное выполнение шагов задания (ветвление)
SETИнициализация или изменение значений символических параметров
/*Оператор ограничения данных, представленных во входном потоке
//Пустой оператор (конец задания)
//*Оператор комментария


Поле оператор определяет тип управляющего оператора JCL, который задается одним из ключевых слов, представленных в таблица 5.4. Назначение и использование основных операторов (JOB, EXEC, DD) будет рассмотрено в данной главе.

Поле операнды предложения JCL содержит список разделенных запятыми параметров, которые записывают вслед за именем оператора (через один или несколько пробелов). С помощью параметров сообщают информацию, необходимую для выполнения оператора. Различают позиционные и ключевые параметры.

Позиционные параметры часто имеют произвольный формат записи, но всегда указываются в строгой последовательности и всегда перед ключевыми параметрами. Если позиционный параметр опускается, то запятая, которая должна следовать за параметром, остается (исключение составляет случай, когда опускается последний параметр в списке позиционных параметров). Примеры записи позиционных параметров:

333,TEST,,0.8E-15 NEW,,DELETE

Ключевые параметры задаются с использованием предопределенных ключевых слов в виде: ключевое_слово=значение. Например, CLASS=B, REGION=100M, COND=(1,LE). Последовательность записи ключевых параметров - произвольная.

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

DISP=(NEW,,DELETE) - позиционные подпараметры параметра DISP

DCB=(RECFM=FB,LRECL=80) - ключевые подпараметры параметра DCB

В поле комментарий предложения JCL помещают произвольную текстовую информацию, поясняющую назначение или особенности использования отдельных операторов. Отметим, что для этой цели может применяться специальный оператор комментария //*. Этот текст не обрабатывается при выполнении задания.

Поля предложений JCL не должны выходить за пределы 71-й позиции строки. Если же текст предложения не умещается в одной строке, то его (кроме предложения комментария //*) разрешается продолжить на следующей.


При этом если необходимо перенести на следующую строку некоторые параметры из списка, то следует соблюдать такие правила:

  1. Разрыв строки необходимо сделать точно в том месте, где располагается разделительная запятая списка параметров.
  2. В следующей строке в позициях 1 и 2 нужно указать символы //. Продолжить ввод списка параметров, начиная не ранее 4-й, но не позднее 16-й позиции строки.

    Вот как выглядит запись многострочного предложения JCL:

    //OUT DD UNIT=SYSDA,VOL=SER=UB1, // DISP=NEW,SPACE=(1000(5,4)), // DSN=&&TEMP1


Исключением из этого правила является ситуация, когда перенос требует "разорвать" параметр, заключенный в апострофы. В этом случае следует вводить текст предложения до 71-й позиции включительно, а продолжение располагать точно с 16-й позиции следующей строки.

Структуру задания в z/OS схематично можно представить в виде последовательности операторов (рис. 5.21). Первым всегда указывается оператор задания JOB, который отмечает начало задания. Непосредственно за оператором JOB могут следовать другие операторы (DD, JCLLIB, OUTPUT), с помощью которых описывают общие ресурсы задания в целом (наборы данных, библиотеки процедур, параметры вывода результатов).


Рис. 5.21.  Структура задания

Последующие операторы задания группируются по шагам или пунктам. Шаг (пункт) задания (job step) - это последовательность операторов JCL, начинающаяся с оператора EXEC и включающая некоторое количество иных операторов (в основном DD). Оператор EXEC (его называют иногда оператором шага задания) устанавливает, какую программу (загрузочный модуль) или процедуру JCL необходимо выполнить. С помощью операторов DD в шаге задания описывают наборы данных и/или устройства, используемые при выполнении указанной в операторе EXEC программы (процедуры). Шаги задания выполняются строго последовательно. Однако есть возможность пропуска (невыполнения) некоторых шагов в зависимости от результатов работы предыдущих шагов с помощью операторов IF/THEN/ELSE или параметра COND операторов JOB и EXEC.Общее количество шагов задания не может превышать 255, включая шаги всех вызываемых в задании процедур.

Далее приводится обзор основных операторов языка управления заданиями, который, однако, не претендует на полноту и не может служить заменой стандартной документации [14], [15]. Многие операторы и особенности их применения представлены без некоторых деталей, которые могут понадобиться при практическом использовании JCL. При описании формата операторов используются привычные мнемонические правила:

  • информация, заключенная в квадратные скобки, является необязательной и может быть опущена;
  • символ | используется для указания альтернативных значений, из которых следует выбрать одно.


Нужно отметить, что язык JCL достаточно подробно описан в отечественной литературе [16], [17], [18], в том, правда, виде, в каком он сложился к началу 90-х годов.


Содержание раздела