JCL - Заявление DD

Наборы данных - это файлы мэйнфрейма с записями, организованными в определенном формате. Наборы данных хранятся на устройстве хранения с прямым доступом (DASD) или на лентах мэйнфрейма и являются основными областями хранения данных. Если эти данные необходимо использовать / создавать в пакетной программе, тогда физическое имя файла (т. Е. Набора данных) вместе с форматом файла и организацией кодируется в JCL.

Определение каждого набора данных, используемого в JCL, дается с использованием DD statement. Ресурсы ввода и вывода, необходимые для шага задания, должны быть описаны в операторе DD с такой информацией, как организация набора данных, требования к хранению и длина записи.

Синтаксис

Ниже приведен базовый синтаксис оператора JCL DD:

//DD-name DD Parameters

Описание

Давайте посмотрим на описание терминов, используемых в приведенном выше синтаксисе оператора DD.

DD-NAME

DD-NAME идентифицирует набор данных или ресурс ввода / вывода. Если это файл ввода / вывода, используемый программой COBOL / Assembler, то в программе ссылка на файл имеет это имя.

DD

Это ключевое слово для обозначения оператора DD.

ПАРАМЕТРЫ

Ниже приведены различные параметры для оператора DD. Вы можете использовать один или несколько параметров в зависимости от требований, разделенных запятыми:

Параметр Описание
DSN

Параметр DSN относится к физическому имени набора данных вновь созданного или существующего набора данных. Значение DSN может состоять из подименов, каждое длиной от 1 до 8 символов, разделенных точками, и общей длиной 44 символа (буквенно-цифровых). Ниже приводится синтаксис:

DSN=Physical Dataset Name

Temporary datasetsнуждаются в хранении только на время выполнения задания и удаляются при завершении задания. Такие наборы данных представлены какDSN=&name или просто без указания DSN.

Если временный набор данных, созданный на этапе задания, должен использоваться на следующем этапе задания, то он обозначается как DSN=*.stepname.ddname. Это называется Backward Referencing.

DISP

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

DISP=(status, normal-disposition, abnormal-disposition)

Ниже приведены допустимые значения для status:

  • NEW: Набор данных создается заново на этапе задания. OUTPUT1 в приведенном выше примере.

  • OLD: Набор данных уже создан и будет перезаписан на этапе задания. Шаг задания получает монопольный доступ к набору данных, и никакое другое задание не может получить доступ к этому набору данных до завершения этапа задания.

  • SHR: Набор данных уже создан и будет прочитан на этапе задания. Набор данных может быть прочитан несколькими заданиями одновременно. Пример: INPUT1 и INPUT2.

  • MOD: Набор данных уже создан. Это расположение будет использоваться, когда необходимо добавить новые записи в существующий набор данных (существующие записи не будут перезаписаны).

А normal-disposition параметр может принимать одно из следующих значений

  • CATLG, UNCATLG, DELETE, PASS и KEEP

А abnormal-disposition параметр может принимать одно из следующих значений

  • CATLG, UNCATLG, DELETE и KEEP

Вот описание параметров CATLG, UNCATLG, DELETE, PASS и KEEP:

  • CATLG : Набор данных сохраняется с записью в системном каталоге.

  • UNCATLG : Набор данных сохраняется, но запись системного каталога удаляется.

  • KEEP: Набор данных сохраняется без изменения каких-либо записей каталога. KEEP - единственное допустимое расположение для файлов VSAM. Это должно использоваться только для постоянных наборов данных.

  • DELETE : Набор данных удален из пользовательского и системного каталога.

  • PASS: Это действительно только для нормального расположения. Это используется, когда набор данных должен быть передан и обработан на следующем этапе задания в JCL.

Если какой-либо из подпараметров DISP не указан, значения по умолчанию следующие:

  • status : NEW - значение по умолчанию.

  • normal-disposition : Если статус НОВЫЙ, нормальное расположение по умолчанию - УДАЛИТЬ, иначе - СОХРАНИТЬ.

  • abnormal-disposition : То же, что и нормальный характер.

DCB

Параметр Data Control Block (DCB) подробно описывает физические характеристики набора данных. Этот параметр необходим для наборов данных, вновь созданных на этапе задания.

