как сравнить несколько файлов с помощью jcl

У меня есть требование, когда я получаю 6 файлов из вышестоящего приложения в GDG. Я хочу сравнить эти все 6 версий друг с другом, чтобы увидеть любые дубликаты, т. е. существует вероятность того, что два или более пришедших файла могут быть дубликатами (ошибочно отправленными вверх по течению дважды или несколько раз). Не могли бы вы помочь в предоставлении решения с использованием JCL или Cobol?


person tanvi doiphode    schedule 14.05.2020    source источник


Ответы (2)


Лучше всего использовать средство сравнения ISPF (ISPF 3.13 — SuperC или 3.13 — SuperCE) для сравнения файлов, но выбирать выполнение в фоновом режиме, а не на переднем плане. Это создаст пакетное задание, которое вы можете использовать в качестве шаблона для шагов, включаемых в ваше задание:

//SUPERC  EXEC PGM=ISRSUPC,PARM=(DELTAL,LINECMP,' SEQ','') 

//NEWDD   DD DISP=SHR,DSN=new.dataset 
//OLDDD   DD DISP=SHR,DSN=old.dataset   
//OUTDD   DD SYSOUT=* 

Имейте в виду, что сравнение ISPF сравнивает только 2 файла; чтобы сравнить 6, вам понадобится 15 шагов (я думаю).

Если на вашем сайте есть PDSMAN, вы можете использовать его модуль PDSM37 для создания контрольной суммы для каждого набора данных и небольшой REXX для простого сравнения 6 контрольных сумм.

person Steve Ives    schedule 20.05.2020

Если они представляют собой правильно структурированные наборы данных (они не являются файлами), то они должны иметь записи заголовков. Все, что вам нужно сделать, это сравнить первую запись каждого набора данных. Вы можете использовать свой продукт сортировки или использовать ISRSUPC в пакетном режиме.

JCL не может этого сделать, поскольку JCL только сообщает операционной системе, какие программы и ресурсы необходимы для выполнения задачи. Таким образом, даже для решения COBOL потребуется JCL.

И, наконец, я считаю, что вы говорите о поколениях без версий. Версии относятся к нумерации после GxxxxV.

person NicC    schedule 14.05.2020
comment
В z/OS нет ничего, что указывало бы, что каждому файлу нужна уникальная запись заголовка. - person Steve Ives; 17.05.2020
comment
@Steve Ives: И я не говорил и не подразумевал этого. - person NicC; 20.05.2020
comment
ок, извини. Можете ли вы объяснить, что вы имели в виду под «у них должны быть записи заголовков» и почему сравнение первой записи каждого файла является методом определения того, являются ли два набора данных одинаковыми? - person Steve Ives; 20.05.2020
comment
Вы не можете использовать ISRSUPC для сравнения только первой записи, и даже если бы вы могли, он не сказал бы вам, совпадают ли файлы. Первые записи могут быть одинаковыми, но остальные файлы могут отличаться. - person Steve Ives; 28.05.2020
comment
Правда, вы не могли использовать SUPERC, но с DFSort вы можете (ключи соединения), и если бы заголовки были там и они были идентичными, это означало бы, что два набора данных содержат одни и те же данные. зависит, конечно, от того, какие данные вы включаете в запись заголовка, например. дату и время, а также последовательность выполнения. - person NicC; 06.06.2020
comment
Опять же, вы продвигаете идею о том, что наборы данных z/OS имеют заголовки, которые сообщают вам, являются ли два файла одинаковыми — то, что вы отрицали в нескольких комментариях назад. Откуда вы это берете? Это совершенно неверно, и если вы будете исходить из этого предположения, вы получите много ошибок. DF/SORT JOINKEYS предназначен для объединения наборов данных, а не для сравнения. - person Steve Ives; 06.06.2020
comment
Я не говорю, что все наборы данных z/os имеют заголовки. Я говорю, что хорошо спроектированное приложение будет иметь заголовки (и трейлеры), и в этом случае, если набор данных отправляется дважды, сравнение заголовков может указать на эту ситуацию. И JOINKEYS может сравнивать записи, и, прежде всего, можно было бы использовать MERGE для объединения наборов данных. - person NicC; 08.06.2020