レコード選択機能を使用する場合に選択フィールド(選択条件)を指定します。
複数の選択フィールドを指定することもできます。コンマ( , )で区切って複数の選択フィールドを指定した場合は、選択条件の論理積となります。複数の選択フィールドオプションを指定した場合は、選択条件の論理和となります。
記述形式
-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進数を指定する場合は、1バイト分のビットを選択するためのマスク値を10進数でlen に指定します。この場合、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つ続けて指定します。
自己規定値の10進数を指定する場合は、符号を指定できます。
自己規定値は、被比較フィールドのデータ形式に合わせてから比較します。
テキストファイル固定フィールド指定の場合は、自己規定値にレコード分離文字を含むことはできません。
テキストファイル浮動フィールド指定の場合は、自己規定値にフィールド分離文字列、またはレコード分離文字を含むことはできません。
テキストファイルCSV形式、およびテキストファイルTSV形式の場合、自己規定値にフィールドを囲むダブルクォーテーション( " )を指定する必要はありません。
固定小数点2進数、符号なし固定小数点2進数、8086形式固定小数点2進数、8086形式符号なし固定小数点2進数、システム依存形式固定小数点2進数、システム依存形式符号なしの自己規定値を10進数で指定する場合、その値は以下の範囲になります。
データ形式 | 指定可能な値 |
---|---|
符号ありのデータ形式 | -2147483648 ~ 2147483647 |
符号なしのデータ形式 | 0 ~ 4294967295 |
typ
被比較フィールドと比較フィールドのデータ形式を指定します。
指定可能なデータ形式については、被比較フィールドと比較フィールドに指定可能なデータ形式を参照してください。
注意
被比較フィールドと比較フィールドのデータ形式が異なるときは、被比較フィールドのデータ形式に合わせてから比較します。
被比較フィールドのデータ形式の種類が文字の場合、被比較フィールドと比較フィールドの短い方の長さで比較します。
比較フィールドのデータ形式の種類が数値、または数字の場合、被比較フィールドと比較フィールドの短い方を長い方の長さに合わせて比較します。
ASCIIコードは、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がASCIIコード系の場合に指定できます。
EBCDICコードは、入力コード系オプション(-q)がEBCDICコード系の場合に指定できます。
シフトJISコードは、入力コード系オプション(-q)がASCIIコード系の場合に指定できます。
Unicode UCS-2形式は、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がUnicode系(UCS-2形式)の場合に指定できます。
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 | 被比較フィールド ≦ 比較フィールド、または自己規定値 |
記述例
例
例1) 12バイト目の位置から長さ4バイトの固定小数点2進数のフィールドが「30」以上のレコードを選択する場合は、次のように指定します。
-p 11.4fbi.ge.d30
例2) 10バイト目の位置から長さ5バイトのASCIIコードのフィールドに文字列「abcde」があるレコードを選択する場合は、次のように指定します。
-p "9.5asc.eq.'abcde'"
例3) 10バイト目の位置から長さ5バイトのASCIIコードのフィールドに文字列「"abcd」があるレコードを選択する場合は、次のように指定します。
-p "9.5asc.eq.'¥"abcd'"
例4) 10バイト目の位置から長さ5バイトのASCIIコードのフィールドに文字列「abc'd」があるレコードを選択する場合は、次のように指定します。
-p "9.5asc.eq.'abc''d'"
例5) 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'"