FastFormulaコンポーネントの使用の概要
FastFormulaを作成するには、Formula言語、アプリケーションがFastFormulaに課すルールおよび計算要件を理解する必要があります。
次のコンポーネントを使用してFastFormulaを作成します。
-
代入文
-
Return文
-
変数
-
入力文
-
式
-
条件
-
コメント
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_WORKED
をWAGE
エレメントの入力値として使用できます。処理中にエレメント入力値をFastFormulaに渡すには、入力文を次のように定義します。
INPUTS ARE HOURS_WORKED
WAGE = HOURS_WORKED * HOURLY_RATE
RETURN WAGE
HOURS_WORKED
は数値です。入力変数が数値でない場合は、型を指定する必要があります。たとえば、 式
関数または計算は1つの式です。複数の式をネストして、より複雑な計算を作成できます。計算の順序を制御するにはカッコを使用します。
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を修正した場合は、その修正日、修正者名、修正理由
複数行コメント
複数行コメントを指定する際は、コメント・デリミタである/*と*/を使用します。これらのデリミタで囲まれたものはすべてコメントです。
単一行コメント
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