我为这两张排序卡获得了不同的输出,有人可以告诉我为什么吗?
1
INCLUDE COND=((1,3,CH,NE,C'ABC',AND,5,3,CH,NE,C'PQR'),OR,
(1,3,CH,NE,C'CAB'),OR,
(1,3,CH,NE,C'CBA'),OR,
(1,3,CH,NE,C'ABC',AND,5,3,CH,NE,C'PQR'))
SORT FIELDS=COPY
2
OMIT COND=((1,3,CH,EQ,C'ABC',AND,5,3,CH,EQ,C'PQR'),OR,
(1,3,CH,EQ,C'CAB'),OR,
(1,3,CH,EQ,C'CBA'),OR,
(1,3,CH,EQ,C'ABC',AND,5,3,CH,EQ,C'PQR'))
SORT FIELDS=COPY
这基本上是NOT-EQUAL时的INCLUDE和EQUAL时的OMIT。
答案 0 :(得分:5)
问题是你没有扭转和以及或。这意味着 他们是非常不同的排序测试,所以会给出不同的答案
如果你看第一个测试,特别是:
(1,3,CH,NE,C'CAB'),OR,
(1,3,CH,NE,C'CBA')
始终为真,
当字符1,3 任何但 CAB 或 CBA 时,以下 false :
(1,3,CH,EQ,C'CAB'),OR,
(1,3,CH,EQ,C'CBA')
使用布尔逻辑,规则为
not (a and b) = (not A) or (not b)
not (a or b) = (not A) and (not b)
因此,当从省略更改为包含时,您必须撤消 和& 或强>的
OMIT COND=((1,3,CH,EQ,C'ABC',AND,5,3,CH,EQ,C'PQR'),OR,
(1,3,CH,EQ,C'CAB'),OR,
(1,3,CH,EQ,C'CBA'),OR,
(1,3,CH,EQ,C'ABC',AND,5,3,CH,EQ,C'PQR'))
SORT FIELDS=COPY
成为:
INCLUDE COND=((1,3,CH,NE,C'ABC',or,5,3,CH,NE,C'PQR'),and,
(1,3,CH,NE,C'CAB'),and,
(1,3,CH,NE,C'CBA'),and,
(1,3,CH,NE,C'ABC',or,5,3,CH,NE,C'PQR'))
SORT FIELDS=COPY