コマンド行
コマンド行には、コマンド名とコマンド・パラメータの2つの列が常に存在します。
サポートされているコマンドは次のとおりです。
これらの各コマンドの使用方法は、次の各項で説明します。
レベル・コマンド
レベル・コマンドは、表をXML要素に関連付けます。レベル・コマンドのパラメータは、XML要素です。レベルは、データ入力ファイル内でXML要素のインスタンスが出現するたびに1度出力されます。
レベル・コマンドは、テンプレートの階層を定義します。たとえば、支払いXMLのデータ抽出は階層的になります。バッチには複数の子支払いを、また支払いには複数の子請求書を含めることができます。この階層は、親要素内にネストされている子要素としてXMLで表されます。レベル・コマンドを使用して表をXML要素に関連付けることで、その表も同じ階層構造を持つことになります。
XML要素の終了タグと同様、レベル・コマンドには対となるレベル終了コマンドがあります。子表は、親要素に対して定義されたレベル・コマンドとレベル終了コマンドの間に定義する必要があります。
XML要素は、1つのレベルのみと関連付けることができます。レベルに属するすべてのレコードは、そのレベルの表内か、そのレベルに属するネストされた表内に存在する必要があります。レベル終了コマンドは、最後の表の終わりに指定されます。
次に、EFTファイル・レコード・レイアウトのサンプル構造を示します。
-
FileHeaderRecordA
-
BatchHeaderRecordA
-
BatchHeaderRecordB
PaymentRecordA
PaymentRecordB
-
InvoiceRecordA
-
-
Batch FooterRecordC
-
BatchFooterRecordD
-
-
FileFooterRecordB
この表のレイアウトは次のとおりです。
この表のレイアウトは、コマンドとその値を示しています。
<LEVEL> : RequestHeader
<NEW RECORD> : FileHeaderRecordA
Data rows for the FileHeaderRecordA
<LEVEL> : Batch
<NEW RECORD> : BatchHeaderRecordA
Data rows for the BatchHeaderRecordA
<NEW RECORD> : BatchHeaderRecordB
Data rows for the BatchHeaderRecordB
<LEVEL> : Payment
<NEW RECORD> : PaymentRecordA
Data rows for the PaymentRecordA
<NEW RECORD> : PaymentRecordB
Data rows for the PaymentRecordB
<LEVEL> : Invoice
<NEW RECORD> : InvoiceRecordA
Data rows for the InvoiceRecordA
<END LEVEL> : Invoice
<END LEVEL>: Payment
<LEVEL> : Batch
<NEW RECORD> : BatchFooterRecordC
Data rows for the BatchFooterRecordC
<NEW RECORD> : BatchFooterRecordD
Data rows for the BatchFooterRecordD
<END LEVEL> : Batch
<LEVEL> : RequestHeader
<NEW RECORD> : FileFooterRecordB
Data rows for the FileFooterRecordB
<END LEVEL> : RequestHeader
同じレベルの複数のレコードは、同じ表に入れることができます。ただし、各表に定義できるレベルは1つのみです。前述の例では、BatchHeaderRecordAとBatchHeaderRecordBはどちらも同じ表で定義されています。ただし、PaymentのEND LEVELは、子要素Invoiceの後の独自の表で定義する必要があります。同じレベルの複数のレコードは、同じ表に入れることができますが、各表に定義できるレベルは1つのみです。
テンプレートでは、データ抽出の全レベルを使用する必要はありません。たとえば、ある抽出にRequestHeader > Batch > Payment > Invoiceというレベルが含まれる場合は、バッチと請求書のレベルのみを使用できます。ただし、レベルの階層は保持する必要があります。
表の階層は、レコードが印刷される順序を決定します。親XML要素では、それぞれ対応する親表のレコードが、表に出現する順序で印刷されます。システムは子表に対応する子XML要素のインスタンスをループし、指定された順序で子レコードを印刷します。その後、子を囲んでいる(レベル終了の)親表が存在する場合は、そのレコードを印刷します。
たとえば、前述のEFTテンプレート構造において、入力データ・ファイルに次のデータが含まれているとします。
-
Batch1
-
Payment1
-
Invoice1
-
Invoice2
-
-
Payment2
-
Invoice1
-
-
-
Batch2
-
Payment1
-
Invoice1
-
Invoice2
-
Invoice3
-
-
レコードの順序 | レコード・タイプ | 説明 |
---|---|---|
1 |
FileHeaderRecordA |
EFTファイルの1つのヘッダー・レコード |
2 |
BatchHeaderRecordA |
Batch1用 |
3 |
BatchHeaderRecordB |
Batch1用 |
4 |
PaymentRecordA |
Batch1、Payment1用 |
5 |
PaymentRecordB |
Batch1、Payment1用 |
6 |
InvoiceRecordA |
Batch1、Payment1、Invoice1用 |
7 |
InvoiceRecordA |
Batch1、Payment1、Invoice2用 |
8 |
PaymentRecordA |
Batch1、Payment2用 |
9 |
PaymentrecordB |
Batch1、Payment2用 |
10 |
InvoiceRecordA |
Batch1、Payment2、Invoice1用 |
11 |
BatchFooterRecordC |
Batch1用 |
12 |
BatchFooterRecordD |
Batch1用 |
13 |
BatchHeaderRecordA |
Batch2用 |
14 |
BatchHeaderRecordB |
Batch2用 |
15 |
PaymentRecordA |
Batch2、Payment1用 |
16 |
PaymentRecordB |
Batch2、Payment1用 |
17 |
InvoiceRecordA |
Batch2、Payment1、Invoice1用 |
18 |
InvoiceRecordA |
Batch2、Payment1、Invoice2用 |
19 |
InvoiceRecordA |
Batch2、Payment1、Invoice3用 |
20 |
BatchFooterRecordC |
Batch2用 |
21 |
BatchFooterRecordD |
Batch2用 |
22 |
FileFooterRecordB |
EFTファイルの1つのフッター・レコード |
新規レコード・コマンド
新規レコード・コマンドは、レコードの始めと前のレコード(存在する場合)の終わりを表します。
テンプレートの各レコードは、新規レコード・コマンドで始まる必要があります。レコードは、次の新規レコード・コマンドや表の終わりまで、またはレベル終了コマンドまで続きます。
レコードは、レベルに属している要素の集まりを表すコンストラクトです。レコード名は、XML入力ファイルに関連付けられていません。
表には、複数のレコードを含めることができるため、複数の新規レコード・コマンドが存在します。表のレコードは、すべて同じ階層レベルにあります。これらは、表に指定されている順序で出力されます。
新規レコード・コマンドは、名前をパラメータとして使用できます。この名前はレコードの名前になります。レコード名はレコード・タイプとも呼ばれています。この名前は、生成されたレコードのインスタンスを数えるCOUNT関数で使用できます。詳細は、「関数」のCOUNT関数を参照してください。
連続した新規レコード・コマンド(つまり空のレコード)は使用できません。
昇順ソートおよび降順ソート・コマンド
レベルのインスタンスをソートするには、昇順ソートおよび降順ソート・コマンドを使用します。
ソートする要素は、カンマ区切りリストで入力します。これはオプションのコマンドです。このコマンドを使用する際には、(最初の)レベル・コマンドの直後に指定する必要がありますが、この場合、レコードが複数の表で指定されていても、そのレベルのすべてのレコードに適用されます。
表示条件コマンド
表示条件コマンドは、囲まれているレコードやデータ・フィールド・グループをいつ表示するかを指定します。このコマンドのパラメータはブール式です。この式がTrueと評価された場合、レコードまたはデータ・フィールド・グループが表示されます。それ以外の場合は、それらのレコードまたはデータ・フィールド・グループがスキップされます。
表示条件コマンドは、レコードまたはデータ・フィールド・グループのいずれかで使用できます。レコードで使用する場合、表示条件コマンドは新規レコード・コマンドの後に指定する必要があります。データ・フィールド・グループで使用する場合、表示条件コマンドはデータ・フィールド行の後に指定する必要があります。この場合、表示条件はレコードの終わりまで、残りのすべてのフィールドに適用されます。
連続した表示条件コマンドは、AND条件としてマージされます。マージされた表示条件は、囲まれている同じレコードやデータ・フィールド・グループに適用されます。