ソートマージ

[目次][用語][索引][前へ][次へ]

5.8.16 {include|omit}オペランド

意味
入力レコードの選択条件式を指定します。
includeオペランド:
条件を満たすレコードを選択します。
omitオペランド:
条件を満たさないレコードを選択します。

形式
{include|omit}="condition-expression [△{AND | OR}△condition-expression … ]"
レコードを選択するための選択条件式を指定します。
複数の条件式(condition-expression)を丸括弧「()」で囲むことによって,条件式の優先順位を変更することができます。
  • コマンドに指定する場合は,選択条件式全体をダブルクォーテーションで囲みます。
  • exsortパラメタファイルに指定する場合は,選択条件式をダブルクォーテーションで囲んではなりません。
  • 指定できる選択条件式の個数と比較項目の合計長を,環境ファイル「EXS_SELNUMMAX」で指定できます。なお,比較項目の合計長は,入力データのエンコードによって異なります。環境ファイル「EXS_SELNUMMAX」については「15.1.1(16) EXS_SELNUMMAX」を参照してください。
  • 使用できる括弧は,ネストレベル0〜24です。

指定値
condition-expressionの形式を次に示します。
condition-expressionオペランド形式1
cond-attribute+pos−len △ comp △ cond-value
比較項目と条件値を比較する条件式を定義する。
condition-expressionオペランド形式2
cond-attribute+pos−len △ comp △ cond-attribute+pos−len
比較項目と比較項目を比較する条件式を定義する。
  • cond-attributeposlenは間に空白やタブを置かないでつなげて指定します。
  • comp(比較演算子)の前後は,1個以上の空白またはタブで区切って指定します。
  • {AND|OR}(論理演算子)の前後は,1個以上の空白またはタブで区切って指定します。
condition-expressionに指定するそれぞれの値について次に示します。
cond-attribute
比較項目のデータ形式を指定します。
cond-attribute 意 味
j 比較項目が文字(JIS8単位コード※1)であることを指定する。
c 比較項目が文字であることを指定する。※2
n 比較項目が符号付き固定小数点2進数であることを指定する。※8
m 比較項目が符号なし2進数であることを指定する。※8
p 比較項目が内部10進数であることを指定する。
z 比較項目が外部10進数であることを指定する。※4
x 比較項目が左符号付き外部10進数であることを指定する。※4
s 比較項目が右分離符号付き外部10進数であることを指定する。※4
t 比較項目が左分離符号付き外部10進数であることを指定する。※4
g 比較項目が日付(英数字)であることを指定する。※4
d 比較項目が文字(左分離符号付き数字)であることを指定する。※4
w 比較項目が文字(ワイド文字※3,※5)であることを指定する(テキストファイルだけ指定する)。
u 比較項目が文字(マルチバイト文字※5,※6,※7)であることを指定する(テキストファイルだけ指定できる)。
v 比較項目が文字(マルチバイト文字※5,※6,※7)であることを指定する(UnicodeのIVSに対応した属性で,テキストファイルだけ指定できる)。
注※1
ASCIIコード(0x00〜0x7F)を含む,JIS8単位コード(0x00〜0xFF)を意味します。
入力データに日本語などのマルチバイト文字が含まれている場合,マルチバイト文字ではなく,シングルバイト文字として扱います。
EBCDIKコードの体系に従って比較項目を比較する「EBCDIKコード比較オプション機能」を使用できます。「EBCDIKコード比較オプション機能」については,「5.5.3 EBCDIKコード比較オプション(EBCJ,EBCEオプション)」を参照してください。
 
注※2
入力データのエンコードの種別には対応しません。入力データの文字を構成するバイト長を意識しないで,常に1バイト長のシングルバイト文字として扱います。ASCIIコードやJIS8単位コード向けの属性です。
 
