ソート処理、マージ処理、およびコピー処理の選択フィールドを設定します。
構文
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
選択フィールドの長さを指定します。
データ形式により指定できる長さに上限があります。指定できる長さについては、2.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つの形式があります。被比較フィールドのデータ形式により、指定できる形式が異なります。詳細は、被比較フィールドと自己規定値に指定可能なデータ形式の組合せを参照してください。
形式 | 指定方法 | |
---|---|---|
文字列 | '文字列' | 文字列をクォーテーション( ' )で囲みます。 |
16進数 | x16進数 | 先頭にxを置き、16進コードを続けます。 |
10進数 | d10進数 | 先頭にdを置き、10進数を続けます。符号(+、-)を付けることもできます。 |
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と指定してください。
解説
レコード選択機能により、ソート処理、マージ処理、またはコピー処理の対象とするレコードを選択できます。
選択フィールドの指定方法には、入力レコードのフィールド同士を比較する方法と、入力レコードのフィールドと自己規定値を比較する方法があります。また、複数の選択条件と論理演算子を使用して、複雑な論理式を指定することができます。
入力レコードのフィールドを指定する場合は、入力レコードの外を指定しないように位置と長さを指定してください。テキストファイル、または可変長ファイルの場合は、ファイル内の最小レコード長以下となるよう、位置と長さを指定します。
複数の選択フィールドを指定する場合は、各選択フィールドの関係を論理演算子AND、またはORで指定します。
記述例
例
例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