给你。
//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 在末尾设置序列号
记录。对于前 2 个字节的记录,序列号设置为 1
作为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
希望这会有所帮助。