14.1.4 条件および式の指定
LANSAシステムの多くのRDMLコマンドでは、条件または式を指定する必要があります。
一般に、条件は、生成される答えが "true" (真) と "false" (偽) のどちらであるかで評価できるステートメントで指定します。
「条件および式の指定」、「算術演算子および式の演算子」についての詳細は、オンラインの『テクニカルリファレンス』を参照してください。
例えば、"#A *LT 10" は条件です。フィールド#Aの値が10未満の場合は"true"、そうでない場合は"false"になります。RDMLコマンドでは、条件で以下の演算子を使用できます。
*GT,>
*LT,<
*EQ,=
*NE,^=
*GE,>=
*LE,<=
クロスプラットフォームで使用する場合は、最初に記載されている演算子を使用することをお勧めします。すなわち、"#A < 10"ではなく"#A *LT 10"とします。
式は、生成される答えが数字または英数字かを評価できるステートメントで指定します。例えば、式 "(#X + 10) / 2" では数値の結果が生成されます。この値は、#Xと10の合計を2で除算したものです。この場合、結果に「真」または「偽」の区別はありません。結果は 単なる数値です。
式が条件の内部に含まれることがよくあります。次のような条件について考えてみましょう。
#A < ((#B + 10.62) / 3.14)
| | | |
| | | |
| -------- 式 ------- |
| |
------------- 条件 ------------
条件または式のコンポーネントとして、以下のものを指定できます。
- 'NSW'、NSW、'Balmain'、またはBALMAINなどの英数字リテラル
- 1、14.23、-1.141217などの数値リテラル
- #CUSTNO、#INVNUMなど、もう1つのフィールド名
- *BLANKS、*ZERO、*DATEなどのシステム変数名、またはユーザーのインストール時に定義されている他のシステム変数
- *UP01、*UP02などのプロセス・パラメータ
フルRDMLXオブジェクトの場合は、RDMLX 拡張式 の実行が可能です。拡張式には、以下のサポートが追加されます。
- メソッド、内在するファンクション、プロパティ
- *Not、*IS、*ISNOT、*IsEqual、*IsOfType、*AS、*ANDIF、*ORIF などの演算子の追加
英数字リテラルを条件または式で使用する場合は、引用符で囲む必要はないことに注意してください。引用符が必要なのは、英数字リテラルに小文字が含まれる場合のみです。英字リテラルに引用符が含まれていないと、大文字に変換されます。したがって、 BALMAIN = balmain = Balmain = balMAINですが、Balmainと'Balmain'は同等ではありません。
フィールド名を条件または式で使用する場合は、#(ハッシュ)記号が先行する必要がある点についても注意してください。これによってLANSAはフィールドと英数字リテラルを区別することができます。例えば、CNTRY = AUSTという式では、どちらのコンポーネントがフィールドでどちらが英数字リテラルか区別できません。正しい形式は、#CNTRY = AUSTです。
また、 SQL Nullが可能なフィールドは、条件または式でSQL Nullの実行時とは異なる振る舞いをする可能性があることについても注意してください。詳細については、「SQL Null が可能なフィールドの割り当て、条件、式」を参照してください。