Formulaコンテキスト

Formulaは、アプリケーション固有の実行コンテキスト内で実行され、Formulaで使用できるコンテキスト変数を決定します。Formulaがデータベースからデータベース・アイテム値を取り出すとき、コンテキスト値はSQLバインド値として機能します。Formulaではコンテキスト値をFormula関数呼出しに渡すこともできます。

実行コンテキストの例をいくつか示します。

  • EFFECTIVE_DATE: Formulaが有効になる日付。

  • PAYROLL_ID: Formulaの処理対象の給与計算。

  • PERSON_ID: Formulaの処理対象の個人。

コンテキスト値の設定

通常、Formulaを呼び出すアプリケーション・コードによってすべてのコンテキスト値が設定されます。給与計算などの複雑なアプリケーションでは、一般的な処理要件を満たすための最低限のコンテキストのみが設定されます。

給与に対してFormulaがどのように機能するかを次に示します。

  • 給与計算では、国別仕様データ・グループ、対象日、処理する給与計算、給与関係、給与計算処理および処理対象者のコンテキストが設定されます。

  • また、国固有のコンテキストも使用可能です。たとえば、管轄区域や税コードのコンテキスト値は国固有です。

Formulaコンテキスト処理文

コンテキスト処理文で変数が使用されている場合、Formulaはコンテキストのリストを検索します。変数はコンテキスト・リストに存在している必要があり、存在しない場合はFormulaはエラーを返します。データ型は、コンテキスト・リスト・エントリとともに格納されます。

この表は、Formulaコンテキスト処理文について説明しています。

文の目的

CHANGE_CONTEXTS(assignment [,...])

コンテキスト変更ブロック内でコンテキスト値を変更します。このブロック内では、Formula関数呼出しやデータベース・アイテム、被呼出し側Formulaで新しいコンテキスト値が使用されます。ブロックの外側では元の値が使用されます。

コンテキスト変更ブロックをネストして、ステージごとに異なるコンテキストを適用できます。

/*
 * Nested Context changes: DBI1 depends upon SOURCE_ID and SOURCE_TEXT. */
CHANGE_CONTEXTS(SOURCE_TEXT = 'A')
(
  /* SOURCE_TEXT = 'A' */
  X = DBI1
 
  /* Nesting used to change Contexts in stages. */
  CHANGE_CONTEXT(SOURCE_ID = 2)
  (
    /* SOURCE_TEXT = 'A',
SOURCE_ID  = 2 */
    Y = DBI1
    
    /* Overriding a Context change. */
    CHANGE_CONTEXTS(SOURCE_TEXT = 'B',SOURCE_ID = 3)
    (
      /* SOURCE_TEXT = 'B', SOURCE_ID  = 3 */
      Z = DBI1
       )
)

CONTEXT_IS_SET(context)

コンテキスト値が設定されているかどうかをテストします。

このコードはAREA3コンテキストが設定されているかどうかをテストします。

IF CONTEXT_IS_SET(AREA3) THEN

GET_CONTEXT(context, default value)

コンテキストが設定されている場合はコンテキストの値が返され、設定されていない場合は2つ目の引数で指定されているデフォルト値が返されます。

/* AREA1 is a context of type TEXT. */
AREA1_VALUE = GET_CONTEXT(AREA1,' ')