注※3
入力データのエンコードに「UCS-2LE」,「UCS-2BE」,「UTF-16LE」,「UTF-16BE」または「UNICODE(入力ファイルのUnicodeシグニチャ(BOM)の形式がUTF-16LEまたはUTF-16BE)」を指定した場合,1文字2バイトのワイド文字として扱います。また,サロゲートペア文字は2文字として扱います。
入力データのエンコードに「UCS-4LE」,「UCS-4BE」,「UTF-32LE」,「UTF-32BE」または「UNICODE(入力ファイルのUnicodeシグニチャ(BOM)の形式がUTF-32LEまたはUTF-32BE)」を指定した場合,1文字4バイトのワイド文字として扱います。
文字のエンコードの指定方法については,「5.8.13 codetypeオペランド」を参照してください。なお,属性コード「w」は固定長順編成ファイルと可変長順編成ファイルの入力ファイルに対して指定できません。指定した場合はKBLS1303-Eメッセージが表示されて,エラーになります。
 
注※4
入力データのエンコードで解釈します。
「ASCII」,「SJIS」,「EUC-JP」,「EUC-HJ」または「UTF-8」を指定した場合は1バイト,「UCS-2LE」,「UCS-2BE」,「UTF-16LE」または「UTF-16BE」を指定した場合は2バイト,「UCS-4LE」,「UCS-4BE」,「UTF-32LE」または「UTF-32BE」を指定した場合は4バイトの長さで文字を扱います。
文字のエンコードの指定方法については,「5.8.13 codetypeオペランド」を参照してください。
 
注※5
比較項目範囲の入力データがすべてASCII対応コード(英数字)である場合は,属性コード「c」を指定した方が処理効率が向上します。属性コード「c」は1文字1バイトで扱いますので,エンコードに対応したバイト長を指定してください。
ASCII対応コードについては,「付録H Unicode操作文字コード一覧(SORT EE)」を参照してください。
1文字の長さについては,「付録I.2(1) 文字の長さ」を参照してください。
文字属性コードの特徴については,「付録I.2(2) 文字属性コードの特徴」を参照してください。
 
注※6
属性コード「u」と「v」は,入力データのエンコードで解釈します。1文字の長さは可変長として扱います。
文字のエンコードの指定方法については,「5.8.13 codetypeオペランド」を参照してください。また,マルチバイト文字の扱いについては,「付録I.2 文字列データの扱い」を参照してください。
 
注※7
入力データのエンコードに「UTF-8」,「UTF-16LE」,「UTF-16BE」,「UCS-4LE」,「UCS-4BE」,「UTF-32LE」,「UTF-32BE」または「UNICODE(入力ファイルのUnicodeシグニチャ(BOM)の形式がUTF-16LE,UTF-16BE,UTF-32LEまたはUTF-32BE)」のどれかを指定した場合,UnicodeのIVS(Ideographic Variation Sequence)を次のとおり解釈します。UnicodeのIVSについては,「付録I.2(6) IVS対応」を参照してください。
  • 属性コード「u」は,UCSコードが一致する文字であれば,UnicodeのIVSの異体字であっても同じ文字として扱います。
  • 属性コード「v」は,UCSコードが一致する文字であっても,VS(Variation Selector,異体字セレクタ)が異なる場合は,異なる文字として扱います。
 
注※8
属性コード「n」,「m」および「a」は,数値として比較するため,バイトオーダーが関係します。バイトオーダーについては,「2.6 エンディアンオプション機能」および「5.5.4 入力ファイルのエンディアンオプション(BIG|INPBIG|INPLTLオプション)」を参照してください。
  • 符号付き固定小数点数「n」:2バイト(signed short int),4バイト(signed int),8バイト(signed long long int)
  • 符号なし2進数「m」,「a」:2バイト(unsigned short int),4バイト(unsigned int),8バイト(unsigned long long int)
比較項目同士の組み合わせ
比較項目同士の比較ができる属性の組み合わせは次のとおりです。
項目1の属性 項目2の属性
j c n m p z x s t g d w u v
j
c
n
m
p
z
x
s
t
g
d
w
u
v

(凡例)

○:比較できる組み合わせ。

−:比較できない組み合わせ。


