BEA Logo BEA Tuxedo Release 8.0

  BEA ホーム  |  イベント  |  ソリューション  |  パートナ  |  製品  |  サービス  |  ダウンロード  |  ディベロッパ・センタ  |  WebSUPPORT

 

   Tuxedo ホーム   |   FML を使用した BEA Tuxedo アプリケーションのプログラミング   |   先頭へ   |   前へ   |   次へ   |   目次

 


論理式の基本式

論理式は、以下の基本式で構成されています。

フィールド名またはフィールド名と後続の添字は、基本式です。添字は、参照対象のフィールド・オカレンスを指定します。添字としては、整定数または ? (任意のオカレンスを示す) のいずれかを使用します。添字は、式と見なされません。フィールド名に添字が付いていないと、フィールド・オカレンスは 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 の添字として整定数を使用しています。以下の例では、?添字を使用しています。

"PETS[?] == 'dog'"

この式は、PETS が存在し、その任意のオカレンスが文字「dog」を含む場合は、true となります。

 

先頭へ戻る 前のトピックへ 次のトピックへ