Как написать JCL SORT для копирования полей сортировки по условию; + проверка того, что первая строка файлов содержит 'FILE1', написанный в первой строке

Предположим, у нас есть входной файл:

 123456789+123456789+
 FILE1 -X-X-X-X-X-X-X
 ABCD 1234 XOXOXO 001
 WXYZ 5678 YOYOYO 002
 ABCD 0011 XOXOXO 003

МНЕ НУЖНО СОРТИРОВАТЬ ДАННЫЕ В ФАЙЛЕ2, КОГДА ВКЛЮЧАЮТ=(11,6,CH,EQ,C'XOXOXO'), ЧТО ЛЕГКО ПОЛУЧИТЬ.

Но мне также нужно проверить, что первая строка (которая является заголовком файла) должна содержать FILE1, написанный в первой строке. только тогда мы можем проверить условие INCLUDE INCLUDE=(11,6,CH,EQ,C'XOXOXO')

Я думаю, мне нужно ЕСЛИ тогда =( что-то в этом роде)


person Agent Mahone    schedule 12.08.2014    source источник
comment
Используете ли вы DFSort или другую процедуру сортировки???, может быть лучшее решение в зависимости от фактической процедуры сортировки   -  person Bruce Martin    schedule 13.08.2014
comment
Я предполагаю, что вы хотите сделать это с JCL. 1 возможное решение - использовать три шага шаг 1 (* сортировка включает с пределом чтения 1) шаг 2 тестовый шаг (idcams ???) шаг 3 сортировка шаг сортировки (с if / cond)   -  person Bruce Martin    schedule 13.08.2014


Ответы (1)


Вам нужно временно добавить порядковый номер в свою запись, проверить, является ли порядковый номер единицей в WHEN=GROUP, и НАЖАТЬ значение 1,6. Затем используйте OUTFIL INCLUDE= (что похоже на «второй выстрел» в INCLUDE COND) и BUILD, чтобы вернуть вашу запись к ее предыдущему размеру.

  OPTION COPY
  INREC IFTHEN=(WHEN=INIT,
                     OVERLAY=(21:SEQNUM,7,ZD)),
        IFTHEN=(WHEN=GROUP,BEGIN=(21,7,ZD,EQ,1),
                     PUSH=(28:1,6))
  OUTFIL INCLUDE=(28,6,CH,EQ,C'FILE1 ',
                 AND,
                 rest of your condition),
         BUILD=(1,20)

Обратите внимание, что 7 после SEQNUM и в BEGIN являются одним и тем же полем, и этого должно быть достаточно, чтобы подсчитать все записи в вашем файле, иначе вы получите рассол.

Вы не можете использовать INCLUDE COND=, потому что вы, похоже, не можете идентифицировать заголовок, за исключением того, что он является первой записью, а INCLUDE/OMIT COND= ​​обрабатываются раньше всего.

person Bill Woodger    schedule 13.08.2014