Вот, пожалуйста.
//JOBNAME JOB 1,NOTIFY=&SYSUID
//STEP1 EXEC PGM=SORT
//SORTIN DD *
P1AAAAAAA0101XXXXXXX
P2AAAAAAA0101XXXXXXX
P4AAAAAAA0101XXXXXXX
P4AAAAAAA0101XXXXXXX
P4AAAAAAA0102XXXXXXX
P4AAAAAAA0103XXXXXXX
P4AAAAAAA0104XXXXXXX
P5AAAAAAA0101XXXXXXX
P7AAAAAAA0101XXXXXXX
P9AAAAAAA0101XXXXXXX
//SORTOUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
INREC IFTHEN=(WHEN=INIT,BUILD=(1:1,20,21:SEQNUM,2,ZD)),
IFTHEN=(WHEN=(1,2,CH,EQ,C'P4'),OVERLAY=(21:C'01'))
SORT FIELDS=(1,2,CH,A,10,4,CH,A,21,2,CH,A)
SUM FIELDS=NONE
OUTREC FIELDS=(1:1,20)
- Я использовал
INREC IFTHEN
, чтобы установить порядковые номера в конце
запись. Порядковые номера установлены в 1 для записей с первыми 2 байтами
как P4
.
- Управляющие поля, включенные в оператор
SORT FIELDS
, являются первыми 2
байты, от 10 до 4 байтов и от 21 до 2 байтов (порядковый номер).
- Обратите внимание, что порядковые номера для повторяющихся записей в P4 будут 1. Так
SUM FIELDS=NONE
удалит только эти записи.
Выход:
P1AAAAAAA0101XXXXXXX
P1AAAAAAA0101XXXXXXX
P2AAAAAAA0101XXXXXXX
P4AAAAAAA0101XXXXXXX
P4AAAAAAA0102XXXXXXX
P4AAAAAAA0103XXXXXXX
P4AAAAAAA0104XXXXXXX
P5AAAAAAA0101XXXXXXX
P7AAAAAAA0101XXXXXXX
P9AAAAAAA0101XXXXXXX
Давайте запустим тот же набор операторов SORT со следующим вводом. Обратите внимание, что первые 2 записи (P1) являются дубликатами вместе с P4.
//JOBNAME JOB 1,NOTIFY=&SYSUID
//STEP1 EXEC PGM=SORT
//SORTIN DD *
P1AAAAAAA0101XXXXXXX
P1AAAAAAA0101XXXXXXX
P2AAAAAAA0101XXXXXXX
P4AAAAAAA0101XXXXXXX
P4AAAAAAA0101XXXXXXX
P4AAAAAAA0102XXXXXXX
P4AAAAAAA0103XXXXXXX
P4AAAAAAA0104XXXXXXX
P5AAAAAAA0101XXXXXXX
P7AAAAAAA0101XXXXXXX
P9AAAAAAA0101XXXXXXX
//SORTOUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
INREC IFTHEN=(WHEN=INIT,BUILD=(1:1,20,21:SEQNUM,2,ZD)),
IFTHEN=(WHEN=(1,2,CH,EQ,C'P4'),OVERLAY=(21:C'01'))
SORT FIELDS=(1,2,CH,A,10,4,CH,A,21,2,CH,A)
SUM FIELDS=NONE
OUTREC FIELDS=(1:1,20)
Вывод после запуска задания показан ниже. Обратите внимание, что дублирующиеся записи P1 сохраняются, а дублирующиеся записи с определенным типом записи (P4) удаляются только.
P1AAAAAAA0101XXXXXXX
P1AAAAAAA0101XXXXXXX
P2AAAAAAA0101XXXXXXX
P4AAAAAAA0101XXXXXXX
P4AAAAAAA0102XXXXXXX
P4AAAAAAA0103XXXXXXX
P4AAAAAAA0104XXXXXXX
P5AAAAAAA0101XXXXXXX
P7AAAAAAA0101XXXXXXX
P9AAAAAAA0101XXXXXXX
Надеюсь, это поможет.