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

3.2.14 選択フィールドオプション(-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 の記述形式を以下に示します。

注意

  • オプション引数で自己規定値を指定する場合の記述方法は使用するシェルにより異なります。代表的なシェルにおける記述例を以下に示します。なお、アーギュメントファイルオプション(-a)のアーギュメントファイルに記述する場合は、Bourneシェルの場合と同じ記述方法になります。

    • Bourneシェルの場合

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

        例) 自己規定値として文字列「ABC」を指定する場合
        -p "0.3asc.eq.'ABC'"
      • オプション引数でダブルクォーテーション( " )を含んだ自己規定値の文字列を指定する場合は、ダブルクォーテーション( " )の前に円マーク(バックスラッシュ)を指定します。$、¥、`など、シェルにより特別な意味を持つ文字も同様です。

        例) 自己規定値として文字列「"ABC"」を指定する場合
        -p "0.5asc.eq.'¥"ABC¥"'"
      • オプション引数でクォーテーション( ' )を含んだ自己規定値の文字列を指定する場合は、クォーテーション( ' )を2つ続けて指定します。

        例) 自己規定値として文字列「'ABC'」を指定する場合
        -p "0.5asc.eq.'''ABC'''"
    • Cシェルの場合

      • オプション引数で自己規定値の文字列を指定する場合は、文字列の前後のクォーテーション( ' )の前に円マーク(バックスラッシュ)を指定します。

        例) 自己規定値として文字列「ABC」を指定する場合
        -p 0.3asc.eq.¥'ABC¥'
      • オプション引数でダブルクォーテーション( " )を含んだ自己規定値の文字列を指定する場合は、ダブルクォーテーション( " )の前に円マーク(バックスラッシュ)を指定します。$、&、(、)、|、¥、`、{、}、;、*、<、>、?、空白など、シェルにより特別な意味を持つ文字も同様です。

        例) 自己規定値として文字列「"ABC"」を指定する場合
        -p 0.5asc.eq.¥'¥"ABC¥"¥'
      • オプション引数でクォーテーション( ' )を含んだ自己規定値の文字列を指定する場合は、クォーテーション( ' )の前に円マーク(バックスラッシュ)を付け、2つ続けて指定します。

        例) 自己規定値として文字列「'ABC'」を指定する場合
        -p 0.5asc.eq.¥'¥'¥'ABC¥'¥'¥'
  • 自己規定値の10進数を指定する場合は、符号を指定できます。

  • 自己規定値は、被比較フィールドのデータ形式に合わせてから比較します。

  • テキストファイル固定フィールド指定の場合は、自己規定値にレコード分離文字を含むことはできません。

  • テキストファイル浮動フィールド指定の場合は、自己規定値にフィールド分離文字列、またはレコード分離文字を含むことはできません。

  • テキストファイルCSV形式、およびテキストファイルTSV形式の場合、自己規定値にフィールドを囲むダブルクォーテーション( " )を指定する必要はありません。

  • 固定小数点2進数、符号なし固定小数点2進数、8086形式固定小数点2進数、8086形式符号なし固定小数点2進数、システム依存形式固定小数点2進数、システム依存形式符号なしの自己規定値を10進数で指定する場合、その値は以下の範囲になります。

    データ形式

    指定可能な値

    符号ありのデータ形式

    -2147483648 ~ 2147483647

    符号なしのデータ形式

    0 ~ 4294967295

typ

被比較フィールドと比較フィールドのデータ形式を指定します。
指定可能なデータ形式については、被比較フィールドと比較フィールドに指定可能なデータ形式を参照してください。

注意

  • 被比較フィールドと比較フィールドのデータ形式が異なるときは、被比較フィールドのデータ形式に合わせてから比較します。

  • 被比較フィールドのデータ形式の種類が文字の場合、被比較フィールドと比較フィールドの短い方の長さで比較します。

  • 比較フィールドのデータ形式の種類が数値、または数字の場合、被比較フィールドと比較フィールドの短い方を長い方の長さに合わせて比較します。

  • ASCIIコードは、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がASCIIコード系の場合に指定できます。

  • EBCDICコードは、入力コード系オプション(-q)がEBCDICコード系の場合に指定できます。

  • EUCファイルコード、EUC2バイトプロセスコード、およびEUC4バイトプロセスコードは、入力コード系オプション(-q)がASCIIコード系で、環境変数LANGがC、またはEUCコードのlocaleの場合に指定できます。

  • Unicode UCS-2形式は、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がUnicode系(UCS-2形式)の場合に指定できます。どちらの場合も、環境変数LANGがC、またはUTF-8のlocaleの場合に指定できます。

  • Unicode UTF-8形式は、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がUnicode系(UTF-8形式)の場合に指定できます。どちらの場合も、環境変数LANGがC、またはUTF-8のlocaleの場合に指定できます。

opt

被比較フィールドの操作を指定します。
指定可能な操作を以下に示します。バイナリファイルの場合は、lが指定できます。テキストファイルの場合は、全ての被比較フィールドの操作が指定できます。複数の操作を指定する場合は、続けて記述します。

opt

意味

b

フィールドの先頭の空白とタブを無視します。

d

空白と英数字だけを比較の対象とします。

i

制御文字コードを無視します。
シングルシフト2(SS2)0x8e、およびシングルシフト3(SS3)0x8fは、ASCIIコード指定の場合は制御文字、EUCコード指定の場合は文字とみなされます。

j

英小文字を英大文字として比較します。

l

環境変数LC_COLLATEで定義した照合順序に並べます。
データ形式がASCIIコード、EUCファイルコード、EUC2バイトプロセスコード、EUC4バイトプロセスコード、またはUnicode UTF-8形式で、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。
nとは排他関係にあります。

n

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

注意

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

cmp

比較演算子を指定します。
以下に比較演算子とその意味を示します。

比較演算子

意味(真の条件)

eq

被比較フィールド = 比較フィールド、または自己規定値

ne

被比較フィールド ≠ 比較フィールド、または自己規定値

gt

被比較フィールド > 比較フィールド、または自己規定値

ge

被比較フィールド ≧ 比較フィールド、または自己規定値

lt

被比較フィールド < 比較フィールド、または自己規定値

le

被比較フィールド ≦ 比較フィールド、または自己規定値

注意

被比較フィールドが、EUCファイルコード、EUC2バイトプロセスコード、およびEUC4バイトプロセスコードの場合は、環境変数LC_COLLATEに従った照合順序で比較します。

記述例

例1) 12バイト目の位置から長さ4バイトの外部10進数のフィールドと32バイト目の位置から長さ4バイトの内部10進数のフィールドが等しいレコードを処理の対象とする場合は、次のように指定します。

