式、制御構造および関数

この項では、テンプレート内の式のルールと使用方法について説明します。また、サポートされている制御構造と関数についても説明します。

式は、データ・フィールドのデータ列と一部のコマンド・パラメータで使用できます。式は、XML抽出フィールド、リテラル、関数および演算子の集まりです。式はネストできます。式にはIF制御構造を含めることもできます。式が評価されると、常に結果が生成されます。この評価では、二次的作用が許可されません。

式は評価結果に基づいて、次の3つのカテゴリに分類されます。

  • ブール式 - trueまたはfalseのブール値を戻す式。この種の式は、IF-THEN-ELSE制御構造、および表示条件コマンドのパラメータでのみ使用できます。

  • 数式 - 数を戻す式。この種の式は、数値データ・フィールドで使用できます。数値パラメータを必要とする関数やコマンドで使用することもできます。

  • 文字式 - 英数字の文字列を戻す式。この種の式は、文字列データ・フィールド(Alpha書式タイプ)で使用できます。文字列パラメータを必要とする関数やコマンドで使用することもできます。

制御構造

サポートされている唯一の制御構造はIF-THEN-ELSEです。これは式の中で使用可能です。

構文は次のとおりです。

IF <boolean_expressionA> THEN
   <numeric or character expression1>
[ELSIF <boolean_expressionB THEN
   <numeric or character expression2>]
...
[ELSE
   <numeric or character expression3]
END IF

一般的に、制御構造は数字または英数字文字列に評価される必要があります。制御構造は、数式または文字式とみなされます。ELSIFとELSE句はオプションで、ELSIF句は必要な数だけ定義できます。制御構造はネストできます。

IF-THEN-ELSE制御構造では、IN条件がサポートされています。たとえば:

IF PaymentAmount/Currency/Code IN ('USD', 'EUR', 'AON', 'AZM') THEN      
   PayeeAccount/FundsCaptureOrder/OrderAmount/Value * 100   
ELSIF PaymentAmount/Currency/Code IN ('BHD', 'IQD', 'KWD') THEN      
   PayeeAccount/FundsCaptureOrder/OrderAmount/Value * 1000   
ELSE      
   PayeeAccount/FundsCaptureOrder/OrderAmount/Value   
END IF; 

関数

