コマンド行
コマンド行には、コマンド名とコマンド・パラメータの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条件としてマージされます。マージされた表示条件は、囲まれている同じレコードやデータ・フィールド・グループに適用されます。