式、制御構造および関数
この項では、テンプレート内の式のルールおよび使用方法について説明します。 また、サポートされている制御構造および関数についても説明します。
式
データ列では、データ・フィールドおよび一部のコマンド・パラメータに対して式を使用できます。 式は、XML抽出フィールド、リテラル、関数および演算子のグループです。 式はネストできます。 式には、"IF"制御構造を含めることもできます。 式が評価されると、常に結果が生成されます。 評価では副作用は認められません。
評価結果に基づいて、式は次の3つのカテゴリに分類されます:
-
ブール式 - ブール値を返す式(trueまたはfalse)。 この種類の式は、IF-THEN-ELSE制御構造およびdisplay conditionコマンドのパラメータでのみ使用できます。
-
数値式 - 数値を返す式。 この種類の式は、数値データ・フィールドで使用できます。 数値パラメータを必要とする関数やコマンドでも使用できます。
-
文字式 - 英数字文字列を返す式。 この種類の式は、文字列データ・フィールドで使用できます(書式タイプはアルファ)。 文字列パラメータを必要とする関数やコマンドでも使用できます。
制御構造
サポートされる制御構造は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句は必要な数だけ存在できます。 制御構造はネストできます。
IN述語はIF-THEN-ELSE制御構造でサポートされています。 たとえば:
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 - レコード要素索引です。 順序の定義コマンドとともに使用されます。 これには、Define Sequenceコマンドで定義されたシーケンスである1つのパラメータがあります。 実行時には、レコードで参照されるたびにシーケンス値が1ずつ増加します。
-
COUNT - 特定のタイプの子レベル抽出インスタンスまたは子レベル・レコードをカウントします。 カウントするエンティティより上のレベルでCOUNT関数を宣言します。 この関数には引数が1つあります。 引数がレベルである場合、現在の(親)レベルのインスタンスに属する(子)レベルのすべてのインスタンスがカウントされます。
例: カウントされるレベルが支払で、現在のレベルがバッチの場合、COUNTはバッチ内の支払の合計数を返します。 ただし、現在のレベルがRequestHeaderの場合、COUNTはすべてのバッチにわたってファイル内の支払の合計数を返します。 引数がレコード・タイプの場合、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の場合、MyVarに20を追加し、MyVarに30を割り当て、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 - 値の等価性に基づいて、重複する値のセットの1つを除くすべてが削除された順序を返します。 XPATH関数DISTINCT-VALUESと同等です。 使用状況: distinct_values(fieldname)。
-
INCREASE_DATE - 日付を指定された日数で増分します。
使用方法:
increase_date(.//date, 2)
.//dateの値の2日後の日付値を返します
-
DECREASE_DATE - 指定した日数で日付を減らします。
使用方法:
decrease_date(.//date, 2)
.//dateの値の2より前の日付値を返します
-
XPATH - 純粋なXPath言語を直接インジェクションしてXSLテンプレートを生成できます。
例:
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
-