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:
А normal-disposition параметр может принимать одно из следующих значений
А abnormal-disposition параметр может принимать одно из следующих значений
Вот описание параметров CATLG, UNCATLG, DELETE, PASS и KEEP:
Если какой-либо из подпараметров DISP не указан, значения по умолчанию следующие:
|
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) Вот описание всех используемых параметров:
|
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=*