ページの先頭行へ戻る
PowerSORT Server (32bit) V8.0 ユーザーズガイド
FUJITSU Software

5.3.32 SelCmdStrプロパティ

ソート処理、マージ処理、およびコピー処理の選択フィールドを設定します。

構文

object.SelCmdStr = string

object

オブジェクトへの参照を表すオブジェクト式を指定します。

string

選択フィールドを指定します。

記述形式

pos.len typ opt.cmp. { pos.len typ | slf }
    [{ AND | OR } pos.len typ opt.cmp. { pos.len typ | slf } ...]

pos

選択フィールドの位置を指定します。
レコードの先頭を0として計算します。入力がテキストファイルの場合は、FieldDefinitionプロパティの値に従って、浮動フィールド、または固定フィールドで指定します。テキストファイル以外の場合は、常に固定フィールドとなります。浮動フィールドはフィールド番号を、固定フィールドはカラム位置を指定します。

len

選択フィールドの長さを指定します。
データ形式により指定できる長さに上限があります。指定できる長さについては、1.7.4.3 選択フィールドに指定可能なデータ形式を参照してください。
テキストファイルで浮動フィールドとして処理する場合、指定したフィールド長よりも長いフィールドが現れると、指定したフィールド長で処理されます。逆に指定したフィールド長よりも短いフィールドが現れると、実際のフィールド長で処理されます。
データ形式(typ)に符号なし2進数(bit)を指定する場合は、長さにはマスク値を10進数の1 ~255の範囲で指定してください。この場合、フィールド値とマスク値の論理積がキー値となります。例えば、フィールド値が16進数の8e、マスク値として3を指定した場合、キー値は16進数の02になります。被比較フィールドと比較フィールドには同じマスク値を指定します。

typ

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

opt

選択フィールドの操作を指定します。
この指定はテキストファイルのときに有効です。指定できる操作は、以下のとおりです。

操作

意味

b

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

d

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

i

制御文字コードを無視します。

j

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

n

符号を含んだ数字の文字列を算術的な値で比較します。
文字列中に数字以外の文字が存在した場合の結果は保証されません。

cmp

比較演算子を指定します。
cmpの前後にはピリオド( . )を設定し、空白を入れずに続けて記述します。以下の比較演算子の1つを指定します。

比較演算子

意味(真の条件)

eq

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

ne

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

gt

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

ge

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

lt

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

le

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

slf

自己規定値を指定します。
以下の3つの形式があります。被比較フィールドのデータ形式により、指定できる形式が異なります。詳細は、被比較フィールドと自己規定値に指定可能なデータ形式の組合せを参照してください。

形式

指定方法

文字列

'文字列'

文字列をクォーテーション(')で囲みます。
例) '123'

16進数

x16進数

先頭にxを置き、16進コードを続けます。
例) x313233

10進数

d10進数

先頭にdを置き、10進数を続けます。符号(+、-)を付けることもできます。
例) d123、d+123、d-123

AND | OR

選択フィールドを複数指定する場合の、論理的な関係を指定します。
ANDで結合された選択フィールドは、両方の選択条件を満たすレコードのみが処理対象となります。ORで結合された選択フィールドは、どちらか一方の条件が満たされたレコードが処理対象となります。ANDとORの優先順位は、ANDが高く、ANDが先に評価されます。a AND b OR cの指定では、aとbの条件を同時に満たすか、cの条件を満たすレコードが選択されます。また、選択フィールドでは、括弧を使うことはできません。a AND (b OR c)のような論理式は、a AND b OR a AND cと指定してください。

解説

記述例

  1. 入力レコードの20バイト目から10バイトのASCIIコードと、30バイト目から10バイトのASCIIコードを比較し、等しければ処理の対象レコードとします。

    19.10asc.eq.29.10asc
  2. 入力レコードの20バイト目から4バイトのASCIIコードを、ASCIIコードの文字列'abcd'と比較し、等しくなければ処理の対象レコードとします。

    19.4asc.ne.'abcd'
  3. 入力レコードの12バイト目から4バイトの固定小数点2進数のフィールドが、30以上のレコードを処理の対象レコードとします。

    11.4fbi.ge.d30
  4. 入力レコードの20バイト目から10バイトの内部10進数のフィールドが、123より小さく、かつ、入力レコードの50バイト目から4バイトの外部10進数のフィールドが、-123よりも大きいレコードを処理の対象レコードとします。

    19.10pdl.lt.d123 AND 49.4zdl.gt.d-123