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 field-name △ comp △ cond-value
比較項目と条件値を比較する条件式を定義する。
- condition-expressionオペランド形式2
cond-attribute+pos−len △ comp △ cond-attribute+pos−len cond-attribute+pos−len △ comp △ field-name field-name △ comp △ cond-attribute+pos−len field-name △comp △field-name
比較項目と比較項目を比較する条件式を定義する。
-
cond-attribute+pos−lenは間に空白やタブを置かないでつなげて指定します。
-
comp(比較演算子)の前後は,1個以上の空白またはタブで区切って指定します。
-
cond-attribute+pos−lenとfield-nameを混在させて定義することができます。
-
{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の属性
項目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
-
-
比較項目の開始バイト位置を数字で指定します。指定できる桁数は,レコード長の上限値をバイト単位に変換した値の桁数以内です。
-
-locatajstパラメタの指定有無によってレコード先頭の解釈が異なります。
-
テキストファイルに指定できる比較項目の開始バイト位置(pos)の範囲は,UNIXの64ビット版(環境変数「EXSORT64MAXRECLEN」の指定がない,または無効の場合),UNIXの32ビット版,およびWindows版の場合,入力データのエンコード種別や改行文字の長さによって異なります。UNIXの64ビット版で環境変数「EXSORT64MAXRECLEN」の指定がある場合,入力データのエンコード種別よって異なりますが,改行文字の長さによって異なることはありません。
比較項目の開始バイト位置(pos)に指定できる値の範囲を次の表に示します。
表5‒17 posに指定できる値の範囲(Windows版,UNIXの32ビット版,UNIXの64ビット版で環境変数「EXSORT64MAXRECLEN」の指定がない,または指定が無効の場合) ファイル編成
-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)
表5‒18 posに指定できる値の範囲(UNIXの64ビット版で環境変数「EXSORT64MAXRECLEN」の指定がある場合) ファイル編成
-locatajstパラメタ
指定あり
指定なし
固定長順編成ファイル
1〜レコード長の上限値※1
0〜レコード長の上限値※1−1
可変長順編成ファイル
5〜レコード長の上限値※1+4※3
テキストファイル※2
ASCII
SJIS
EUC-JP
EUC-HJ
UTF-8
1〜レコード長の上限値※1
UCS-2LE
UCS-2BE
UTF-16LE
UTF-16BE
1〜レコード長の上限値※1−1(2の倍数+1)※4
0〜レコード長の上限値※1−2(2の倍数)※4
UCS-4LE
UCS-4BE
UTF-32LE
UTF-32BE
1〜レコード長の上限値※1−3(4の倍数+1)※5
0〜レコード長の上限値※1−4(4の倍数)※5
-
- −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
-
- field-name
-
比較項目を,入力ファイルパラメタのfieldオペランドで定義したフィールド名で指定します。
-
cond-attributeと同じ属性を定義したフィールド名だけ指定できます。
-
ファイル編成が可変長順編成ファイルの場合,field-nameは指定できません。
-
- 比較項目の範囲
-
比較項目は,次の範囲内で指定してください。
入力ファイル種別
比較項目の範囲
固定長ファイル
レコード長
可変長ファイル
最小レコード長
テキストファイル
最小レコード長
- 比較項目の扱い
-
比較項目同士の比較で,項目の長さが等しくない場合,短い方の比較項目に埋め字を仮定して,長い方の比較項目と同じ長さにします。
文字・日付属性の場合は空白を,数値属性の場合は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
−
表5‒19 固定小数点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‒20 符号なし2進数(m)に対する10進数条件値の指定範囲 長さ
最小値
最大値
2
0
65,535
4
0
4,294,967,295
8
0
999,999,999,999,999,999
- 条件値の属性
-
指定できる条件値の属性は,比較項目の属性によって異なります。
比較項目の形式
条件値
文字
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コマンドに指定する場合は,選択条件式全体をダブルクォーテーションで囲んでください。
- 注意事項
-
-
比較項目に,小数桁を含む外部10進数属性は指定できません。指定した場合,KBLS1308-Eエラーとなります。
-
- 例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'
-