フォーミュラ エレメントの定義

フォーミュラ エレメントを定義するには、フォーミュラ コンポーネント (GP_FORMULA) を使用します。

ページ名

定義名

用途

フォーミュラ名ページ

GP_PIN

エレメント名を付け、基本パラメータを定義します。

フィールドベース定義ページ

GP_FORMULA1_V2

計算で使用するフォーミュラを定義します。

フォーミュラ定義を検証します。

エレメント属性ページ

GP_FORMULA_F1_SEC

端数処理ルール、前回の値の選択、およびエレメント ポインタ選択を、フォーミュラで使用するフィールドに割り当てます。

テキスト定義ページ

GP_FORMULA2_V2

フォーミュラを表示し、問題がないか確認します。

フォーミュラを定義する際、フォーミュラを構成する各エレメントの値が変化することは珍しいことではありません。そのため、もしエレメントの特定の時点の特定の値を参照する場合は、構成要素のエレメントの値が変わる度にフォーミュラを変更する必要があります。エレメントの値を参照する代わりに、エレメント ポインタを使ってシステムの識別番号、つまりエレメント番号を参照することができます。エレメント ポインタを使用すると、処理の時点で、エレメントのアレイに格納されている値が取得されます。エレメント番号は一定なので、その値は常に有効値として使用できます。そのため、そのエレメントを使用するフォーミュラも、そのまま継続して使用できます。

バッチ処理の際、ポインタのフィールド フォーマットで定義された変数の値は、PINV アレイのエレメント ポインタ フィールドに格納されます。つまり、エレメント番号だけが保存され、変数エレメントは実際の文字値、数値、日付値には変換されないことになります。

フォーミュラで使用されている変数エレメントのフィールド フォーマットがポインタではなく、エレメント属性ページで [エレメント値を使用] オプションが選択されている場合、フォーミュラではエレメントの値が使用されます。

フォーミュラで使用されている変数エレメントのフィールド フォーマットがポインタではなく、エレメント属性ページで [エレメント番号を使用] オプションが選択されている場合、フォーミュラではエレメント番号が使用されます。

フォーミュラで使用されている変数エレメントのフィールド フォーマットがポインタで、エレメント属性ページで [エレメント値を使用] オプションが選択されている場合、フォーミュラではポインタ エレメントが指すエレメントの値が使用されます。

フォーミュラで使用されている変数エレメントのフィールド フォーマットがポインタで、エレメント属性ページで [エレメント番号を使用] オプションが選択されている場合、フォーミュラではポインタ エレメントの値が使用されます。言い換えると、ポインタのフィールド フォーマットのエレメントに保存される値はエレメント番号なので、フォーミュラではエレメント番号が使用されます。

次の表は、設定によって使用される値をまとめたものです。

フィールド フォーマット

[エレメント値を使用] オプションを選択

[エレメント番号を使用] オプションを選択

フィールド フォーマットがポインタ以外

エレメント値

エレメント番号

フィールド フォーマットがポインタ

ポインタの値が指すエレメントの値

ポインタの値 (エレメント番号)

例 1

差し押さえを計算するフォーミュラがあります。しかし、差し押さえの計算方法は受給者によって異なります。このフォーミュラでエレメント ポインタを使って、エレメント番号でエレメントを参照するようにすると、受給者ごとの差し押さえ数やタイプに合わせてフォーミュラを記述し直さずに済みます。エレメント ポインタでエレメントを参照すると、そのエレメントの現在の値を取得できるので、このフォーミュラで受給者に合った計算が可能になります。

例 2

あるフォーミュラを使用する前のエレメントの値は、次のとおりとします。

エレメント番号

エレメント名

エレメント タイプ

フィールド フォーマット

10 進数値

文字値

ポインタ値

1000

V1

変数

10 進数

150

 

 

2000

V2

変数

文字列

 

ABC

 

3000

V3

変数

10 進数

250

 

 

4000

V4

変数

ポインタ

 

 

1000

エレメント属性ページで [エレメント値を使用] オプションが選択されているとします。

エレメントのフィールド フォーマットがポインタでない場合は、フォーミュラではそのエレメントの値が使用されます。このとき、フォーミュラで次のステートメントを使用しているとします。

