データプロバイダーのサブグループステートメントは、データプロバイダーの出力ベースの宣言型言語のコンポーネントのうちの 1 つです。サブグループとは、宣言型においてプロシージャー型言語のサブルーチンと同等のものです。宣言したステートメントは、Subgroup エレメントを挿入することによって、データプロバイダーのエレメントステートメントの代わりに呼び出すことができます。
<サブグループステートメント>::= |
subgroup <サブグループ名>( [ <パラメーターのリスト> ] ) |
|
<メイングループのリスト> |
|
endsubgroup |
入力値の説明:
<メイングループのリスト> ::= <グループ名> | <メイングループのリスト> <グループ名>
この後に続く、データプロバイダーのグループステートメントの一覧です。
サブグループは、データプロバイダーのソースの末尾 (すべてのグループステートメントの後) でまとめて定義する必要があります。
Customers
{
Customer
{
Code = CustomerId
Name = CustomerName
AddressGroup.Insert(CustomerAddress, CityName)
}
}
SubGroup AddressGroup(&Street, &City)
Address
{
Street = &Street
City = &City
}
EndSubGroup
サブグループは内部的なもの (上記) と外部的なもの (別のデータプロバイダーとして定義) があります。たとえば、Street および City を含む Address の SDT がある場合、データプロバイダーの GetAddress は次のようになります:
Output: Address
Collection: False
Rules: parm( &Street, &City );
Address
{
Street = &street
City = &city
}
次のように前述の GetCustomers データプロバイダーを宣言できます:
Customers
{
Customer
{
Code = CustomerId
Name = CustomerName
Address = GetAddress( CustomerAddress, CityName )
}
}
Customer の出力 SDT である Address のメンバーには、Address の SDT データタイプ (GetAddress の出力) が含まれている必要があります。含まれていない場合は、エラーが表示されます。 サブグループの「挿入」と、データプロバイダーを呼び出すエレメントの「割り当て」の違いに注意してください。 この使い方の 1 つに再帰データプロバイダーがあります。
|