前のトピック: value 文次のトピック: ComponentID グループ


テーブルの作成

テーブルは、グループ インスタンスの配列で構成されます。 インスタンスはテーブルの行です。 各行の属性の値はコンポーネントによって提供されるため、多くの場合、テーブルを定義するには、キーと共にグループを定義するだけです。 ただし、.MIF ファイルそのものにテーブルの値を指定して、属性定義内で値を定義すると効果的な場合もあります。

テーブル作成メカニズムにより、グループの定義がグループ内のデータから切り離されます。 このメカニズムでは、すでに定義されているグループをテンプレートとして使用して MIF データベースに値を格納します。

テーブルを作成するための構文は、以下のとおりです。

start table
	name = "table name"
	id = nnn
	class = "class string"
	{ v1[,v2 ...] }
	[ { vn[,vm ...] } ]
end table

name 文でこのテーブルを記述する必要があります。 必須の id 文では、このコンポーネント内のほかのすべてのグループおよびテーブル全体で一意の整数値を指定します。 必須の class 文では、テンプレートとして使用される定義済みのグループを指定します。

テーブル行では、上記のように値を指定し、カンマで区切って波カッコ「{」と「}」で囲みます。 値のリストは属性 ID の順に(最も小さい ID を持つ属性の値を最初に)左から右に指定します。 リスト内の値を省略した場合、それに対応する属性値(テンプレート内に定義されている場合)が「デフォルト」値として使用されます。 テンプレート内にデフォルト値が指定されていない場合に属性値を省略することは、禁止されています。 カンマの数が足りない行は、必要な数の後続カンマがある行として扱われます。このため、テンプレートで指定された値が、行内のその他の属性に対しても使用されます。

例: すでに定義されているグループを使用したテーブルの作成

start table
	Name = "Software Table"
	Class = "DMTF|Software Example|1"
	Id = 42
	{"Circus", "4.0a"}
	{"Disk Blaster", "2.0c"}
	{"Oleo", "3.0"}
	{"Presenter", "1.2"}
end table

この例では、4 行のテーブルが生成されます。 行が取り込まれるとき、グループ定義内の value 文が、行そのものとしてでなくデフォルト値として使用されます。

キーを構成する属性の組み合わせに対して一意の値が指定されていない場合に行を取り込むことは不適切です。 サービス レイヤは、行の取り込み中に、一意のキーが指定されていない MIF を拒否する必要があります。

テーブル定義は、その参照先のグループ定義の後に指定する必要があります。 グループは、ID 文でなく key 文を使用して指定されたグループである必要があります。 1 つのテンプレートから複数のテーブルを作成できますが、各テーブルはそれぞれ異なる ID を持つ必要があります。