+pos
比較項目の開始バイト位置を5桁以内の数字で指定します。
-locatajstパラメタの指定有無によってレコード先頭の解釈が異なります。また,テキストファイルの場合は,入力データのエンコードによって指定範囲が異なります。開始バイト位置(pos)に指定できる値の範囲は次のとおりです。
ファイル編成 -locatajstパラメタ
指定あり 指定なし
固定長順編成ファイル 1〜65,535 0〜65,534
可変長順編成ファイル 5〜65,539※1
テキストファイル※2 改行文字
「LF」
ASCII
SJIS
EUC-JP
EUC-HJ
UTF-8
1〜65,535
UCS-2LE
UCS-2BE
UTF-16LE
UTF-16BE
1〜65,533
(2の倍数+1※3
0〜65,532
(2の倍数※3
UCS-4LE
UCS-4BE
UTF-32LE
UTF-32BE
1〜65,529
(4の倍数+1※4
0〜65,528
(4の倍数※4
改行文字
「CRLF」
ASCII
SJIS
EUC-JP
EUC-HJ
UTF-8
1〜65,534 0〜65,533
UCS-2LE
UCS-2BE
UTF-16LE
UTF-16BE
1〜65,531
(2の倍数+1※3
0〜65,530
(2の倍数※3
UCS-4LE
UCS-4BE
UTF-32LE
UTF-32BE
1〜65,525
(4の倍数+1※4
0〜65,524
(4の倍数※4
注※1
レコードの前の4バイト領域(RDW:レコードヘッダ)の先頭が1となります。
 
注※2
入力レコードの改行文字については,「5.8.7 recsepaオペランド」を参照してください。また,入力データのエンコードについては,「5.8.13 codetypeオペランド」を参照してください。
 
注※3
2の倍数(-locatajstパラメタを同時に指定している場合は「2の倍数+1」)以外を指定すると,KBLS1306-Eメッセージが表示されてエラーになります。
 
注※4
4の倍数(-locatajstパラメタを同時に指定している場合は「4の倍数+1」)以外を指定すると,KBLS1306-Eメッセージが表示されてエラーになります。
−len
比較項目の長さを次の範囲で指定します。
cond-attribute 指定できる長さ(単位)
j,c,w※1
  • 入力データのエンコードが「ASCII」,「SJIS」,「EUC-JP」,「EUC-HJ」または「UTF-8」の場合
    1〜4,096(バイト)
  • 入力データのエンコードが「UCS-2LE」,「UCS-2BE」,「UTF-16LE」または「UTF-16BE」の場合※2
    2〜8,192(バイト)
  • 入力データのエンコードが「UCS-4LE」,「UCS-4BE」,「UTF-32LE」または「UTF-32BE」の場合※3
    4〜16,384(バイト)
u,v 1〜4,096(文字数)※6
m,n 2,4,または8(バイト)
p 1〜10(バイト)
z,x 1〜18(桁)※4
s,t 2〜19(桁)※4
g 2〜8(桁)※5
d 1〜256(桁)※4
注※1
入力データのエンコードの種別によって,マルチバイト文字の長さは異なります。詳細は「付録I.2 文字列データの扱い」を参照してください。
 
注※2
入力データのエンコードに「UCS-2LE」,「UCS-2BE」,「UTF-16LE」,「UTF-16BE」または「UNICODE(入力ファイルのUnicodeシグニチャ(BOM)の形式がUTF-16LEまたはUTF-16BE)」を指定した場合,長さには「2の倍数」を指定してください。
2の倍数以外を指定すると,KBLS1308-Eメッセージが表示されてエラーになります。
 
注※3
入力データのエンコードに「UCS-4LE」,「UCS-4BE」,「UTF-32LE」,「UTF-32BE」または「UNICODE(入力ファイルのUnicodeシグニチャ(BOM)の形式がUTF-32LEまたはUTF-32BE)」を指定した場合,長さには「4の倍数」を指定してください。
4の倍数以外を指定すると,KBLS1308-Eメッセージが表示されてエラーになります。
 
注※4
「バイト長」ではなく数値の「桁数」を指定してください。「UCS-2」,「UCS-4」,「UTF-16」および「UTF-32」の数値データの扱いについては,「付録I.3 数値データの扱い」を参照してください。
 
注※5
「バイト長」ではなく日付の「桁数」を指定してください。「UCS-2」,「UCS-4」,「UTF-16」および「UTF-32」の日付データの扱いについて「付録I.4 日付データの扱い」を参照してください。
 
注※6
「バイト長」ではなく「文字数」を指定してください。UTF-16のサロゲートペア文字は1文字として扱います。また,UnicodeのVS(Variation Selector,異体字セレクタ)は文字数に数えません。マルチバイト文字の扱いについては,「付録I.2 文字列データの扱い」を参照してください。
比較項目の範囲
比較項目は,次の範囲内で指定してください。
入力ファイル種別 比較項目の範囲
固定長ファイル レコード長
可変長ファイル 最小レコード長
テキストファイル 最小レコード長
比較項目の扱い
比較項目同士の比較で,項目の長さが等しくない場合,短い方の比較項目に埋め字を仮定して,長い方の比較項目と同じ長さにします。
文字・日付属性の場合は空白を,数値属性の場合はNULL値または数字「0」を仮定します。
埋め字の位置は,文字・日付属性の場合は下位から,数値属性の場合は上位からとなります。
cond-attribute 埋め字の位置 埋め字データ
j,c 下位 空白
w,u,v 下位 空白
n,m 上位 NULL値(0x00)
p 上位 NULL値(0x00)
z,x,s,t 上位 数字「0」
g 下位 空白
d 下位 空白
注※
入力データのエンコードが「UCS-2LE」,「UCS-2BE」,「UTF-16LE」または「UTF-16BE」である場合は,「UCS-2」の文字コードで埋め字します。
入力データのエンコードが「UCS-4LE」,「UCS-4BE」,「UTF-32LE」または「UTF-32BE」である場合は,「UCS-4」の文字コードで埋め字します。
埋め字の文字コードについては,「表H-3 ASCII対応予約文字一覧」を参照してください。
例1(入力データのエンコードは「SJIS」)
[図データ]
例2(入力データのエンコードは「UCS-2LE」)
[図データ]
例3(入力データのエンコードは「UCS-4LE」)
[図データ]
 
comp
比較演算子を指定します。
comp 意 味
左辺=右辺
!= 左辺≠右辺
左辺>右辺
>= 左辺≧右辺
左辺<右辺
<= 左辺≦右辺
cond-value
比較の条件となる値(条件値)を指定します。
cond-value 意味 入力データのエンコード 条件値の桁 備考
最小 最大
C'文字列' 文字条件値 1 4,096
S'文字列'※4 文字条件値 1 4,096 文字条件値を環境変数で指定する場合に使用します。
N'10進数'※4 10進数条件値※1
(n,m,p,z,x,s,t)
1 19 符号なしの場合は18桁です。比較項目が符号なし2進数(m)の場合は,符号は付けてはなりません。
10進数条件値※1(d) 1 256 符号を指定する場合,符号を含めて256桁までです。
X'16進数'※4 16進数条件値※2 ASCII
SJIS
EUC-JP
EUC-HJ※5
UTF-8
2 8,192 指定できるのは偶数桁のデータだけです。
2桁で1バイトを表します。
UCS-2LE
UCS-2BE
UTF-16LE
UTF-16BE
4 16,384
UCS-4LE
UCS-4BE
UTF-32LE
UTF-32BE
8 32,768
D'日付'※4 日付条件値※3 2 8

(凡例)
−:なし

注※1 
10進数条件値として指定できるのは「0〜9」,「+」および「−」だけです。符号は先頭に付けます。ただし,比較項目が符号なし2進数(m)の場合は,符号を付けてはなりません。
2進数属性に対する条件値として指定できる範囲を,表5-13表5-14に示します。

表5-13 固定小数点2進数(n)に対する10進数条件値の指定範囲

長さ 最小値 最大値
2 -32,768 32,767
4 -2,147,483,648 2,147,483,647
8 -999,999,999,999,999,999 999,999,999,999,999,999

表5-14 符号なし2進数(m)に対する10進数条件値の指定範囲

長さ 最小値 最大値
2 0 65,535
4 0 4,294,967,295
8 0 999,999,999,999,999,999

注※2 
16進数条件値として指定できるのは「0〜9」および「A〜F」だけです。

注※3 
先頭の1文字目に指定できるのは空白または「0〜9」の文字列です。
2文字目に指定できるのは「0〜9」の文字列です。
1文字の空白を指定した場合,数字の「00」を設定します。
1文字の「0〜9」を指定した場合,先頭の1文字目には数字の「0」を設定します。

注※4
SORT EE 08-50以降,これらのcond-valueの指定値は,環境変数を使ってexsortパラメタファイルに記述できます。環境変数名で指定する場合は「%環境変数名%」と%で囲んで記述します。詳細は「4.4.5 環境変数」を参照してください。

注※5
入力データのエンコードが「EUC-HJ」の場合,マルチバイト文字の条件値は「X'16進数'」形式で指定してください。

条件値の属性
指定できる条件値の属性は,比較項目の属性によって異なります。
比較項目の形式 条件値
文字 10進 日付 16進
j
c
n
m
p
z
x
s
t
g
d
w
u
v
(凡例)
○:指定できます。
−:指定できません。

ワイド文字およびマルチバイト文字に対する条件値の指定のしかた
属性コード「w」,「u」および「v」に対する条件値の指定のしかたについて説明します。
  • 入力データのエンコードのエンディアンを合わせて指定してください。例えば,全角ひらがな「あ(U+3042)い(U+3044)」を「UCS-2LE」または「UTF-16LE」で指定する場合は,「X'42304430'」,「UCS-2BE」または「UTF-16BE」で指定する場合は「X'30423044'」と指定します。
  • Unicodeの入力データに対して属性コード「u」を指定した場合,UCSコードだけを比較します。UnicodeのIVS(Ideographic Variation Sequence)の異体字は区別しません。例えば,「[図データ](U+845B;U+E0102)」の異体字を文字条件値に指定した場合,VS(Variation Selector,異体字セレクタ)の「U+E0102」は無視し,UCSコードの「U+845B」で比較します。「include=u+0-1 = C'[図データ]'」の指定では,「[図データ](U+845B;VSなし)」,「[図データ](U+845B;U+E0102)」,「[図データ](U+845B;U+E0103)」はすべて同じ文字として選択されます。
  • Unicodeの入力データに対して属性コード「v」を指定した場合,UnicodeのIVS(Ideographic Variation Sequence)の異体字を区別します。例えば,「[図データ](U+845B;U+E0102)」の異体字を文字条件値に指定した場合,UCSコードとVSの両方で比較します。「include=v+0-1 = C'[図データ]'」の指定では,「[図データ](U+845B;U+E0102)」を選択し,「[図データ](U+845B;VSなし)」と「[図データ](U+845B;U+E0103)」は選択されません。
  • エディタなどの制約によって,Unicodeのサロゲートペア文字,異体字,またはUnicode以外の第三水準・第四水準・外字などの文字を文字条件値「C'文字列'」に直接記述できない場合は,16進数条件値「X'16進数'」で文字コードを指定してください。
  • Unicodeのサロゲートペア文字,およびIVSについての詳細は,「付録I.2(6) IVS対応」を参照してください。

条件値の扱い
条件値の長さが指定した比較項目より短い場合,不足分の埋め字を仮定し,比較項目と同じ長さの条件値と見なして比較します。
文字・日付条件値の場合は埋め字として空白が仮定されます。また,10進・16進数条件値の場合は埋め字として数字「0」が仮定されます。
条件値の長さが指定した比較項目より長い場合,桁あふれ部分を切り捨て,比較項目と同じ長さの条件値と見なして比較項目と同じ長さにします。
10進数条件値の埋め字・切り捨て位置は上位からとなります。10進数条件値以外は,下位からとなります。
条件値 埋め字・切り捨て位置 埋め字データ
文字条件値 下位 空白
10進数条件値 上位 数字「0」
16進数条件値 下位 数字「00」
日付条件値 下位 空白

例1 比較項目の長さ > 条件値の長さ
条件値の種類 選択条件式の指定 桁そろえ後の条件値 解説
比較項目 条件値
文字条件値 c+0-4 C'ab' C'ab△△'

入力データのエンコードに「SJIS」を指定した場合
2文字分の空白(0x20 0x20)を下位に仮定した条件値と見なします。
w+0-8 C'ab' C'ab△△'

入力データのエンコードに「UCS-2LE」を指定した場合
2文字分の空白(0x2000 0x2000)を下位に仮定した条件値と見なします。
10進数条件値 z+0-4 N'12' N'0012' 2桁分の数字「00」を上位に仮定した条件値と見なします。
16進数条件値 j+0-4 X'3132' X'31320000'

入力データのエンコードに「SJIS」を指定した場合
2桁分の数字「0000」を下位に仮定した条件値と見なします。
w+0-8 X'31003200' X'3100320000000000'

入力データのエンコードに「UCS-2LE」を指定した場合
2桁分の数字「00000000」を下位に仮定した条件値と見なします。
日付条件値 g+0-4 D'12' D'12△△'

入力データのエンコードに「UCS-2LE」を指定した場合
2桁分の空白(0x2000 0x2000)を下位に仮定した条件値と見なします。
(凡例)
 :埋め字を仮定する部分です。
△:空白を示します。

例2 比較項目の長さ < 条件値の長さ
条件値の種類 選択条件式の指定 桁そろえ後の条件値 解説
比較項目 条件値
文字条件値 c+0-4 C'abcdef' C'abcd'

入力データのエンコードに「SJIS」を指定した場合
下位の桁あふれ部分を切り捨てます。
w+0-16 C'abcdef' C'abcd'

入力データのエンコードに「UCS-4LE」を指定した場合
下位の桁あふれ部分を切り捨てます。
10進数条件値 z+0-4 N'123456' N'3456' 上位の桁あふれ部分を切り捨てます。
16進数条件値 j+0-2 X'313233' X'3132'

入力データのエンコードに「SJIS」を指定した場合)
下位の桁あふれ部分を切り捨てます。
w+0-8 X'3100000032000000
33000000'
X'3100000032000000'

入力データのエンコードに「UCS-4LE」を指定した場合
下位の桁あふれ部分を切り捨てます。
日付条件値 g+0-5 D'07/10/03' D'07/10'

入力データのエンコードに「UCS-4LE」を指定した場合
下位の桁あふれ部分を切り捨てます。
(凡例)
 :切り捨て部分です。

{ AND|OR }
複数の条件式を指定する場合,論理演算子「AND」(論理積)または「OR」(論理和)を指定して条件式を結合します。「AND」と「OR」が混在した場合は,「AND」を判定後,「OR」を判定します。
また,条件式を括弧で囲むことによって,論理演算の順序を変えることができます。括弧の入れ子は24レベルまで指定できます。条件式と括弧の間に空白またはタブを置くことができます。論理演算子(ANDまたはOR)と括弧の間には,空白またはタブが必要です。
指定例はexsortパラメタファイルに指定した場合です。exsortコマンドに指定する場合は,選択条件式全体をダブルクォーテーションで囲んでください。

例1
次のうちどちらかの条件を満たしたレコードが選択されます。
  • 「z+10-2」は30以上かつ「z+20-4」は1000
  • 「z+10-2」は10以下かつ「z+20-4」は2000
    include=z+10-2 >= N'30' AND z+20-4 = N'1000'
            OR
            z+10-2 <= N'10' AND z+20-4 = N'2000'

例2
次の条件をすべて満たしたレコードが選択されます。
  • 「z+10-2」は30以上または「z+10-2」は10以下
  • 「z+20-4」は1000または「z+20-4」は2000
括弧指定あり
1回のコマンドで選択することができます。
include=(z+10-2 >= N'30' OR z+10-2 <= N'10')
        AND
        (z+20-4 = N'1000' OR z+20-4 = N'2000')
括弧指定なし
括弧を指定しない場合は2回のコマンドに分けて選択します。
(1回目)
include=z+10-2 >= N'30' OR z+10-2 <= N'10'
(2回目)
include=z+20-4 = N'1000' OR z+20-4 = N'2000'