JCL SYNCSORT:OMIT和INCLUDE不可互换?

Ste*_*rex 1 sorting mainframe include jcl syncsort

我为这两种排序卡获得了不同的输出,有人可以告诉我为什么吗?

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

基本上,这是NOT-EQUAL时的INCLUDE和EQUAL时的OMIT.

Bru*_*tin 5

问题是你有没有逆转的和的.这意味着它们是非常不同的排序测试,因此会给出不同的答案

如果你看第一个测试,特别是:

          (1,3,CH,NE,C'CAB'),OR,
          (1,3,CH,NE,C'CBA')
Run Code Online (Sandbox Code Playgroud)

永远真实,

而下面是假的时,字符1,3是什么,但CABCBA:

          (1,3,CH,EQ,C'CAB'),OR,
          (1,3,CH,EQ,C'CBA')
Run Code Online (Sandbox Code Playgroud)

使用布尔逻辑,规则是

 not (a and b) = (not A) or (not b)
 not (a or b) = (not A) and (not b)
Run Code Online (Sandbox Code Playgroud)

因此,从不断变化的,当省略包括,必须扭转

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
Run Code Online (Sandbox Code Playgroud)

变为:

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
Run Code Online (Sandbox Code Playgroud)