次に、サポートされている関数のリストを示します。

  • SEQUENCE_NUMBER - レコード要素の索引。順序定義コマンドとともに使用されます。順序定義コマンドによって定義される順序を、1つのパラメータとして持ちます。実行時には、レコード内で参照されるたびに、その順序値が1つずつ増えます。

  • COUNT - 子レベルの抽出インスタンスまたは特定タイプの子レベル・レコードをカウントします。COUNT関数は、カウントするエンティティよりも上位のレベルで宣言します。この関数は、1つの引数を持ちます。引数がレベルの場合は、現在の(親)レベル・インスタンスに属している(子)レベルのインスタンスがすべてカウントされます。

    例: カウントするレベルがPaymentで、現在のレベルがBatchの場合、COUNTはバッチ内の支払いの合計数を戻します。しかし、現在のレベルがRequestHeaderの場合、COUNTは全バッチのファイル内に含まれている支払いの合計数を戻します。引数がレコード・タイプの場合は、現在のレベル・インスタンスに属している(子レベル)レコード・タイプの生成済レコードがすべてカウントされます。

  • INTEGER_PART、DECIMAL_PART - 数値の整数部分または小数部分を戻します。これは、ネストされている式とコマンド(表示条件およびグループ別)で使用されます。データ列の数値フィールドの最終的な書式には、整数書式または小数書式を使用します。

  • IS_NUMERIC - 引数が数値であるかどうかをチェックするブール・テスト。"IF"制御構造でのみ使用されます。

  • TRUNCATE - 最初の引数の文字列を2番目の引数の長さに切り捨てます。最初の引数が、2番目の引数で指定されている長さよりも短い場合は、最初の引数がそのまま戻されます。これは、SQL substr()機能の使いやすいサブセット・バージョンです。

  • SUM - XML抽出フィールドの引数の子インスタンスをすべて合計します。フィールドは数値である必要があります。合計するフィールドは、SUM関数を宣言したレベルよりも下位のレベルに存在する必要があります。

  • MIN、MAX - XML抽出フィールドの引数のすべての子インスタンスで、最小値または最大値を検索します。フィールドは数値である必要があります。操作対象のフィールドは、関数を宣言したレベルよりも下位のレベルに存在する必要があります。

  • FORMAT_DATE - 日付文字列を必要な日付書式に設定します。たとえば:

    FORMAT_DATE("1900-01-01T18:19:20", "YYYY/MM/DD HH24:MI:SS")

    生成される出力は次のとおりです。

    1900/01/01 18:19:20

  • FORMAT_NUMBER - 表示対象の数字を必要な書式に設定します。たとえば:

    FORMAT_NUMBER("1234567890.0987654321", "999,999.99")

    生成される出力は次のとおりです。

    1,234,567,890.10

  • MESSAGE_LENGTH - EFTメッセージ内のメッセージの長さを戻します。

  • RECORD_LENGTH - EFTメッセージ内のレコードの長さを戻します。

  • INSTR - テキスト・フィールド内の名前付き文字の数値位置を戻します。

  • SYSDATE、DATE - 現在の日時を取得します。

  • POSITION - XML文書ツリー構造内のノードの位置を戻します。

  • REPLACE - 文字列を別の文字列に置き換えます。

  • CONVERT_CASE - 文字列または文字を大文字または小文字に変換します。

  • CHR - ASCII値である引数の文字表現を取得します。

  • LPAD、RPAD - 文字列値の左側または右側の埋込みを生成します。

  • AND、OR、NOT - 要素に対する演算子関数。

  • AddToVar - 指定された値を変数の現在の値に追加し、変数に追加された値を戻します。割当てに失敗すると、この関数は0を戻します。変数が存在しない場合、この関数は新しい変数を作成して指定された値を割り当てます。

    使用方法: AddToVar(var-name,value-to-be-added)

    例:

    AddToVar('MyVAR', 10) - MyVar=0の場合、10をMyVarに割り当てて10を戻します。

    AddToVar('MyVAR', 20) - MyVar=10の場合、20をMyVarに追加し、30をMyVarに割り当てて20を戻します。

  • GetVar - 指定された変数の値を戻します。変数が存在しない場合は0を戻します。

    使用方法: GetVar(var-name)

    例: GetVar('MyVAR')

  • ResetVar - 変数の値を0にリセットします。

    使用方法: ResetVar(var-name)

    例: ResetVar('MyVAR')

  • SetVar - 指定された値を変数に割り当てて、割り当てられた値を戻します。

    使用方法: SetVar(var-name, value-to-be-assigned)

    例: SetVar('MyVAR', 1200)

  • DISTINCT_VALUES - 値が等しいものを重複と見なし、重複を除いたうえで、すべての数列を返します。XPATH関数のDISTINCT-VALUESに相当します。使用方法: distinct_values(フィールド名)。

  • INCREASE_DATE - 指定された日数分だけ日にちを増やします。

    使用方法:

    increase_date(.//date, 2)

    .//dateの値より2日後の日付値を返します。

  • DECREASE_DATE - 指定された日数分だけ日にちを減らします。

    使用方法:

    decrease_date(.//date, 2)

    .//dateの値より2日前の日付値を返します。

  • XPATH - XSLテンプレートを生成するために、純粋なXPath言語を直接挿入できます。

    例:

    XPATH('sum((../PRE_TAX_DEDUCTIONS/PAYMENT)[position() >= 9])')

    XPATH('sum((../PRE_TAX_DEDUCTIONS/PAYMENT)[NAME = 'NULL'])')

  • その他のSQL関数は、次に示すとおりです。SQL関数に対応する構文を使用してください。

    • TO_DATE

    • LOWER

    • UPPER

    • LENGTH

    • GREATEST

    • LEAST

    • DECODE

    • CEIL

    • ABS

    • FLOOR

    • ROUND

    • CHR

    • TO_CHAR

    • SUBSTR

    • LTRIM

    • RTRIM

    • TRIM

    • IN

    • TRANSLATE