Московский государственный университет путей сообщения
Опубликован: 13.04.2006 | Доступ: свободный | Студентов: 868 / 87 | Оценка: 4.41 / 3.73 | Длительность: 24:53:00
Лекция 5:

Управление заданиями и язык JCL

Рассмотрим ключевые параметры оператора DD.

Параметр DSNAME (допускается сокращенная запись DSN ) определяет имя набора данных (простое или составное), например:

//BIBL DD DSNAME=LIB1    
//SYSIN DD DSN=D.USER1.DATA

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

//LOAD DD DSN=USERLIB(PROG1)
//XXX DD DSN=MY.JCL(JOBTEST)

Перед именем временного набора данных записывают два знака амперсанда &&:

//SYSLIN    DD DSN=&&LOADSET(GO)
//SYSUT1    DD DSN=&&SYSUT1

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

SYSxxxxx.Txxxxxx.RA000.jobname.Rxxxxxx

где x - определенным образом сформированные цифры и символы.

В качестве значения параметра DSNAME можно указывать ссылки на другие операторы DD в формате *.имя_DD или *.имя_шага.имя_DD.

//STFG EXEC PGM=PROG1
//SYSUT1 DD DSN=DATA.IN
...
//SYSLIN DD DSN=*.STFG.SYSUT1

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

DISP=([статус][,дисп_НЗ][,дисп_АЗ])

где статус - исходное (текущее) состояние набора данных, дисп_НЗ - действие при нормальном завершении шага задания, дисп_АЗ - действие, которое надлежит выполнить при аварийном завершении шага задания.

Подпараметр статус может принимать следующие значения:

NEW - в указанном шаге задания создается новый набор данных;

OLD - набор данных существует (создан ранее);

SHR - набор данных существует и может быть использован одновременно другим заданием, т.е. разделяется различными заданиями в режиме чтения;

MOD - набор данных существует и будет модифицироваться в указанном шаге задания (используется только для последовательных наборов данных).

Подпараметры диспозиции дисп_НЗ и дисп_АЗ могут принимать следующие значения:

DELETE - набор данных следует уничтожить;

KEEP - набор данных следует сохранить;

CATLG - набор данных следует сохранить и каталогизировать;

UNCATLG - набор данных нужно сохранить, но при этом исключить из системного каталога.

PASS - набор данных следует передать для использования в последующем шаге того же задания.

Последнее значение ( PASS ) может быть использовано только для подпараметра дисп_НЗ.

Примеры задания диспозиции:

  1. DISP=(NEW,KEEP,DELETE) - набор данных создается и будет сохранен при нормальном завершении и удален при аварийном завершении шага задания;
  2. DISP=(SHR,KEEP,UNCATLG) - набор данных существует и будет сохранен при нормальном завершении и исключен из каталога при аварийном завершении шага задания.

Допускается не указывать некоторые или даже все подпараметры, учитывая следующие правила формирования их значений по умолчанию:

  • если не указан первый подпараметр ( статус ), то принимается значение NEW ;
  • если не указан второй подпараметр ( дисп_НЗ ), то принимается значение DELETE для нового и KEEP для существующего набора данных;
  • если не указан третий подпараметр ( дисп_АЗ ), то принимается значение, заданное для второго подпараметра ( дисп_НЗ );
  • если не указан параметр DISP, то принимаются значения (NEW,DELETE,DELETE), то есть набор данных создается и уничтожается во время выполнения шага задания (временный).

Примеры:

DISP=(NEW,KEEP) и DISP=(,KEEP) соответствует DISP=(NEW,KEEP,KEEP)
DISP=NEW и DISP=(NEW,,DELETE) соответствует 
                              DISP=(NEW,DELETE,DELETE)
DISP=OLD соответствует DISP=(OLD,KEEP,KEEP)
DISP=(OLD,,DELETE) соответствует DISP=(OLD,KEEP,DELETE)
DISP=(SHR,,KEEP) соответствует DISP=(SHR,KEEP,KEEP)

Параметр UNIT назначает набору данных устройство ввода-вывода и определяется в большинстве случаев одним из трех значений (см. п. 5.1.3):

