JCL для копирования определенных членов из одного PDS в другой - PullRequest
1 голос
/ 28 сентября 2010

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

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

Ответы [ 2 ]

1 голос
/ 28 сентября 2010

Вы можете сделать это за несколько рабочих шагов. Как набросок:

  • Захватить вывод из списка членов 'input-pds-name' LISTDS в набор данных
  • манипулировать списком MEMBERS с помощью ICETOOL для создания команд IDCAMS REPRO и DELETE
  • запустить IDCAMS REPRO
  • запустить IDCAMS DELETE

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

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

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

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

  • HLQ.SOMENAME.FILE001
  • HLQ.SOMENAME.FILE002
  • HLQ.SOMENAME.FILE003

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

0 голосов
/ 01 июня 2011

Если у вас есть продукт под названием «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, будут копировать из старого в новый набор данных.

...