2014-07-25 47 views
1

我得到這兩種排序卡的不同輸出,有人可以告訴我爲什麼嗎?JCL SYNCSORT:OMIT和INCLUDE不可互換?

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 

這基本上是,當不等於INCLUDE,省略EQUAL時。

+0

有東西纏着我。意識到你的第一個和最後一個條件是相同的。可能只是試圖讓它發揮作用而已。所以削減最後一個。 –

回答

5

問題是你還沒有扭轉的和的。這意味着 他們非常不同排序測試,這樣會給出不同的答案

如果你看一下第一個測試,特別是:

  (1,3,CH,NE,C'CAB'),OR, 
      (1,3,CH,NE,C'CBA') 

總是真實,

雖然以下是false當字符1,3是什麼CABCBA

  (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 
+0

噢!非常感謝。現在看起來像一個愚蠢的問題,但我幾乎會相信INCLUDE和OMIT條件以某種方式處理不同! :) – Sterex