レコード選択機能を使用する場合に選択フィールド(選択条件)を指定します。
選択フィールドは複数指定することができます。コンマ(,)で区切って複数の選択フィールドを指定した場合は、選択条件の論理積となります。複数の選択フィールドオプション(-p)を指定した場合は、選択条件の論理和となります。
記述形式
-p sel-def [ ,sel-def ...]
sel-def の記述形式
sel-def の記述形式には、以下の2つの形式があります。
sel-def の記述形式1
sel-def の記述形式1では、2つの選択フィールドを比較します。
cmp の左辺は被比較フィールドを、右辺は比較フィールドを示します。
指定した被比較フィールド、または比較フィールドが入力レコードに存在しない場合は、エラーになります。
pos.len typ [ opt ] .cmp.pos.len typ
sel-def の記述形式2
sel-def の記述形式2では、選択フィールドと自己規定値を比較します。
cmp の左辺は被比較フィールドを、右辺は自己規定値を示します。
指定した被比較フィールドが入力レコードに存在しない場合は、エラーになります。
pos.len typ [ opt ] .cmp.self
pos
被比較フィールド、または比較フィールドの位置を指定します。
バイナリファイルとテキストファイル固定フィールド指定の場合は、レコードの先頭を0としたバイト位置を指定します。テキストファイル浮動フィールド指定、テキストファイルCSV形式、およびテキストファイルTSV形式の場合は、0から数えたフィールド番号を指定します。
len
被比較フィールド、または比較フィールドの長さをバイト数で指定します。
テキストファイル浮動フィールド指定、テキストファイルCSV形式、およびテキストファイルTSV形式の場合、指定したフィールド長よりも長いフィールドが現れた場合は、指定したフィールド長で処理します。指定したフィールド長よりも短いフィールドが現れた場合は、実際のフィールド長で処理します。
typ に符号なし2進数を指定する場合、len には1バイト分のビットを選択するためのマスク値を10進数で指定します。このとき、pos の位置にある1バイトのフィールド値とマスク値の論理積がフィールドの値となります。マスク値は、被比較フィールドと比較フィールドに同じ値を指定します。
各データ形式における指定可能な長さについては、被比較フィールドと比較フィールドに指定可能なデータ形式を参照してください。
注意
テキストファイルCSV形式、およびテキストファイルTSV形式の場合、フィールドを囲むダブルクォーテーション(")は、被比較フィールド、または比較フィールドの長さに含みません。また、ダブルクォーテーション(")で囲まれたフィールド内の2つ連続したダブルクォーテーション("")は、1つのダブルクォーテーション(")として長さを計算します。
例) テキストファイルCSV形式における、被比較フィールドと長さ
被比較フィールド 被比較フィールドとして有効な文字 被比較フィールドの長さ ABC ABC 3バイト "ABC" ABC 3バイト "A""B""C" A"B"C 5バイト "A,B,C" A,B,C 5バイト
self
自己規定値を指定します。
self の記述形式を以下に示します。
self の記述形式1
self の記述形式1では、文字を直接指定します。
'文字列 '
self の記述形式2
self の記述形式2では、文字を16進数で指定します。
x16進数
self の記述形式3
self の記述形式3では、数値、または数字を10進数で指定します。
d10進数
注意
オプション引数で自己規定値の文字列を指定する場合は、オプション引数全体をダブルクォーテーション(")で囲みます。
オプション引数でダブルクォーテーション(")を含んだ自己規定値の文字列を指定する場合は、ダブルクォーテーション(")の前に円記号(\)を指定します。
オプション引数でクォーテーション(')を含んだ自己規定値の文字列を指定する場合は、クォーテーション(')を2つ続けて指定します。
自己規定値の文字列を指定する場合、文字列は1文字以上である必要があります。
データ形式がUnicode UTF-32形式の場合、自己規定値の文字列はASCIIコードの範囲内の文字しか指定できません。ASCIIコードの範囲外の文字を指定する場合は、16進数で指定してください。
自己規定値の10進数を指定する場合は、符号を指定できます。
自己規定値は、被比較フィールドのデータ形式に合わせてから比較します。
テキストファイル固定フィールド指定の場合は、自己規定値にレコード分離文字を含むことはできません。
テキストファイル浮動フィールド指定の場合は、自己規定値にフィールド分離文字列、またはレコード分離文字を含むことはできません。
テキストファイルCSV形式、およびテキストファイルTSV形式の場合、自己規定値にフィールドを囲むダブルクォーテーション(")を指定する必要はありません。
データ形式が、固定小数点2進数、符号なし固定小数点2進数、8086形式固定小数点2進数、8086形式符号なし固定小数点2進数、システム依存形式固定小数点2進数、またはシステム依存形式符号なしの場合、自己規定値は16バイトで表現できる値まで指定できます。
typ
被比較フィールドと比較フィールドのデータ形式を指定します。
指定可能なデータ形式については、被比較フィールドと比較フィールドに指定可能なデータ形式を参照してください。
注意
被比較フィールドと比較フィールドのデータ形式が異なるときは、被比較フィールドのデータ形式に合わせてから比較します。
被比較フィールドのデータ形式の種類が文字の場合、被比較フィールドと比較フィールドの短い方の長さで比較します。
比較フィールドのデータ形式の種類が数値、または数字の場合、被比較フィールドと比較フィールドの短い方を長い方の長さに合わせて比較します。
ASCIIコードは、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がASCIIコード系の場合に指定できます。
EBCDICコードは、入力コード系オプション(-q)がEBCDICコード系の場合に指定できます。
シフトJISコードは、入力コード系オプション(-q)がASCIIコード系の場合に指定できます。
Unicode UCS-2形式は、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がUnicode系(UCS-2形式)の場合に指定できます。
Unicode UTF-32形式は、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がUnicode系(UTF-32形式)の場合に指定できます。
Unicode UTF-8形式は、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がUnicode系(UTF-8形式)の場合に指定できます。
opt
被比較フィールドの操作を指定します。
指定可能な操作を以下に示します。バイナリファイルの場合は、wが指定できます。テキストファイルの場合は、全ての被比較フィールドの操作が指定できます。複数の操作を指定する場合は、続けて記述します。
opt | 意味 |
---|---|
b | フィールドの先頭の空白とタブを無視します。 |
d | 空白と英数字だけを比較の対象とします。 |
i | 制御文字コードを無視します。 |
j | 英小文字を英大文字として比較します。 |
n | 符号を含んだ数字の文字列を算術的な値で比較します。 |
w | 複数バイトから成る文字が混在していても文字ごとに比較します。 |
注意
被比較フィールド、および比較フィールドのデータ形式に照合順序変更を指定した場合、被比較フィールドの操作は指定できません。
cmp
比較演算子を指定します。
以下に比較演算子とその意味を示します。
比較演算子 | 意味(真の条件) |
---|---|
eq | 被比較フィールド = 比較フィールド、または自己規定値 |
ne | 被比較フィールド ≠ 比較フィールド、または自己規定値 |
gt | 被比較フィールド > 比較フィールド、または自己規定値 |
ge | 被比較フィールド ≧ 比較フィールド、または自己規定値 |
lt | 被比較フィールド < 比較フィールド、または自己規定値 |
le | 被比較フィールド ≦ 比較フィールド、または自己規定値 |
記述例
例
12バイト目の位置から長さ4バイトの外部10進数のフィールドと32バイト目の位置から長さ4バイトの内部10進数のフィールドが等しいレコードを処理の対象とする場合は、以下のように指定します。
-p 11.4zdl.eq.31.4pdl
12バイト目の位置から長さ4バイトの固定小数点2進数のフィールドが「30」以上のレコードを選択する場合は、以下のように指定します。
-p 11.4fbi.ge.d30
10バイト目の位置から長さ4バイトの外部10進数のフィールドが「-1000」より小さいレコードを選択する場合は、以下のように指定します。
-p 9.4zdl.lt.d-1000
10バイト目の位置から長さ5バイトのASCIIコードのフィールドに文字列「abcde」があるレコードを選択する場合は、以下のように指定します。
-p "9.5asc.eq.'abcde'"
10バイト目の位置から長さ5バイトのASCIIコードのフィールドに文字列「ab"cd」があるレコードを選択する場合は、以下のように指定します。
-p "9.5asc.eq.'ab\"cd'"
10バイト目の位置から長さ5バイトのASCIIコードのフィールドに文字列「abc'd」があるレコードを選択する場合は、以下のように指定します。
-p "9.5asc.eq.'abc''d'"
4バイト目の位置から長さ3バイトのASCIIコードのフィールドに文字列「abc」があり、かつ10バイト目の位置から長さ3バイトのASCIIコードのフィールドに文字列「abc」があるレコード、または4バイト目の位置から長さ5バイトのASCIIコードのフィールドに文字列「abcde」があるレコードを選択する場合は、以下のように指定します。
-p "3.3asc.eq.'abc'","9.3asc.eq.'abc'" -p "3.5asc.eq.'abcde'"