FastFormulaコンポーネントの使用の概要

FastFormulaを作成するには、Formula言語、アプリケーションがFastFormulaに課すルールおよび計算要件を理解する必要があります。

次のコンポーネントを使用してFastFormulaを作成します。

  • 代入文

  • Return文

  • 変数

  • 入力文

  • 条件

  • コメント

ノート: FastFormulaで使用できるその他のコンポーネントについては、別のトピック内で説明します。リテラル、データベース・アイテム、作業ストレージ領域、別のFormulaへの呼出し、関数、演算子などがあります。

FastFormulaでの各コンポーネントの使用方法を理解するために例を見てみましょう。従業員が毎週勤務する時間数に時給を掛けてWAGE要素の支払値を計算するとします。この例のFormulaを記述する方法を次に示します。

WAGE = HOURS_WORKED * HOURLY_RATE
RETURN WAGE

代入文

代入文はWAGEエレメントに値を代入します。

Return文

Return文はWAGE値を給与計算に返します。Return文から値を渡さずに、Formula実行を停止することもできます。

変数

変数のクラスは次のとおりです。

  • 入力変数はINPUTS文に出現し、FastFormulaに値を提供します。

  • 出力変数はRETURN文に出現し、FastFormulaからの値を返します。1つの変数が入力と出力を兼ねることもあります。

  • ローカル変数は1つのFormula内でのみ使用されます。

Formula内のローカル変数は、代入文で値を代入することで変更できます。WAGE値を計算するには、HOURS_WORKED変数のデータをFastFormulaで取得する必要があります。

ローカル変数を使用してFastFormula内にデータを格納できます。別の計算を実行するため一時的にデータを保持したり、格納したデータをアプリケーションに戻したりといったことが可能です。次に、ANNUAL_LEAVE変数の例を示します。

/* Formula: Annual Leave Formula */
IF YEARS_SERVICE >= 10
THEN
ANNUAL_LEAVE = 25
ELSE
ANNUAL_LEAVE = 20 + FLOOR (YEARS_SERVICE/2)
RETURN ANNUAL_LEAVE

入力文

HOURS_WORKEDWAGEエレメントの入力値として使用できます。処理中にエレメント入力値をFastFormulaに渡すには、入力文を次のように定義します。

INPUTS ARE HOURS_WORKED
WAGE = HOURS_WORKED * HOURLY_RATE
RETURN WAGE
ノート: これは給与計算アプリケーションの例です。入力文で使用する名前はエレメント入力値の名前と同じにする必要があります。複数の単語はアンダースコアで結合します。エレメントと関係のないその他の入力文では、Formula入力変数に対しそれぞれ独自のルールが使用されていることがあります。この例では、入力変数HOURS_WORKEDは数値です。入力変数が数値でない場合は、型を指定する必要があります。たとえば、

関数または計算は1つの式です。複数の式をネストして、より複雑な計算を作成できます。計算の順序を制御するにはカッコを使用します。

Formulaはカッコ内の式を最初に評価します。ネスト内に複数のカッコがある場合、内包範囲の狭いセットから先に評価されます。カッコを使用しない場合、式は次の順序で評価されます。

  • 乗算、除算

  • 加算、減算

ノート: 優先度が同じ場合、Formulaは左から右に式を評価します。

式は演算子(+、-、*、/)や配列メソッド、関数を使用して定数と変数を一体化し、特定のデータ型の値を返します。たとえば式(3 + 2)は、NUMBERデータ型である値5を返します。式の形式は次のとおりです。

SUBEXPRESSION [operator SUBEXPRESSION ...]

複数のサブ式を組み合せて、1つの式を作成できます。たとえば、サブ式(3 + 2)とMONTHS_BETWEEN(start_date, end_date)を、次のように1つの式にまとめることができます。

(3 + 2) + MONTHS_BETWEEN(start_date, end_date)

次のように、関数の中で式を使用することもできます。

salary = GREATEST(minimum_wage, (hourly_rate * hours_worked))

通常、式内のオペランドのデータ型は式全体のデータ型と同じになります。すべてのオペランドが数値で、式自体が数値である式の例を次に示します。

GREATEST(MINIMUM_WAGE, (HOURLY_RATE * HOURS_WORKED)) + BONUS

上の式のオペランドはBONUSです。戻り値はGREATESTです。GREATESTの引数はさらに別の式です。

条件

条件を使用して、特定の条件が発生したかに応じて式を処理できます。次に例を示します。

TRAINING_ALLOWANCE = 0 
IF (AGE < 20) THEN
TRAINING_ALLOWANCE = 30

このFormulaは条件(AGE < 20)がtrueとfalseのどちらであるかをチェックします。trueの場合、THENの後に続く文が処理されます。falseの場合、この文は無視されます。

コメント

コメントはFastFormula全体または一部について説明するときに使用します。また、準備中の行をコメント化し、使用を保留するといったことも可能です。コメントはFormula内の任意の場所に配置できます。FastFormulaの先頭には次のコメントを含めてください。

  • Formulaのタイトルと簡単な用途説明

  • Formula入力の説明

  • 更新する必要のある変数とリテラルのリスト

  • Formulaの計算に関する説明

  • Formulaを修正した場合は、その修正日、修正者名、修正理由

複数行コメント

複数行コメントを指定する際は、コメント・デリミタである/*と*/を使用します。これらのデリミタで囲まれたものはすべてコメントです。

ノート: Formulaのコンパイル時に構文エラーが発生するため、複数行コメント内に複数行コメントを配置しないでください。

単一行コメント

FastFormulaでは、単一行コメントもサポートされます。#文字を使用して単一行コメントを開始します。#文字自体と、その後の行の末尾までのすべてのテキストが無視されます。

コメントの例:

# This line is a single line comment and will be ignored.
 
/*
 * This is a multi-line comment.
 */
 
a = 1 # Ignore the # character and everything after it on the line.
 
b = '####' # b is the string ####. The remainder of the line is ignored. 
 
return a, b