WHERE

この項目の指定はオプションです。転送されるレコードが満たすべき条件を 1 つまたは複数指定することができます。

要約レコードを転送するには、 どのレコードをグループ化するかをこの項目で指示します。この項目を使用して、あるグループに属するためにレコードが 満たさなければならない 1 つまたは複数の条件を指定することができます。WHERE を指定しなかった場合は、すべてのレコードがグループ化されます。

条件には、該当のファイル・メンバーのレコードに適用するテストを指定します。ここに指定した条件は、該当のファイル・メンバーのすべてのレコードに対して テストされ、このテストにパスしたレコードだけが転送されます。

WHERE を指定しなかった場合は、指定のファイル・メンバーのすべてのレコードが転送されます。

条件の形式は次のとおりです。
field-name  test  value
field-name
これは、レコード形式に定義されているフィールド名またはフィールドの サブストリングでなければなりません。

サポートされている関数の 1 つを指定してフィールドまたは定数を操作し、 その結果を比較に使用することができます。サポートされている関数とその使用例は、次のとおりです。

SUBSTR
文字ストリングの指定した部分を戻します。この関数には、フィールド名、開始位置、および戻されるサブストリングの長さの 3 つのパラメーターがあります。次の例では、FULLNAME フィールドの 10 文字目から始まる 20 文字が 取り出されます。

SUBSTR(FULLNAME 10 20)

VALUE
パラメーターのリストから、最初の非ヌル値を戻します。(すべてのパラメーターがヌルの場合は、ヌルが戻されます。)

VALUE(DEPOSIT WITHDRAW BALANCE)

CURRENT
現行システムの DATE、TIME、TIMEZONE、また は TIMESTAMP を戻します。

CURRENT(TIMEZONE)

DIGITS
数値フィールドの文字ストリング表記を戻します。

