![]() |
![]() |
|
|
論理式の基本式
論理式は、以下の基本式で構成されています。
フィールド名またはフィールド名と後続の添字は、基本式です。添字は、参照対象のフィールド・オカレンスを指定します。添字としては、整定数または ? (任意のオカレンスを示す) のいずれかを使用します。添字は、式と見なされません。フィールド名に添字が付いていないと、フィールド・オカレンスは 0 と見なされます。
フィールド名参照が、算術演算子、単項演算子、代入演算子、または関係演算子なしで示されると、フィールドが存在する場合は long 型整数の 1、フィールドが存在しない場合は 0 となります。この方法を使用して、フィールド型に関係なく、フィールド化バッファ内にフィールドが存在するかどうかをテストできます。間接演算子 (*) は存在しません。
定数は基本式です。定数の型は、long 型、double 型、carray 型のいずれかです。型変換の説明を参照してください。
かっこで囲んだ式は、型と値が、かっこで囲まない場合の式の型と値に等しい基本式です。かっこを使用すると、演算子の優先順位を変更できます。次の節を参照してください。
論理式の演算子
次の表は、論理式の演算子を優先順位の高いものから順に示しています。
タイプ |
演算子 |
---|---|
単項 |
+, -, !, ~ |
倍数 |
*, /, % |
加法 |
+, - |
比較 |
< , >, <=, >=, ==, != |
等価、一致 |
==, !=, %%, !% |
排他論理和 |
^ |
論理積 |
&& |
論理和 |
|| |
同じ演算子型に分類される演算子は、優先順位が同じです。次の節では、各演算子を詳しく説明します。C 言語では、かっこを使用して、演算子の優先順位を上書きできます。 論理式で使用される単項演算子 以下の単項演算子が認識されます。
単項演算子を含む式は、右から左にグループ化されます。
+ expression
- expression
~ expression
! expression
単項プラス演算子は、オペランドに有効ではありません。認識はされても、無視されます。単項マイナス演算子の結果は、そのオペランドの否定です。通常の算術変換が実行されます。符号なしのものは、FML には存在しないので、この演算子には問題がありません。
論理否定演算子の結果は、オペランドの値が 0 の場合は 1 であり、オペランドの値が 0 以外の場合は 0 となります。結果は long 型になります。
補数演算子の結果は、オペランドの補数です。結果は long 型になります。
論理式で使用される倍数演算子
倍数に関する演算子の *、/、% は、左から右にグループ化されます。通常の算術変換が実行されます。
expression * expression
expression / expression
expression % expression
2 項演算子 * は、乗算を示します。* 演算子は、連想型であり、同一レベルで数回の乗算を行う式は、コンパイラで再配置できます。
2 項演算子 / は、除算を示します。正の整数が除算されると、切り捨ては 0 に向かって行われますが、オペランドのいずれかが負の場合は、切り捨ての形式は、マシンによって異なります。
2 項演算子 % は、最初の式を次の式で除算した結果の剰余を返します。通常の算術変換が実行されます。オペランドには、float 型や double 型を使用してはなりません。
論理式で使用される加法演算子
加法に関する演算子の + と - は、左から右にグループ化されます。通常の算術変換が実行されます。
expression + expression
expression - expression
+ 演算子は、オペランドの和を返します。+ 演算子は連想型であり、同一レベルで数回の加算を行う式は、コンパイラで再配置できます。オペランドが両方とも string である必要はありません。一方のオペランドが string 文字列の場合、そのオペランドはもう一方のオペランドの算術型に変換されます。
- 演算子は、オペランドの差を返します。通常の算術変換が実行されます。オペランドが両方とも string である必要はありません。一方のオペランドが string 文字列の場合、そのオペランドはもう一方のオペランドの算術型に変換されます。
論理式で使用される等価、一致に関する演算子
この型の演算子は、左から右にグループ化されます。
expression == expression
expression != expression
expression %% expression
expression !% expression
== (等価)、!= (非等価) の各演算子は、指定された関係が false の場合は 0 を返し、true の場合は 1 を返します。結果は long 型になります。通常の算術変換が実行されます。
%% 演算子の場合は、2 つ目の式は、最初の式と照合するために使用する正規表現です。2 つ目の式 (正規表現) は、引用符で囲まれた文字列でなければなりません。最初の式は、FML フィールド名であっても、引用符で囲まれた文字列であってもかまいません。この演算子は、最初の式が 2 つ目の式 (正規表現) と完全に一致する場合は、1 を返し、それ以外は 0 を返します。
!% 演算子は、正規表現との不一致を検出する演算子です。この演算子は、%% 演算子と同じオペランドをとりますが、まったく反対の結果を生じます。%% と !% の関係は、== と != の関係と同じです。
使用可能な正規表現については、『BEA Tuxedo C 言語リファレンス』の「tpsubscribe(3c)」リファレンス・ページを参照してください。
論理式で使用される関係演算子
この型の演算子は、左から右にグループ化されます。
expression < expression
expression > expression
expression <= expression
expression >= expression
< (より小さい)、> (より大きい)、<= (以下)、>= (以上) の各演算子は、指定された関係が false であれば 0 を返し、 trueであれば 1 を返します。結果は long 型になります。通常の算術変換が実行されます。
論理式で使用される排他論理和演算子
演算子 ^ は、左から右にグループ化されます。
expression ^ expression
ビット単位の排他論理和が返されます。結果は、必ず long 型です。
論理式で使用される論理積演算子
expression && expression
&& 演算子は、左から右にグループ化されます。この演算子は、両方のオペランドが 0 でない場合は 1 を返し、どちらかが 0 の場合は 0 を返します。&& 演算子は、必ず左から右へ評価を行います。ただし、最初のオペランドが 0 の場合、2 つ目のオペランドを評価しないということはなく、この点で C 言語とは異なります。オペランドの型は同一でなくてもかまいません。結果は、必ず long 型です。
論理式で使用される論理和演算子
|| 演算子は、左から右にグループ化されます。
expression || expression
どちらかのオペランドが 0 でない場合は 1 を返し、両方とも 0 の場合は 0 を返します。|| 演算子は、必ず左から右へ評価を行います。ただし、最初のオペランドが 0 でない場合、2 つ目のオペランドを評価しないということはなく、この点で C 言語と異なります。オペランドの型は同一でなくてもかまいません。結果は、必ず long 型です。
論理式のサンプル
以下のフィールド・テーブルは、論理式のサンプルで使用するフィールドを定義しています。
EMPID 200 carray
SEX 201 char
AGE 202 short
DEPT 203 long
SALARY 204 float
NAME 205 string
論理式は、必ず true か false に評価されることに注意してください。次の例では、条件が両方とも trueの場合、 trueになります。
"EMPID[2] %% '123.*' && AGE < 32"
この例では、EMPID の添字として整定数を使用しています。以下の例では、?添字を使用しています。
"PETS[?] == 'dog'"
この式は、PETS が存在し、その任意のオカレンスが文字「dog」を含む場合は、true となります。
![]() |
![]() |
![]() |
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|