ページのトップに戻る
PowerSORT V6.0  ユーザーズガイド

4.2.15 選択フィールドオプション(-p)

レコード選択機能を使用する場合に選択フィールド(選択条件)を指定します。
複数の選択フィールドを指定することもできます。コンマ( , )で区切って複数の選択フィールドを指定した場合は、選択条件の論理積となります。複数の選択フィールドオプションを指定した場合は、選択条件の論理和となります。

記述形式

-p sel-def [ ,sel-def ...]

sel-def の記述形式

sel-def の記述形式には、以下の2つの形式があります。

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 の記述形式を以下に示します。

注意

  • オプション引数で自己規定値の文字列を指定する場合は、オプション引数全体をダブルクォーテーション( " )で囲みます。

  • オプション引数でダブルクォーテーション( " )を含んだ自己規定値の文字列を指定する場合は、ダブルクォーテーション( " )の前に円記号( ¥ )を指定します。

  • オプション引数でクォーテーション( ' )を含んだ自己規定値の文字列を指定する場合は、クォーテーション( ' )を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

符号を含んだ数字の文字列を算術的な値で比較します。
文字列中に数字以外の文字が存在した場合の結果は保証されません。データ形式がASCIIコード、Unicode UCS-2形式、またはUnicode UTF-8形式の場合に指定できます。
wとは排他関係にあります。

w

複数バイトから成る文字が混在していても文字ごとに比較します。
データ形式がASCIIコード、シフトJISコード、Unicode UCS-2形式、またはUnicode UTF-8形式で、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。
nとは排他関係にあります。

注意

被比較フィールド、および比較フィールドのデータ形式に照合順序変更を指定した場合、被比較フィールドの操作は指定できません。

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'"