JCL для копирования определенных элементов из одного PDS в другой

Я пытаюсь скопировать некоторые элементы из одного PDS в другой. Предположим, у меня 500 участников в одном PDS. Я пытаюсь переместить первые 100 на второй PDS, следующие 100 на третий PDS и так далее. Элементы, скопированные в другой PDS, также должны быть удалены из исходного PDS.

Можно ли это сделать с помощью JCL? Я смотрю на IEBGENER, но там я обнаружил, что мы можем напрямую копировать элементы, указав имена.


person Manasi    schedule 28.09.2010    source источник
comment
Ничего себе - я слышал или делал JCL в течение многих лет. Я бы очень хотел увидеть ответ на этот вопрос ради ностальгии   -  person Preet Sangha    schedule 28.09.2010
comment
Это вопрос домашнего задания? Какая бизнес-потребность в том, чтобы разделить входной файл на каждые 100 членов?   -  person Steve Ives    schedule 04.07.2017


Ответы (2)


Вы можете сделать это в несколько этапов работы. В качестве наброска:

  • Перехватывать вывод из LISTDS 'input-pds-name' MEMBERS в набор данных
  • манипулировать списком MEMBERS с помощью ICETOOL для создания команд IDCAMS REPRO и DELETE
  • запустить IDCAMS REPRO
  • запустить IDCAMS УДАЛИТЬ

Настройка ICETOOL для выбора и форматирования списка MEMBERS в команды REPRO/DELETE, безусловно, самый сложный шаг. На самом деле вам, возможно, потребуется выполнить пару шагов ICETOOL, чтобы получить все правильно. Это может занять очень много времени, если у вас нет большого опыта использования ICETOOL. Вот ссылка на Руководство по программированию IBM DFSORT (ICETOOL — это всего лишь интерфейс BATCH для DFSORT), чтобы дать вам некоторое представление о том, с чем вы сталкиваетесь.

Я предлагаю альтернативный подход. Попробуйте написать REXX-процедуру вместо шага ICETOOL. Захват вывода LISTDS и форматирование его в соответствующие команды IDCAMS REPRO/DELETE будет гораздо более простым процессом.

REXX доступен практически на каждом мейнфрейме IBM, поэтому доступ к нему не должен быть проблемой.

Пожалуйста, предоставьте немного больше информации о ваших соглашениях об именах наборов данных, если вам нужна дополнительная помощь. В частности, выходные имена PDS. Мне не нужны и не нужны точные имена, просто то, как они устроены. Например, выглядят они примерно так:

  • HLQ.НЕКОТОРОЕ ИМЯ.ФАЙЛ001
  • HLQ.НЕКОТОРОЕ ИМЯ.ФАЙЛ002
  • HLQ.НЕКОТОРОЕ ИМЯ.ФАЙЛ003

где первые 100 элементов копируются в FILE001, следующие 100 — в FILE002 и так далее. Это может повлиять на то, насколько универсальной вы можете сделать утилиту копирования файлов. Кроме того, вы продолжаете копировать блоками по 100 до тех пор, пока входной PDS не будет исчерпан, или есть какой-то предел остановки?

person NealB    schedule 28.09.2010

Если у вас есть продукт под названием "SAS", то будет очень легко скопировать выбранные элементы из одной PDS в другую.

DATA PDS;                                              
FILENAME OLD 'A*.B*.C*' DISP=SHR;              
FILENAME NEW 'A*.B*.D*' DISP=OLD;
PROC PDSCOPY INDD=OLD OUTDD=NEW ALIASMATCH=BOTH        
SHAREINPUT;                                      
SELECT  AJ:;                                        
RUN;                                                   

Примечание. Все элементы, начинающиеся с AJ, будут скопированы из старого набора данных в новый.

person Thomas    schedule 01.06.2011
comment
Это может сработать, но этот ответ не касается домашнего задания ОП, э-э, я имею в виду подлинное требование бизнеса. - person Steve Ives; 04.07.2017