Как я могу использовать IEBGENER? - PullRequest
3 голосов
/ 14 апреля 2009

У меня возникли проблемы с выяснением того, как заставить IEBGENER работать так, как я хочу. Я должен предварить все это, сказав, что я запускаю IEBGENER в среде z / OS на академическом мэйнфрейме.

У меня есть три JCL-процедуры (PROC), встроенные в некоторый код COBOL, с которым я работаю, и мне нужен IEBGENER в качестве одного из первых шагов для помещения моего PROC в «постоянную библиотеку процедур под моим MVS ID», а также положить мой источник COBOL «в постоянный последовательный набор данных под моим MVS ID».

Инструктор упоминает, что «не забывайте кодировать правильную информацию LRECL и BLKSIZE для этих наборов данных».

Я не очень знаком с IEBGENER и не нашел ничего, что действительно объясняло бы мне, как делать то, что я пытаюсь сделать.

Кто-нибудь из "Большого железа" может помочь?

Ответы [ 7 ]

5 голосов
/ 14 апреля 2009

Как уже упоминалось, IEBGENER - это программа копирования. Он принимает входные данные для SYSUT1 и «генерирует» его для вывода набора данных SYSUT2. В вашем случае, поскольку вы копируете 2 файла, проще всего иметь 2 шага GENER, каждый из которых создает один выходной набор данных.

Единственная сложная задача - получить выходные наборы данных в правильном формате. Итак, для генерации в proclib, предполагая, что он в данный момент не каталогизирован, ваш SYSUT2 будет выглядеть примерно так:

//SYSUT2  DD  DSN=&SYSUID.PROCLIB,
//            DISP=(NEW,CATLG,DELETE),
//            DCB=(RECFM=FB,LRECL=80,DSORG=PO)

Последовательный набор данных для исходных выходных данных будет выглядеть аналогично, но без параметра DSORG в опции DCB. Опция PO говорит о создании PDS, а не файла QSAM. В современных установках z / OS BLKSIZE не нужно кодировать, так как система рассчитает оптимальный размер, если вы его не укажете.

4 голосов
/ 14 апреля 2009

вот как использовать IEBGENER (как уже упоминалось, должен быть на сайте IBM docs):

//COPY EXEC PGM=IEBGENER
//SYSUT1 DD DSN=MY.INPUT.FILE,DISP=SHR
//SYSUT2 DD DSN=MY.OUTPUT.FILE,DISP=NEW,SPACE=....
//SYSIN DD DUMMY

IEBGENER - это "просто" программа копирования, и все, что нужно, это входной файл, выходной файл и управляющий файл

Я не уверен, что вы считаете "конкретным", разве это не просто вопрос, какие имена использовать?

edit: если то, что вы хотите, определяет ваш ввод inline, попробуйте это:

//SYSUT1 DD *
...
/*

или еще лучше, если ваш вход также содержит JCL:

//SYSUT1 DD DATA,DELIMITER=XX
...
XX

Тем не менее, JCL все еще не исключение.

2 голосов
/ 07 апреля 2012

Чтобы вам не приходилось беспокоиться о параметре DCB, неплохо было бы указать на значение из входного набора данных.

//STEP100  EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1   DD DISP=SHR,DSN=INPUT.FILE
//SYSUT2   DD DSN=OUTPUT.FILE,
//           DISP=(,CATLG,DELETE),
//           SPACE=(TRK,(300,50),RLSE),
//           DCB=*.SYSUT1
//SYSIN    DD DUMMY
2 голосов
/ 28 сентября 2009

Пара незначительных очков:

DCB = (RECFM = FB, LRECL = 80, DSORG = РО)

DCB = больше не требуется, просто код

RECFM = FB, LRECL = 80, DSORG = РО

Также:

Поскольку записи имеют фиксированный формат, BLKSIZE должен быть четным кратным из 80. Очень часто люди используют значение из 3120. Причины этого скрытый в глубине древности. я как правило, используют 27920, чтобы получить наиболее эффективное использование пространства на 3390 устройство.

Нет необходимости указывать размер блока для нового набора данных DASD (диск). Определенный системой размер блока автоматически даст вам лучший размер блока (который действительно будет 27920 для LRECL 80 на 3390)

2 голосов
/ 14 апреля 2009

Вот ссылка на руководства по IBM Z / OS http://www -03.ibm.com / системы / г / OS / ЗР / bkserv / v1r10books.html найдите JCL, и вы найдете инструкции для JCL. IEBGENER - это поставляемая IBM программа копирования для копирования данных из одного набора данных (файла) в другой набор данных. У вас будет входной файл, выходной файл и контрольный файл. LRECL и BLKSIZe являются параметрами набора данных. Если параметры входного файла и выходного файла не совпадают, данные могут быть скопированы неправильно. Я не совсем поняла ваши вопросы. Можете ли вы уточнить, что именно вам нужно делать с IEBGENER.

0 голосов
/ 21 июля 2017

IEBGENER - одна из самых недооцененных и неправильно понятых утилит IBM.

Вот гиперссылка на лучшую документацию: IEBGENER .

IEBGENER - это не просто утилита «файл в файл», которая только копирует. Это может легко и более эффективно создавать переменные заблокированные файлы. При правильной буферизации она может стать самой быстрой утилитой копирования файлов в файл, поскольку раньше она не очень хорошо внутренне буферизовалась, хотя теперь я считаю, что так оно и есть, теперь она автоматически почти самая быстрая. Сообщения // SYSPRINT - к сожалению - чрезвычайно загадочны, если не на самом деле раздражающе смешны. Во многих магазинах есть ускоритель под названием BETERGENER, так как большинство программистов не знали, как буферизовать IEBGENER, и, поскольку IBM обслуживает новых программистов, которые хотят, чтобы MVS выглядел и действовал как Windows, использование IEBGENER более удобно для пользователя. гад

0 голосов
/ 30 апреля 2009

Звучит так, как будто ваш инструктор напоминает вам указать правильные значения LRECL и BLKSIZE для «постоянной библиотеки процедур» и «постоянных последовательных наборов данных». Исторически такими наборами данных являются RECFM = FB, LRECL = 80.

Поскольку записи имеют фиксированный формат, BLKSIZE должен быть даже кратным 80. Очень часто люди используют значение 3120. Причины этого скрыты в глубокой древности. Я склонен использовать 27920, чтобы максимально эффективно использовать пространство на устройстве 3390.

...