基本的な計算スクリプト構文の学習

Essbaseブロック・ストレージ・キューブの計算スクリプトを設計する場合、学習する構文ルールがいくつかあります。通常、コマンドはセミコロンで終了します。引用符は、特定のメンバー名を囲む必要があります。Essbaseは、構文の検証に役立ちます。

全体的な構文ルール

Essbaseブロック・ストレージ・キューブには、キューブの計算方法を制御するために使用できる柔軟なコマンド・セットが含まれています。コマンドと式から計算スクリプトを作成できます。

計算スクリプトを作成するときは、次のルールを適用する必要があります。

  • 各式または計算スクリプト・コマンドは、セミコロン(;)で終了します。例:

    例1

    CALC DIM(Product, Measures);

    例2

    DATACOPY Plan TO Revised_Plan;

    例3

    "Market Share" = Sales % Sales -> Market;

    例4

    IF (Sales <> #MISSING)
       Commission = Sales * .9;
       ELSE
          Commission = #MISSING;
    ENDIF;

    次の条件付きまたは制御フロー・コマンドはセミコロンで終了する必要はありません:

    • IF
    • ENDIF
    • ELSE
    • ELSIF
    • FIX
    • ENDFIX
    • EXCLUDE
    • ENDEXCLUDE
    • LOOP
    • ENDLOOP

    ノート:

    必須ではありませんが、式の各ENDIF文の末尾にセミコロンを付けることをお薦めします。

  • メンバー名が次のいずれかの条件を満たしている場合は、そのメンバー名を二重引用符(" ")で囲みます:

    • 空白を含みます。

      たとえば、次の式では、Opening InventoryとEnding Inventoryが二重引用符で囲まれています。

      "Opening Inventory" = "Ending Inventory" - Sales + Additions;
    • 演算子、関数名またはキーワードと同じです。

      計算スクリプト、レポート・スクリプト、式、フィルタ、代替変数値および環境変数値での命名規則を参照してください。

    • ハイフン( - )、アスタリスク( * )、スラッシュ( / )などの英数字以外の文字が含まれます。

    • すべて数字であるか、数字で始まっています。

      例: "100"または"10Prod"

    • アンパサンド(&)で始まっています。先頭のアンパサンド(&)は代替変数用に予約されています。メンバー名が&で始まる場合は、名前を引用符で囲みます。

      ノート:

      計算スクリプトでは、代替変数を引用符で囲まないでください。

    • ドット(.)が含まれています。

      例: 1999.Janまたは.100

  • IF文または相互依存のを使用している場合は、式を丸カッコで囲み、指定したメンバーに関連付けます。

    たとえば、次の式はデータベース・アウトラインのCommissionメンバーに関連付けられています。

    Commission
    (IF(Sales < 100)
       Commission = 0;
    ENDIF;)
  • 式の各IF文は、ENDIF文で終了します。

    たとえば、前述の式には単純なIF...ENDIF文が含まれています。

  • 別のIF文内にネストされたIF文を使用する場合は、各IFをENDIF文で終了します。

    例:

    "Opening Inventory"
    (IF (@ISMBR(Budget))
       IF (@ISMBR(Jan))
          "Opening Inventory" = Jan;
       ELSE 
          "Opening Inventory" = @PRIOR("Ending Inventory");
       ENDIF;
    ENDIF;)
  • ELSE文またはELSEIF文は、ENDIF文で終了する必要はありません。

    例:

    Marketing
    (IF (@ISMBR(@DESCENDANTS(West)) OR @ISMBR(@DESCENDANTS(East)))
       Marketing = Marketing * 1.5;
    ELSEIF(@ISMBR(@DESCENDANTS(South)))
       Marketing = Marketing * .9;
    ELSE 
       Marketing = Marketing * 1.1;
    ENDIF;)

    ノート:

    式でELSEIF (1語)ではなくELSE IF (スペースあり)を使用する場合は、IF文にENDIFを指定する必要があります。

  • FIX文は、ENDFIX文で終了します。

    例:

    FIX(Budget,@DESCENDANTS(East))
       CALC DIM(Year, Measures, Product);
    ENDFIX
  • EXCLUDE文は、ENDEXCLUDE文で終了します。

Essbase Webインタフェースを使用して計算スクリプトを記述する場合は、構文チェッカを使用して検証できます。

計算スクリプトでのコメントの使用

コメントを含めて、計算スクリプトに注釈を付けることができます。計算スクリプトの実行時には、コメントは無視されます。

コメントを含めるには、/*でコメントを開始し、*/でコメントを終了します。例:

/* This calculation script comment
   spans two lines. */

構文チェック

Essbaseには、計算スクリプトの構文エラー(入力ミスした関数名など)にフラグを付ける構文チェッカが含まれています。

構文エラーが見つからない場合、Essbaseで、構文チェックが正常に終了したことが示されます。

構文エラーが見つかった場合、Essbaseで、構文チェックが失敗したことが示され、エラーが1つずつ表示されます。通常、エラー・メッセージには、エラーが発生した行の番号と簡単な説明が含まれます。

計算スクリプトの作成を参照してください

ノート:

構文チェッカでは、計算スクリプトが予想どおりに動作しないときに発生するセマンティック・エラーを特定できません。セマンティック・エラーを見つけるには、計算を実行し、結果が予想どおりかどうかを確認します。「計算結果の確認」を参照してください。