比較演算子
REXX 比較演算子は、2 つの項を比較して、結果が真なら値 1 を、それ以外なら 0 を戻します。比較演算子は、数字または文字ストリングを比較できます。最もよく使用される比較演算子は、次のとおりです。
- 演算子
- 意味
- =
- 等しい
- ¬=, \=
- 等しくない
- <
- 次より小
- ¬<, \<
- 未満でない
- >
- 次より大
- ¬>, \>
- 以下
- <=
- 次以下
- >=
- 次以上
- ><
- より大きいかより小さい (等しくないと同等)
- <>
- より小さいかより大きい (等しくないと同じ)
「not」文字 (¬) は、円記号 (¥) と同じです。どちらの文字も同様に使用可能です。
これらの比較演算子を使用して項を比較するときには、式の項が両方とも数値であれば、REXX は数値比較を実行します。それ以外のときは、両方の項が文字ストリングとして扱われ、REXX は文字比較を実行します。(REXX 内の数字は、1 個以上の 10 進数字、オプションの小数点、およびオプションの先頭符号文字を含むストリングです。ストリングは、1 個以上の先行または末尾ブランクを含むことができ、符号文字は 1 個以上のブランクによって数字と分離することができます。)
文字比較では、先行および末尾ブランクは無視され、短いほうのストリングの右側にブランクが埋め込まれます。文字比較では、大/小文字が区別されます。したがって、小文字が大文字に変換されないようにするためには、文字ストリングを引用符で区切る必要があります。例えば、フィールド #4
に MixedCase
という値が入っていると、次の比較演算はどちらも真になります。
#4 = 'MixedCase'
#4 = ' MixedCase '
しかし、次の比較演算は真になりません。
#4 = MixedCase
数値比較では、2 つの数値を引き算して (差を計算して)、その結果と 0 を比較することによって比較を行います。例えば、次の比較演算は、
#6 = 10
次の演算と同じです。
(#6 - 10) = 0
これらの比較演算子の他にも、REXX は、 主に文字ストリングの比較に使用される、多数の「厳密な」比較演算子を提供しています。厳密な比較演算子は、すべて ==
(厳密に等しい) のように、演算を定義する文字の 1 つが二重になっています。
厳密な比較演算子は、次のとおりです。
- 演算子
- 意味
- ==
- 厳密に等しい
- ¬==, \==
- 厳密に等しくない
- <<
- 厳密により小さい
- ¬<<, \<<
- 厳密により小さくない
- >>
- 厳密により大きい
- ¬>>, \>>
- 厳密により大きくない
- <<=
- 厳密により小さいか等しい
- >>=
- 厳密により大きいか等しい
==
比較演算子 (厳密に等しい) を使用するときは、厳密に等しくするためには、比較される 2 つの文字ストリングが (一文字一文字) 同一で、長さが同じでなければなりません。先行および末尾ブランクは、意味を持ちます。例えば、引き続き、#4
という値が入ったフィールド MixedCase
を例に取れば、次の比較演算のうち真になるのは、初めのほうだけです。
#4 == 'MixedCase'
#4 == ' MixedCase '
同じように、>>
や <<
といった厳密な比較演算子も、比較対象のどちらのストリングにも埋め込みをせずに、単純な文字単位の比較を行います。2 つのストリングの比較は、左から右に行われます。一方のストリングが他方のストリングよりも短く、また他方のストリングの先行サブストリングになっていれば、そのストリングは、他方のストリングより小さいことになります。厳密な比較演算子は、2 つの項の数値比較は実行しませんので、数値フィールドの比較には使用しないでください。