下面的 JCL 应该选择每条记录的第一个副本,由于“OPTION COPY”而使它们保持相同的顺序,并且仅使用字节 4 长度为 7 和 '.' 的 'NETWORK' 字节 59 长度为 1,不包括字节 3 长度为 5 的“TOTAL”和字节 3 长度 5 的“GRAND”记录。
它以字节 4 长度 7 显示任何带有“网络”的记录
//SORT EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD DISP=SHR,DSN=INPUT.FILE
//T1 DD DSN=&&T1,DISP=(MOD,PASS),SPACE=(TRK,(5,5))
//OUT DD SYSOUT=*
//OUTFIL DD SYSOUT=*
//TOOLIN DD *
* DROP EVERYTHING WE DON'T WANT
SELECT FROM(IN) TO(OUT) ON(1,134,CH) USING(CTL1) FIRST
/*
//CTL1CNTL DD *
OPTION COPY
INCLUDE COND=((4,7,CH,EQ,C'NETWORK',OR,
59,1,CH,EQ,C'.'),AND,
(3,5,CH,NE,C'TOTAL',AND,
3,5,CH,NE,C'GRAND'))
/*
如果我将其更改为仅字节 4 长度为 7 的“网络”的条件,它只会显示 1 条记录,这是我所期望的。每次输入都是一样的。
//CTL1CNTL DD *
OPTION COPY
INCLUDE COND=((4,7,CH,EQ,C'NETWORK'))
/*
我不知道有什么区别导致其他条件改变它所以它有重复
2 条评论表明问题出在包含条件上。
我已经尝试过以下方法,第一个选择正在做我原来做的事情,第二个选择没有包含条件,因为它们已经在第一个选择中发生了。在字节 4 长度为 7 的 NETWORK 中仍有重复记录。NETWORK 的其余记录完全相同,因此应该只有 1 个。
//TOOLIN DD *
* DROP EVERYTHING WE DON'T WANT
SELECT FROM(IN) TO(T1) ON(1,133,CH) USING(CTL1) FIRST
SELECT FROM(T1) TO(OUT) ON(1,133,CH) USING(CTL2) FIRST
/*
//CTL1CNTL DD *
OPTION COPY
INCLUDE COND=((4,7,CH,EQ,C'NETWORK',OR,
59,1,CH,EQ,C'.'),AND,
(3,5,CH,NE,C'TOTAL',AND,
3,5,CH,NE,C'GRAND'))
/*
//CTL2CNTL DD *
OPTION COPY
/*