UNIT=адрес | типовое_имя | групповое_имя

Подпараметр адрес задает трех- или четырехразрядный физический адрес устройства (в шестнадцатеричном представлении). Подпараметр типовое_имя задает устройство по установленному производителем оборудования номеру модели, однозначно указывающему на тип устройства. Подпараметр групповое_имя определяет устройство через логическое имя устройства или группы устройств, задаваемое системным программистом на этапе конфигурирования оборудования с помощью компонента HCD в таблице EDT. Ниже приведены примеры задания параметра UNIT различными способами:

//AD DD UNIT=220 - адрес устройства
//TD DD UNIT=3390 - типовое имя
//GD DD UNIT=SYSDA - групповое имя
//GD DD UNIT=VIO - набор данных в виртуальной памяти

Параметр VOLUME (сокращенно VOL ) указывает том или тома, на которых размещается набор данных. Рассмотрим наиболее употребительные варианты использования данного параметра.

В первом варианте том определяется посредством задания серийного имени тома в виде:

VOL=SER=имя[,имя]...

Например:

//DSETl DD DSN=YS,UNIT=SYSDA,VOL=SER=PTOM01

Здесь описан набор данных YS, находящийся на устройстве, принадлежащем к группе SYSDA с серийным номером тома PTOM01. Для многотомных наборов данных следует указывать список имен.

Во втором варианте том задается через ссылку, определяемую одним из трех способов:

VOL=REF=имя_набора_данных | *.имя_DD |.имя шага.имя_DD

В первом способе будет выбран том, на котором размещен ранее описанный в задании каталогизированный набор данных. Второй и третий способы используют стандартный формат ссылок. Рассмотрим пример:

//STEP1 EXEC PGM=....
//DD1 DD DSN=OLD.DATASET,DISP=SHR
//DD2 DD DSN=DSET1,DISP=(,CATLG,DELETE),VOL=REF=*.DD1
//STEP2 EXEC PGM=...
//DD3 DD DSN=DSET2,DISP=(,CATLG),VOL=REF=*.STEP1.DD1

Здесь создаваемые наборы данных DSET1 и DSET2 будут размещены на том же томе, что и существующий набор данных с именем OLD.DATASET.

Параметр DCB устанавливает характеристики логической организации набора данных, фиксируемые в блоке управления данными (Data Control Block), который создается системой для каждого набора данных. Блок управления данными представляет собой таблицу, которая после открытия заполняется информацией из описания набора данных в программе и дополняется данными из соответствующего оператора DD. Параметр DCB обычно имеет формат:

DCB=(список подпараметров)

Все подпараметры DCB являются ключевыми. Перечислим основные из них:

  • DSORG - тип организации набора данных;
  • RECFM - формат записей;
  • LRECL - длина логической записи;
  • BLKSIZE - длина блока;
  • BUFNO - число буферов ввода-вывода, выделяемых набору данных;
  • BUFL - размер каждого буфера в байтах.

Подпараметр RECFM может принимать следующие значения: F - записи фиксированной длины; V - записи переменной длины; U - записи неопределенной длины. Выбор типа записи определяет пользователь. Если он группирует записи в блоки, то указывает это, добавляя к символу формата букву В. Например, указание RECFM=FB означает, что сблокированные записи имеют фиксированную длину.

Примеры:

  • Набор данных состоит из записей фиксированной длины по 128 байт, которые объединяются в блоки по четыре записи в каждом:
    DCB=(RECFM=FB,LRECL=128,BLKSIZE=512)
  • Набор данных содержит неблокированные записи фиксированной длины по 80 байт:
    DCB=(BLKSIZE=80,RECFM=F)

Вместо ключевых подпараметров DCB можно записать ссылку на другой оператор DD, причем некоторые подпараметры можно переопределить заново:

//ST1 DD DSN=VAX,DCB=(RECFM=VB,LRECL=64,BLKSIZE=640)
//PRINT DD DCB=(*.ST1,BLKSIZE=128)

Здесь подпараметры набора данных для параметра DCB копируются из оператора DD с именем ST1, кроме размера блока, который задается непосредственно.