V1 を V3 に割り当てます

フォーミュラが変換されると、V3 の値は 150 となります。

エレメントのフィールド フォーマットがポインタの場合は、フォーミュラではそのポインタが指すエレメントの値が使用されます。このとき、フォーミュラで次のステートメントを使用しているとします。

V4 を V3 に割り当てます

フォーミュラが変換されると、V3 の値は 150 となります。

V4 をフォーミュラで使用する場合、フォーミュラでは [エレメント値を使用] オプション、または [エレメント番号を使用] オプションが選択されているかどうかが確認されます。この例では、[エレメント値を使用] オプションが選択されています。次に、フィールド フォーマットがポインタかどうかが確認されます。この例では、フィールド フォーマットはポインタです。ポインタの値は 1000 です。この 1000 はエレメント番号であり、このエレメント番号は V1 を指しているので、このフォーミュラでは V1 の値 (150) が使用されます。

今度は、エレメント属性ページで [エレメント番号を使用] オプションが選択されているとします。

[エレメント 1] と [エレメント 2] のフィールド フォーマットがポインタではない場合は、フォーミュラではエレメント番号が使用されます。このとき、フォーミュラで次のステートメントを使用しているとします。

V2 を V4 に割り当てます

この場合、エレメント番号が使用されるので、このフォーミュラが変換されると、V4 のポインタ値には 2000 が入ります。

[エレメント 1] と [エレメント 2] のフィールド フォーマットがポインタの場合は、フォーミュラではポインタ値が使用されます。このとき、フォーミュラで次のステートメントを使用しているとします。

V4 = 2000 かどうか

V4 のポインタ値 = 2000 なので、この条件は真です。

V2 をフォーミュラで使用する場合、フォーミュラでは [エレメント値を使用] オプション、または [エレメント番号を使用] オプションが選択されているかどうかが確認されます。この例では、[エレメント番号を使用] オプションが選択されています。次に、フィールド フォーマットがポインタかどうかが確認されます。この例では、そうではありません。この場合、フォーミュラで、エレメント番号 2000 を持つ V2 のエレメント番号を使用するように指示されます。したがって、ポインタの値 V4 に 2000 が割り当てられます。

注: V2 のエレメント番号を使用する場合は、割当先エレメントのフィールド フォーマットはポインタである必要があります。また、[エレメント 1]、[エレメント 2]、および [割当先エレメント] の属性ページで [エレメント番号を使用] オプションを選択する必要があります。

フォーミュラ名ページ (GP_PIN) を使用して、エレメントに名前を付け、基本パラメータを定義します。

全てのエレメントについて、エレメント名共通ページでその名称と基本パラメータを定義してください。グローバル ペイロールでは、全てのエレメントのコンポーネントに、エレメント名共通ページ (GP_PIN) という共通ページが含まれています。

フィールドベース定義ページ (GP_FORMULA1_V2) を使用して、計算で使用するフォーミュラを定義します。

フォーミュラ定義を検証します。

画像: フィールドベース定義ページ (1/5)

次の例では、フィールドベース定義ページ (1/5) のフィールドおよびコントロールを説明します。

フィールドベース定義ページ (1/5)

画像: フィールドベース定義ページ (2/5)

次の例では、フィールドベース定義ページ (2/5) のフィールドおよびコントロールを説明します。

フィールドベース定義ページ (2/5)

フォーミュラの作成

[フィールド ベース領域] グループ ボックスで、行ごとに演算や結果を指定して、フォーミュラを作成します。

フィールドまたはコントロール

定義

関数

フォーミュラの関数のタイプ、または修飾子のタイプを選択します。オプションには、[And]、[Average]、[Else]、[Endif]、[Exit]、[If]、[In]、[Maximum]、[Minimum]、[Or]、[Sum]、[Then]、および [コメント] があります。

( (左かっこ)

フォーミュラの計算処理をグループ化する場合、オンにします。このチェック ボックスをオンにする場合は、[)] チェック ボックスもオンにする必要があります。かっこを使用してフォーミュラの計算処理をグループ化することにより、計算の順序を指定できます。

入力タイプ 1、入力タイプ 2エレメント 1、エレメント 2カレンダー日付 1、カレンダー日付 2文字値 1、文字値 2数値 1、数値 2

