■  INCLUDE/OMITの指定方法


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



その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