Attributes
in
SAS/AF software enable
you to perform data validation without having to add code to your
frame SCL entries. The process behind attribute validation depends
on the attribute type and on how you specify some of the attribute
metadata.
You can assign a list
of valid values to a character attribute. Valid values restrict the
value of an attribute to a set of values that you specify for the
attribute. The values are stored in the ValidValues metadata item
for the attribute. The validation occurs when some action attempts
to set the attribute value (that is, when the _setAttributeValue method
runs). At build time, the validation is performed when you set the
attribute value with the
Properties window.
At run time, the validation occurs when you assign a new value from
SCL code. For example, specifying
Yes
and
No
as the valid values for an
attribute ensures that only those two values are used at build time
and run time.
To define valid values
for a component's attribute using the Class Editor:
-
Select the
Attributes
node, and then select the character attribute
for which you want to add valid values.
Note: If the attribute is inherited,
you must override it by selecting
Override from the pop-up menu.
-
In the Valid Values
cell, enter the list of valid values. Use either a space or a comma
to separate single-word items, and use a comma (,) to separate multiple-word
items. For example,
Red Blue Green
or
Crimson Red, Midnight Blue, Forest Green
You can also use the
Valid Values editor to add valid values. Click the ellipsis (...)
button to open the Valid Values editor.
See the
SAS/AF online
Help for more information on adding valid values in the Class Editor.
For more information on the ValidValues metadata item, see
Attributes.
Although the Class Editor
displays the defined valid values in the combo box that is displayed
when you select the Initial Values cell of an attribute, no validation
is performed on the initial value that you select. It is the responsibility
of the component developer to assign a valid value to the InitialValue
metadata item.
You may want to use
an SCL entry to perform programmatic validation or to match values
against items in an SLIST entry. To assign an SCL or SLIST entry to
perform validation for a character attribute, use the Class Editor
to set Valid Values to the appropriate entry name. Note that you must
preface the catalog entry name with a backslash (\) character.
For example, the
defaultAttribute
attribute that all components inherit
from
sashelp.fsp.Object.class
has its
ValidValues metadata item set to
sashelp.classes.defaultattributevalues.scl
to run the specified SCL entry when the value of
defaultAttribute
is set. The SCL entry contains the
following code, which returns a list of all attributes that are defined
on the object:
/* Include this ENTRY statement to process ValidValues */
entry list:list
optional= objectId:object
attributeName:char
environment:char(2);
dcl num rc;
INIT:
attributesList=makelist();
objectID._getAttributes(attributesList, 'Y');
do i=1 to listlen(attributesList);
rc=insertc(list, nameitem(attributesList,i), -1);
end;
rc=dellist(attributeList, 'Y');
rc=sortlist(list);
return;
The
defaultattributevalues.scl
entry executes when the
defaultAttribute
attribute of any object is set. For details on the ENTRY statement
used in this example, see
Creating a Custom Attribute Editor.