The item category is used to assign membership of data items to categories. This category forms the bridge between the category and data item levels of abstraction. The key data item in this category is the full STAR data item name, _item.name. This name contains both the category and data item identifiers, and is thus a unique identifier for the data item. The category identifier, _item.category_id, is included in this category as a separate mandatory data item. This has been done to provide an explicit reference to those categories that use the category identifier as a basis.
One could alternatively use the category and item identifiers as the basis for this category rather than the full STAR name, and thus eliminate the redundant specification of the category identifier. The full STAR name has been used here in order to provide compatibility with existing applications.
The item category also includes a code to indicate if a data item is mandatory in a category and therefore must be included in any tuple in the category. This code, _item.mandatory_code, may have three values: yes, no and implicit. The latter value indicates that the item is mandatory, but that the value of this item may be derived from context. In the case of an item name or a category identifier, these values can be obtained from the current save frame name. Implicit specification dramatically simplifies the appearance of each dictionary definition because it avoids the repetitive declaration of item names and category identifiers which are basis components for most categories.
The item category is presented in the next section of DDL.
In this section, the definition of _item.name illustrates
an important design feature of this DDL. Although the
data item _item.name is the basis for all of the item
level categories, its definition and properties need only
be specified at a single point. Here,
the data items that occur in multiple categories are defined
only in the parent category. In certain situations, a child
data item may be used in a manner which requires a description
distinct from the parent data item. For instance,
_item_linked.parent_name and _item_linked.child_name
are both data item names as well as children of _item.name, but
clearly the manner in which these items are used in the item_linked
category (Section
) requires additional description.
It is important to note that although the design of this DDL supports
the definition of data items in multiple categories within the
parent category, it is also possible to provide separate complete
definitions within each category.
The DDL for the item category is given in the following section.
save_ITEM
_category.description
;
Attributes which describe the characteristics of a data item.
;
_category.id item
_category.mandatory_code no
_category_key.name '_item.name'
loop_
_category_group.id 'ddl_group'
'item_group'
save_
save__item.name
_item_description.description
;
Data name of the defined item.
;
_item_type.code name
loop_
_item.name
_item.category_id
_item.mandatory_code
'_item.name' item implicit
'_category_key.name' category_key yes
'_item_aliases.name' item_aliases implicit
'_item_default.name' item_default implicit
'_item_dependent.name' item_dependent implicit
'_item_dependent.dependent_name' item_dependent yes
'_item_description.name' item_description implicit
'_item_enumeration.name' item_enumeration implicit
'_item_examples.name' item_examples implicit
'_item_linked.child_name' item_linked yes
'_item_linked.parent_name' item_linked implicit
'_item_methods.name' item_methods implicit
'_item_range.name' item_range implicit
'_item_related.name' item_related implicit
'_item_related.related_name' item_related yes
'_item_type.name' item_type implicit
'_item_type_conditions.name' item_type_conditions implicit
'_item_structure.name' item_structure implicit
'_item_sub_category.name' item_sub_category implicit
'_item_units.name' item_units implicit
loop_
_item_linked.child_name
_item_linked.parent_name
'_category_key.name' '_item.name'
'_item_aliases.name' '_item.name'
'_item_default.name' '_item.name'
'_item_dependent.name' '_item.name'
'_item_dependent.dependent_name' '_item.name'
'_item_description.name' '_item.name'
'_item_enumeration.name' '_item.name'
'_item_examples.name' '_item.name'
'_item_linked.child_name' '_item.name'
'_item_linked.parent_name' '_item.name'
'_item_methods.name' '_item.name'
'_item_range.name' '_item.name'
'_item_related.name' '_item.name'
'_item_related.related_name' '_item.name'
'_item_type.name' '_item.name'
'_item_type_conditions.name' '_item.name'
'_item_structure.name' '_item.name'
'_item_sub_category.name' '_item.name'
'_item_units.name' '_item.name'
save_
save__item.mandatory_code
_item_description.description
;
Signals if the defined item is mandatory for the proper description
of its category.
;
_item.name '_item.mandatory_code'
_item.category_id item
_item.mandatory_code yes
_item_type.code code
loop_
_item_enumeration.value
_item_enumeration.detail
yes 'required item in this category'
no 'optional item in this category'
implicit 'required item but may be determined from context'
save_