-p 11.4zdl.eq.31.4pdl

例2) 12バイト目の位置から長さ4バイトの固定小数点2進数のフィールドが「30」以上のレコードを選択する場合は、次のように指定します。

-p 11.4fbi.ge.d30

例3) 10バイト目の位置から長さ5バイトのASCIIコードのフィールドに文字列「abcde」があるレコードを選択する場合は、次のように指定します。

Bourneシェルの場合
-p "9.5asc.eq.'abcde'"
Cシェルの場合
-p 9.5asc.eq.¥'abcde¥'

例4) 10バイト目の位置から長さ5バイトのASCIIコードのフィールドに文字列「ab"cd」があるレコードを選択する場合は、次のように指定します。

Bourneシェルの場合
-p "9.5asc.eq.'ab¥"cd'"
Cシェルの場合
-p 9.5asc.eq.¥'ab¥"cd¥'

例5) 10バイト目の位置から長さ5バイトのASCIIコードのフィールドに文字列「abc'd」があるレコードを選択する場合は、次のように指定します。

Bourneシェルの場合
-p "9.5asc.eq.'abc''d'"
Cシェルの場合
-p 9.5asc.eq.¥'abc¥'¥'d¥'

例6) 10バイト目の位置から長さ4バイトの外部10進数のフィールドが「-1000」のレコードを選択する場合は、次のように指定します。

-p 9.4zdl.eq.d-1000

例7) 4バイト目の位置から長さ3バイトのASCIIコードのフィールドに文字列「abc」がある、かつ10バイト目の位置から長さ3バイトのASCIIコードのフィールドに文字列「abc」があるレコード、または4バイト目の位置から長さ5バイトのASCIIコードのフィールドに文字列「abcde」があるレコードを選択する場合は、次のように指定します。

Bourneシェルの場合
-p "3.3asc.eq.'abc'","9.3asc.eq.'abc'" -p "3.5asc.eq.'abcde'"
Cシェルの場合
-p 3.3asc.eq.¥'abc¥',9.3asc.eq.¥'abc¥' -p 3.5asc.eq.¥'abcde¥'