Input 節は、関連付けられたグループを N 回反復するために
データプロバイダーのグループステートメントで使用されます。N は、
入力から取得されるエレメントの数であり、データベーステーブルではなく、複数の値を取り得る変数になります。
これらの変数の値をスキャンすると、変数ごとに 1 つのグループアイテムが出力されます。つまり、変数に対する反復処理ごとに、グループに対する反復処理が行われます。そのため、変数の反復情報をグループ用の入力として使用できます。
Input <for キーワードなしの反復実行> | <for キーワードなしの Input>
構文の表記規則の表示
入力値の説明:
<for キーワードなしの反復実行>
反復処理のための For コマンドと類似しています。次のように定義されます:
&var
= <開始番号> to <終了番号>。
ForIn
For in コマンドと類似しています。次のように定義されます:
&var
in <SDT コレクション>。
通常、データベースだけでなく、他の種類の入力データが必要です。これには、プロシージャーまたはデータプロバイダーの出力などがあります。このようなデータを扱うには、一度割り当てると、通常どおりに処理ができる変数を使用します。
たとえば、他のデータプロバイダーが返す顧客と同じエリアに住むクライアントのコレクションを出力するデータプロバイダーが必要であるとします。さらに、既に宣言されたデータプロバイダーである DPSpendsMoreClient が、データベース内の売り上げの多い顧客の国、都市、および居住エリア情報を含む
顧客の SDT を返すとします。
Clients
{
&Customer = DPSpendsMoreClient()
Client
where CountryId = &Customer.CountryId
where CityId = &Customer.CityId
where CustomerNeighborhood = &Customer.Neighborhood
{
Name = CustomerName
Address = CustomerAddress
Phone = CustomerPhone
}
}
このように、&Customer が通常どおり他のデータプロバイダーから取得されて使用されています。単純なデータタイプでなく、プロシージャーやデータプロバイダーが返すコレクションを扱う必要がある場合や、一定の回数だけ繰り返す必要がある場合を考えてみます。このような場合は、Input 節を使います。
固定値の組み合わせがより簡単な方法です。たとえば、次のように月を出力するデータプロバイダーがあるとします:
VerySimple
{
Month Input &i = 1 to 12
{
MonthNumber = &i
}
}
注: これは、プロシージャー型言語における「For &i = 1 to 12 」と類似しています。
より高度な入力としては、次に示すような SDT
コレクションがあります。
CustomersFromAnotherDataProvider
{
&CustomersSDT = GetCustomers() // Customers コレクションを出力するデータプロバイダー
Customer Input &Customer in &CustomersSDT
{
Id = &Customer.Code
Name = &Customer.Name
}
}
つまり、すべての
Collection 変数を反復させるには、
Input 節で処理する必要があるということです。
さまざまな入力ソースについては、次を参照してください:
Data Provider: 入力。