IF

EssbaseIF計算コマンドは、式で条件付きテストを実行します。IF文を使用すると、ブール・テストと、テストがTRUEまたはFALSEのいずれかの値を返した場合に計算される数式を定義できます。

構文

IF( condition ) statement ; [ ...statement ; ] [ ELSEIF...statement | ELSE...statement]
  ENDIF;

パラメータ

condition

TRUE(ゼロ以外の値)またはFALSE(ゼロの値)のブール値を返す数式または関数。

statement

テストの結果に応じて実行する演算。

ノート

  • IF文ブロックでは、決定構文の一部として、ELSE文およびELSEIF文を使用することもできます。

  • ENDIF文とセミコロンをIF、ELSE、ELSEIFの各文と一緒に使用する方法については、ENDIFを参照してください。

  • 計算スクリプトでは、IF文はカッコ内に配置し、特定のデータベース・メンバーに関連付ける必要があります。また、ENDIF文で終了する必要があります。

  • IF文内では、属性を@ATTRIBUTE@WITHATTRを使用して指定できます。この例はIF (@ISMBR(@ATTRIBUTE(Can))) ...です。属性関数を使用する必要があります。IF(@ISMBR(Can))はサポートされません。

例1

IF(
        @ISMBR(@DESCENDANTS(Europe))
OR      @ISMBR(@DESCENDANTS(Asia))
  )
   Taxes = "Gross Margin" * "Foreign Tax Rate";
ELSE
   Taxes = "Gross Margin" * "Domestic Tax Rate";
ENDIF;

このテストでは、現在のセルにEuropeメンバーまたはAsiaメンバーの子孫であるメンバーが含まれているかどうかを確認します。含まれている場合、式は外国の税率に基づいてメンバーの税金を計算します。現在のセルにこれらのグループのいずれかのメンバーが含まれていない場合は、国内税率が税計算に使用されます。

例2

IF文を計算スクリプトのメンバー式の一部として使用する場合は、次の両方のタスクを実行する必要があります。

  • IF文の単一メンバーへの関連付け

  • IF文をカッコで囲む

次の例に、サンプルIF文を示します。

Profit 
(IF (Sales > 100)
   Profit = (Sales - COGS) * 2;
ELSE
  Profit = (Sales - COGS) * 1.5;
ENDIF;)

Essbaseはデータベースを循環し、次の計算を実行します。

  1. IF文は、現在のメンバーの組合せのSalesの値が100を超えるかどうかを確認します。

  2. Salesが100を超える場合、Essbaseは、Salesの値からCOGSの値を減算し、その差に2を乗算し、結果をProfitに配置します。

  3. Salesが100以下の場合、Essbaseは、Salesの値からCOGSの値を減算し、その差に1.5を乗算し、結果をProfitに配置します。

IF ... ENDIF文全体がカッコで囲まれ、ProfitメンバーであるProfit (IF(...)...)に関連付けられます。

関連項目