DIGITS(EMPLOYEE# )

CHAR
日付フィールド、時刻フィールド、またはタイム・スタンプ・フィールドの 文字ストリング表記を戻します。2 番目のパラメーターは、戻されるストリングの Systems Application Architecture® (SAA) の形式 (サポートされる値は USA、EUR、ISO、または JIS) を指定するために使用されます。

CHAR(DATEHIRE USA)

DATE
タイム・スタンプ・フィールドの日付の部分を戻します。

DATE(TIMECRTD)

TIME
タイム・スタンプ・フィールドの時刻の部分を戻します。

TIME(TIMECRTD)

TIMESTAMP
日付フィールドと時刻フィールドを組み合わせたタイム・スタンプを戻します。

TIMESTAMP(DATESEND TIMESEND)

YEAR
日付フィールドまたはタイム・スタンプ・フィールドの年の部分を戻します。

YEAR(DATEHIRE)

MONTH
日付フィールドまたはタイム・スタンプ・フィールドの月の部分を戻します。

MONTH(DATEHIRE)

DAY
日付フィールドまたはタイム・スタンプ・フィールドの日の部分を戻します。

DAY(DATEHIRE)

DAYS
日付フィールドまたはタイム・スタンプ・フィールドの 1 月 1 日からの通算日 を戻します。

DAYS(DATEHIRE)

HOUR
時刻フィールドまたはタイム・スタンプ・フィールドの時の部分を戻します。

HOUR(TIMESEND)

MINUTE
時刻フィールドまたはタイム・スタンプ・フィールドの分の部分を戻します。

MINUTE(TIMESEND)

SECOND
時刻フィールドまたはタイム・スタンプ・フィールドの秒の部分を戻します。

SECOND(TIMESEND)

MICROSECOND
時刻フィールドまたはタイム・スタンプ・フィールドのマイクロ秒の部分を 戻します。

MICROSECOND(TIMECRTD)

テスト
これはフィールドまたは関数に適用する比較のタイプです。
次のテストが使用できます。これらのテストの前後には、1 つ以上のブランクを置くことができます。
注: 探索は、ユーザーが指定した文字に正確に従って行われます。つまり、大文字だけを指定した場合、探索は大文字ストリングについてだけ行われます。小文字だけを指定した場合には、探索は小文字ストリングについてだけ行われます。
=
等しい
<> または ><
等しくない
>
より大
>=
以上
<
より小
<=
以下
LIKE
フィールドが指定の値に類似している
BETWEEN
フィールドが、2 つの定数のいずれかに等しいか、またはその中間にある
IN
フィールドが、定数リストの中の値のいずれかに等しい
IS
フィールドにヌル値が含まれている
ISNOT
フィールドにヌル値が含まれていない
テストの使用法は、次のとおりです。
LIKE テストの使用法
LIKE テストでは、フィールド名に指定したフィールドを調べ、値に指定した文字パターンを探索します。指定するフィールドは文字フィールドでなければなりません。

テストする値は、文字ストリング定数でなければなりません。このストリングには、どのような文字でも入れることができます。パーセント (%) 文字は、ゼロ個以上の文字からなる任意の文字ストリングを表します。1 バイトの下線 (_) 文字は、 任意の 1 バイト文字 1 個を表します。2 バイトの下線 (_) 文字は、 任意の 2 バイト文字 1 個を表します。

次に、LIKE テストの使用法の例を示します。
NAME LIKE '%ANNE%'

上の例では、文字ストリング ANNE を含む NAME、 例えば ANNE、ANNETTE、または SUZANNE などが探索されます。

以下の例では、文字ストリング ANNE で始まる NAME、 例えば ANNE または ANNETTE などが探索されます。
NAME LIKE 'ANNE%'
以下の例では、文字ストリング ANNE で終わる NAME、 例えば ANNE または SUZANNE などが探索されます。
NAME LIKE '%ANNE'
以下の例では、2 番目の文字が A である NAME がすべて探索されます。
NAME LIKE '_A%'
以下の例では、J の文字で始まるラストネームがすべて探索されます。
LSTNAM LIKE 'J%'
これは、次の式と同じことを意味します。
SUBSTR (LSTNAM,1,1) = 'J'

パターンの中にパーセント文字 (%) が入っていない場合、文字ストリングの長さ はフィールドの長さに等しくなければなりません。

BETWEEN テストの使用法
BETWEEN テストでは、フィールド名に指定したフィールドを調べ、値に指定した定数に等しいか、またはそれらの定数の間にある文字ストリングまたは数値を探索します。テストする値は、2 つの文字ストリング定数か、 または 2 つの数値定数でなければなりません。これらの定数はユーザーが指定した フィールド名とタイプが同じでなければなりません。2 つの定数 は AND で区切る必要があります。
次に示す例では、PRICE が 50.35 以上で 75.3 以下のレコードが探索されます。
PRICE BETWEEN 50.35 AND 75.3
次に示す例では、NAME が C の文字で始まるレコードが探索されます。
NAME BETWEEN 'C' AND 'CZZZZZZZZZ'
次に示す例では、バランスが 0~5␠000 のレコードが探索されます。
BALDUE BETWEEN 0 AND 5000
これは、次の式と同じ意味です。
BALDUE >= 0 AND BALDUE <= 5000
注: テストされる値は、BETWEEN (最小値) AND (最大値) という形で指定しなければなりません。例えば、BETWEEN 1 AND 10 は正しい指定です。しかし、BETWEEN 10 AND 1 では、 レコードは 1 つも戻されません。
IN テストの使用法
IN テストでは、フィールド名に指定したフィールドを調べ、値に指定したリストに入っている文字ストリングまたは数値を探索します。テストする値は、文字ストリング定数または数値定数のリストでなければなりません。また、これらの定数は指定したフィールド名とタイプが同じでなければなりません。定数はブランクで区切り、括弧で囲む必要があります。最高 100 個までの定数を指定することができます。次に、IN テストの使用法の例を示します。
NAME IN ('SMITH' 'JONES' 'ANDERSON')
この例では、NAME が SMITH、JONES、 または ANDERSON に等しいレコードが探索されます。
次に示す例では、STATE というフィールドの中の、NY、MN、および TX を除くすべての値が探索されます。
NOT STATE IN ('NY' 'MN' 'TX')
注: 探索は、ユーザーが指定した文字に正確に従って行われます。つまり、 大文字だけを指定した場合、探索は大文字ストリングについてだけ行われます。小文字だけを指定した場合には、探索は小文字ストリングについてだけ行われます。
IS テストの使用法
IS テストでは、フィールド名で指定したフィールドを調べ、ヌル値を探索します。
次の例では、コミッション・フィールドにヌル値が含まれているレコードが探索されます。
COMMISSIONS IS NULL
ISNOT テストの使用法
ISNOT テストでは、フィールド名で指定したフィールドを調べ、非ヌル値を探索します。
次の例では、コミッション・フィールドにヌル値が含まれていないレコードが探索されます。
COMMISSIONS ISNOT NULL
テストは、論理 AND または論理 OR を用いて組み合わせること ができます。AND と OR の両方を指定した場合、AND 比較が 最初に行われます。最高 50 までの条件を指定することができます。例:
MONTH=2 AND LOC='MIAMI' OR LOC='CHICAGO'
この例では、選択される各レコードは、
MONTH=2 AND LOC='MIAMI'
という条件を満たすか、または
LOC='CHICAGO'
という条件を満たさなければなりません。括弧を使用すれば、 この順序を変更することができます。例:
MONTH=2 AND (LOC='MIAMI' OR LOC='CHICAGO')
この例では、選択される各レコードは、
MONTH=2
という条件を満たし、さらに、
LOC='MIAMI' OR LOC='CHICAGO'
NOT を使用することもできます。次の例では、DEPT フィールドが 470 に等しくないレコードから データが転送されるだけでなく、DEPT フィールドが 470 に 等しく、しかも、STATE が NY に 等しいレコードからもデータが転送されます。
NOT (DEPT = 470) OR (DEPT = 470 AND
  STATE = 'NY')

比較は、2 行に渡って指定してもかまいません。しかし、フィールド名は 1 行で 指定しなければなりません。フィールド名は 1 行を超えてはなりません。

テストされる値が引用符で囲んだ文字ストリングである場合には、2 行で 指定しなければなりません。