下面的JCL应该选择每个记录的第一个副本,由于“选项副本”并且仅在第4字节长度为7的“NETWORK”下保持相同顺序,以及''在字节59长度为1,在字节不包括在字节3长度5和“GRAND”与“总计”记录3长度5.DFSORT在仅查找第一个副本时选择重复项
它示出了具有“网络”的任何记录在字节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时只更改了'NETWORK'的条件,它只显示1条记录,这正是我所期望的。输入每次都是一样的。
//CTL1CNTL DD *
OPTION COPY
INCLUDE COND=((4,7,CH,EQ,C'NETWORK'))
/*
我想不出有什么区别,导致其他条件来改变它,所以它具有重复
的评论2表明,这个问题是与包括条件。
我已经尝试了下面的内容,第一个选择是在做我正在做的原创,第二个SELECT没有包含条件,因为它们已经发生在第一个选择中。目前还有复制与网络记录的字节长度为4 7.用网络记录的其余部分是完全相同的,所以应该只有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
/*
你的问题是与包括条件或ICETOOL选择? 对于你的描述,你可能有太多的记录,因为它落在第一个OR条件。 – user823959 2012-02-10 18:33:41
重新检查你的AND和OR和括号,以确保它正在做你想做的事。请记住,电脑是世界上最愚蠢的东西;它完全符合你的要求。 :) 此外,我不知道// SORTDIAG DD DUMMY语句是否会在这里帮助,但你永远不知道;我会在那里扔一个,看看额外的消息。 – zarchasmpgmr 2012-02-10 22:32:32