LRECL - это длина каждой записи в наборе данных.

RECFM - это формат записи набора данных. RECFM может содержать значения FB, V или VB. FB - это организация с фиксированными блоками, в которой одна или несколько логических записей сгруппированы в один блок. V - это организация переменных, в которой одна логическая запись переменной длины помещается в один физический блок. VB - это организация переменных блоков, в которой одна или несколько логических записей переменной длины помещаются в один физический блок.

BLKSIZE - это размер физического блока. Чем больше блок, тем больше количество записей для файла FB или VB.

DSORG - это тип организации наборов данных. DSORG может содержать значения PS (физическая последовательность), PO (секционированная организация) и DA (прямая организация).

Когда есть необходимость реплицировать значения DCB одного набора данных в другой в рамках одного и того же шага задания или JCL, он указывается как DCB = *. Stepname.ddname, где stepname - это имя шага задания, а ddname - набор данных, из которого DCB скопирован.

Посмотрите пример ниже, где RECFM = FB, LRECL = 80 формирует DCB набора данных OUTPUT1.

SPACE

Параметр SPACE указывает пространство, необходимое для набора данных на DASD (диск хранения с прямым доступом). Ниже приводится синтаксис:

SPACE=(spcunits, (pri, sec, dir), RLSE)

Вот описание всех используемых параметров:

  • spcunits : Это может быть один из CYL (Цилиндр), TRK (Дорожки) или BLKSIZE (Размер блока).

  • pri : Это основное пространство, необходимое для набора данных.

  • sec : Это дополнительное пространство, необходимое, когда основного места недостаточно.

  • ir : Это требуемые блоки каталога, если набор данных является PDS (многораздельный набор данных) с членами внутри него.

  • RLSE : Это используется для освобождения неиспользуемого пространства при завершении задания.

UNIT

Параметры UNIT и VOL перечислены в системном каталоге для каталогизированных наборов данных и, следовательно, могут быть доступны только с физическим именем DSN. Но для некаталогизированных наборов данных оператор DD должен включать эти параметры. Для создания новых наборов данных можно указать параметры UNIT / VOL или Z / OS выделит подходящее устройство и том.

Параметр UNIT указывает тип устройства, на котором хранится набор данных. Тип устройства можно определить с помощью Аппаратного адреса или группы Тип устройства. Ниже приводится синтаксис:

UNIT=DASD | SYSDA

Где DASD означает устройство хранения с прямым доступом, а SYSDA означает прямой доступ к системе и относится к следующему доступному устройству хранения на диске.

VOL

Параметр VOL указывает номер тома на устройстве, идентифицированном параметром UNIT. Ниже приводится синтаксис:

VOL=SER=(v1,v2)

Где v1, v2 - серийные номера томов. Вы также можете использовать следующий синтаксис:

VOL=REF=*.DDNAME

Где REF - это обратная ссылка на серийный номер тома набора данных на любом из предыдущих этапов задания в JCL.

SYSOUT

Параметры оператора DD, обсуждаемые до сих пор, соответствуют данным, хранящимся в наборе данных. Параметр SYSOUT направляет данные на устройство вывода в зависимости от указанного класса. Ниже приводится синтаксис

SYSOUT=class

Если класс A, то он направляет вывод на принтер, а если класс * затем он направляет вывод в то же место назначения, что и параметр MSGCLASS в операторе JOB.

пример

Ниже приведен пример, в котором используются операторы DD вместе с различными параметрами, описанными выше:

//TTYYSAMP JOB 'TUTO',CLASS=6,MSGCLASS=X,REGION=8K,
//         NOTIFY=&SYSUID
//*
//STEP010  EXEC PGM=ICETOOL,ADDRSPC=REAL
//*
//INPUT1   DD DSN=TUTO.SORT.INPUT1,DISP=SHR
//INPUT2   DD DSN=TUTO.SORT.INPUT2,DISP=SHR,UNIT=SYSDA,
//         VOL=SER=(1243,1244)
//OUTPUT1  DD DSN=MYFILES.SAMPLE.OUTPUT1,DISP=(,CATLG,DELETE),
//         RECFM=FB,LRECL=80,SPACE=(CYL,(10,20))
//OUTPUT2  DD SYSOUT=*