■  INCLUDE/OMITの指定方法


INCLUDE/OMIT制御ステートメントを使うとデータの抽出をすることができます。
   ・INCLUDEは「特定のレコードだけを出力データ・セットに入れたい場合」
   ・OMITは「特定のレコードだけを含みたくない場合」
です。
比較演算子は下記のとおりです。
EQ等しい
NE等しくない
GTより大きい
GE以上
LTより小さい
LE以下
BOすべてON → EQと同じ '....'指定のは不可
BZすべてOFF
BMどれかがON
BNMすべてがON または すべてがOFF ・・・何の時に使う??
比較する長さの最大長さは、ソートの制限事項をご覧ください。

INCLUDE COND=/OMIT CONDのステートメント、または、OPTIONステートメントのOUTFILE指定の場合の 抽出方法のサンプルです。
指定 意味 備考
(1,2,CH,EQ,C'@@') 1バイト目から2バイトキャラクター@@等しい場合  
(1,2,PD,GT,3) 1バイト目から2バイトパックより大きい場合 パックの場合はクォーテーションは不要です。
(4,1,ZD,EQ,1) 4バイト目から1バイト数字等しい場合 ゾーン数字(キャラクター)の場合はクォーテーションは不要です。
(1,2,BI,EQ,X'5C5C') 1バイト目から2バイト16進数X'5C5C'等しい場合  
(3,1,BI,EQ,B'....11.1') 3バイト目から8ビットビットX'08',X'04',X'01'すべてON場合 この例は、パック数字でマイナス値を抽出する例です。
(20,1,BI,BM,B'11100000') 20バイト目から1バイト16進数X'80',X'40',X'20'どれかがON場合 X'80'かX'40'か'X'20'かX'C0'かX'E0'かX'A0'が抽出されます。

※INCLUDEとOMITを同時に指定することはできません。



その1 (INCLUDE/OMIT COND指定/リテラル比較)

//SYSINDD *  
 SORT FIELDS=…
 INCLUDE COND=(1,3,CH,EQ,C'ABC',AND,
   4,3,PD,EQ,123) ←パックの時、クォーテーションなし
/*    



その1の変形 (INCLUDE/OMIT COND指定/データ比較)

//SYSINDD *  
 SORT FIELDS=…
 INCLUDE COND=(1,3,CH,EQ,
   4,3,CH) ←1〜3バイトと4〜6バイトが等しいレコード
/*    



その2(OUTFILE指定)

//SYSINDD *   
 SORT FIELDS=… 
 OUTFIL FNAMES=SORTOUT, 
  INCLUDE=(1,3,CH,EQ,C'ABC')  
/*     
 ※この方法ではビットによる抜出しも可能です。 
  ex)INCLUDE=(1,1,BI,BO,X'80') 
   
  1バイト目のビットX'80'がONのもの 

どちらも結果は同じですが、SYSPRINTの内容がちょっと違います。
<その1>では、
   INSERT nnn,DELETE nnn
      RECORDS - IN : 0 , OUT : 0
と表示されますが、

<その2>では、
   INSERT 0,DELETE 0
      RECORDS - IN : nnn , OUT : nnn
と表示されます。


その1では「INCLUDE COND=」、その2 では、「INCLUDE=」であることに注意!

※INCLUDEの逆は、OMITです!(EXCLUDEじゃないないですよー)





その3〜ANDとORを混在させる方法

//SORT1 EXEC SORT  
//SORTIN DD *  
   FIRST
1  AAAAA
2  DDDDD
3  EEEEE
4  AAAAA
###END
//SORTOUT DD SYSOUT=*
//SYSIN DD *  
  OPTION COPY  
  INCLUDE COND=((1,1,CH,EQ,C' ',OR,1,80,SS,NE,C'AAA'),AND,
                             1,3,CH,NE,C'###')
/*
※この例は、1バイト目がブランクまたは80桁以内にAAAを含まなく
  かつ、1〜3バイト目が###でないデータを抜き出す例です。
  ANDとORを混在させるにはこのように明示的にカッコで括ります。

     

(出力例)
********************************* データの始め ******
   FIRST                                             
2  DDDDD                                             
3  EEEEE                                             
********************************* データの終り ******
 


BEFORE PAGE

TOP PAGE