演算で使用するフィールドの入力タイプを選択します。入力タイプとして [日付][カレンダー日][文字列]、または [数値] を選択した場合は、対応する "日付値""文字値"、または "数値" フィールドに値を入力してください。その他の入力タイプを選択すると、対応する "エレメント" フィールドにプロンプト ビューが作成され、適切なエレメントを検索して指定することができます。

詳細

このアイコンをクリックすると、エレメント N の属性ページにアクセスします。このページで、端数処理ルール、前回の値の選択、およびエレメント ポインタ選択を、フォーミュラで使用するフィールドに割り当てます。エレメント N の属性ページで追加情報を入力すると、入力タイプ フィールドの右にあるチェック ボックスがオンになります。

演算子

入力したオペランドに対して実行する演算子を選択します。次の標準的な演算子が使用できます。空欄にするか、[-]、[*]、[/]、[+]、[<]、[<=]、[<>]、[=]、[>]、および [>=] から選択します。

) (右かっこ)

フォーミュラの計算処理をグループ化する場合、オンにします。このチェック ボックスをオンにする場合は、[(] チェック ボックスもオンにする必要があります。かっこを使用してフォーミュラの計算処理をグループ化することにより、計算の順序を指定できます。

割当先タイプ割当先エレメント

エレメントに値を割り当てるには、先に入力タイプを指定してからエレメントを選択します。

たとえば、基礎年金額を定義する BASIC PENSION という名前のフォーミュラがあるとします。このエレメントは、フォーミュラがどのように変換されるかによって 1000 または 1200 に変換されます。エレメント BASIC PENSION に 1000 または 1200 の値を持たせるには、このフォーミュラの [割当先エレメント] に BASIC PENSION を指定する必要があります。BASIC PENSION エレメントは、支給エレメントまたは控除エレメントとして使用することができ、これらの値を持つことになります。

このフォーミュラ エレメントの機能を有効にするには、有効日を指定してフォーミュラを保存する必要があります。

注: かっこの中にも複数のセットのカッコを入力できます。この操作を行うには、複数の行を入力します。1 行につき、1 つの [(] または [)] しか指定できません。

フォーミュラの検証

フォーミュラを定義した後は、そのフォーミュラを保存し、構文を検証してフォーミュラを編集します。フォーミュラを変更した場合は常に、検証作業を行います。

フィールドまたはコントロール

定義

検証

このボタンをクリックすると、フォーミュラの検証が行われます。フォーミュラの検証を行うと、フォーミュラが自動的に保存されます。

検証済

[検証] ボタンをクリックして、フォーミュラの検証に問題がなかった場合、このチェック ボックスがオンになります。

注: フォーミュラの変更後に検証処理を行わないまま、そのフォーミュラを使用しているプロセスを実行すると、エラーが発生します。[検証] ボタンをクリックする前にページを保存します。ページはいつでも保存できますが、[検証] ボタンをクリックするまで、データベースに対する検証処理は行われません。[検証] ボタンをクリックすると、フォーミュラの検証と保存が行われます。

例: フォーミュラの設定

フォーミュラ エレメントを使用すると、数学演算子、論理演算子、ルール、および数式を使ってエレメントを作成できます。

この例では、年金控除を計算する簡単なフォーミュラを作成します。フォーミュラの要件は、次のとおりです。

  • 基本給与 (basic comp) が 10,000 ドル未満の場合は、基本給与の 1% の年金控除 (pension) が適用されます。

  • 基本給与が 10,000 ドル以上の場合は、10,000 ドルに対して 1%、その残額に対して 2% の控除が適用されます。

計算は全て、基本給与を使って行われます。このフォーミュラの変換結果が年金控除額となります。

まず、この計算内容を数式に置き換えます。

If BASE COMP < 10,000, then
  BASE COMP * .10 = PENSION,
else
    (10,000 * .01) + ((BASE COMP - 10,000) * .02) = PENSION
Endif

フォーミュラは、さまざまな方法で表すことができます。処理を能率的に行うには、最小限の処理しか必要としない最も単純なパターンを使用します。

計算内容を数式に置き換えたら、フォーミュラを入力します。エレメントの定義と基本情報の入力をまだ行っていない場合は、フォーミュラ名ページで行います。次に、フィールド ベース定義ページでフォーミュラを 1 行ずつ定義します。

次の表に従って、年金フォーミュラを入力します。

連番

関数

(

エレメント 1

演算子

エレメント 2

)

割当先エレメント

1

If

 

BASE COMP

<

10,000

 

 

2

Then

 

BASE COMP

*

.10

 

年金

3

Else

(

10,000

*

.01

)

 

4

 

 

 

+

 

 

 

5

 

(

 

 

 

 

 

6

 

(

BASE COMP

-

10,000

)

 

7

 

 

 

*

.02

)

年金

8

ENDIF

 

 

 

 

 

 

注: If ステートメントは必ず Endif で終わる必要があります。

各エレメント名は、適切な入力タイプに関連付けられている必要があります。たとえば、最初の行では、エレメント 1 (BASE COMP) は、システム エレメントの入力タイプに関連付けられています。エレメント 2 (10,000) は、数値の入力タイプに関連付けられています。

テキスト定義ページにアクセスすると、フォーミュラ定義を確認することができます。フォーミュラを定義したら、フィールドベース定義ページの [検証] ボタンをクリックして、フォーミュラの検証を行います。

エレメント属性ページ (GP_FORMULA_F1_SEC) を使用して、端数処理ルール、前回の値の選択、およびエレメント ポインタ選択を、フォーミュラで使用するフィールドに割り当てます。

画像: エレメント属性ページ

次の例では、エレメント属性ページのフィールドおよびコントロールを説明します。

エレメント属性ページ

フィールドまたはコントロール

定義

端数処理ルール エレメント

フォーミュラ名ページで選択したエレメントのフィールド フォーマットが [金額][10 進数]、または [ポインタ] の場合は、検索結果リストから端数処理ルールを選択します。このフィールドは、これらのフィールド フォーマットのエレメントでのみ表示されます。

端数処理ルールは、入力したオペランドに対してのみ適用されます。エレメント自体は更新されません。影響があるのは計算だけです。

値/ポインタ選択

以下のフィールドを使用して、フォーミュラのエレメント ポインタを定義します。

フィールドまたはコントロール

定義

エレメント値を使用

このオプションを選択すると、計算でエレメントの値が使用されます。

エレメント番号を使用

デフォルト値は [エレメント値を使用] です。エレメントの番号を使用するフォーミュラを作成することもできます。

このオプションを選択すると、現在の値ではなくシステムの識別番号、つまりエレメント番号を使用してエレメントが参照されます。

たとえば、差し押さえを計算するフォーミュラがあるとします。しかし、差し押さえの計算方法は受給者によって異なります。このフォーミュラでエレメント ポインタを使って、エレメントの識別番号でエレメントを参照するようにすると、受給者ごとの差し押さえの数やタイプに合わせてフォーミュラを記述し直さずに済みます。エレメント ポインタでエレメントを参照すると、そのエレメントの現在の値を取得できるので、このフォーミュラで受給者に合った計算が可能になります。

前回の値の選択

フィールドまたはコントロール

定義

前回の計算値を使用

前回計算した値を使用する場合は、このチェック ボックスをオンにします。

テキスト定義ページ (GP_FORMULA2_V2) を使用して、フォーミュラを表示し、問題がないか確認します。

画像: テキスト定義ページ

次の例では、フォーミュラ - テキスト定義ページのフィールドおよびコントロールを説明します。

テキスト定義ページ

テキスト定義ページを使用して、フィールドベース定義ページで作成したフォーミュラを確認します。誤りがある場合は、フォーミュラ - フィールド ベース定義ページに戻ってフォーミュラを修正します。

フィールドまたはコントロール

定義

行ごとにテキストを表示

フィールドベース定義ページで作成したフォーミュラのテキストを、入力したとおり 1 行ずつ表示する場合にクリックします。

これは、エラーのあるフォーミュラをトラブルシューティングする際に便利です。SaveEdit により生成されたエラーが、テキスト内、およびページの下に表示されるエラー メッセージで特定されます。

注: 行ごとに表示される場合、各行の先頭には行番号が表示され、表示されるフォーミュラ テキストの行に合わせてエラーの場所が更新されます。