Data Types

All constant data is one of three main literal data types: strings, numbers, or Booleans. The string data type includes two sub-types: sets and LDAP distinguished names. The number data type includes one sub-type: dates. All functions and operations result in one of these types or their sub-types.
sm1252sp1
All constant data is one of three main literal data types: strings, numbers, or Booleans. The string data type includes two sub-types: sets and LDAP distinguished names. The number data type includes one sub-type: dates. All functions and operations result in one of these types or their sub-types.
  • Strings
    • Sets
    • LDAP Distinguished Names
  • Numbers
    • Dates
  • Booleans
In addition to the literal data types, there are data types that function as variables:
  • User Attributes
  • Named Expressions
Strings
Strings represent character data as a string of zero or more characters enclosed by a pair of single or double quotes. String values are constants that can be manipulated by the built-in operators and functions. For example, strings can be converted to another data type or concatenated.
Strings that start with an optional positive or negative sign and contain the characters "0" through "9" can be converted to number values. The strings "TRUE" and "YES" (or "true" and "yes") can be converted to the Boolean value TRUE. All other string values are converted to FALSE. Two strings can be concatenated. In concatenation, the beginning of the second string is joined to the end of the first string.
Sets and LDAP distinguished names (DNs) are special cases of the string data type. A set is a string of elements that are separated by the caret character, for example, 'element1^element2'. Each element in the set is a string.
An LDAP DN is a simple string that uniquely identifies an entry in an LDAP directory and whose format is defined by the LDAP specification.
Numbers
Numbers must be integers or whole numbers with an optional leading positive or negative sign. Four-byte integers are supported or whole numbers that range from -231 to 231. Decimal points are ignored. Number values are constants that can be manipulated by the built-in operators and functions. For example, numbers can be converted to another data type.
Numbers can be converted to strings that start with an optional negative sign and contain only the characters "0" through "9". Numbers can also be converted to Boolean values. Non-zero numbers are converted to TRUE; zero is converted to FALSE.
Dates are a special case of the number data type. They are represented as the number of seconds that have passed since January 1, 1970.
There are numerous functions that manipulate dates. For example, the DOW function accepts the numeric representation of a date and returns a number in the range 0-6 that corresponds to a day of the week. There are also functions that convert a date in string format to a number and a number representation of a date to a string.
Booleans
Booleans are one of two values: TRUE or FALSE. Boolean values are constants that can be compared and manipulated by the built-in operators and functions. For example, Booleans can be converted to another data type.
When a Boolean value is converted to a number value, TRUE is converted to 1, and FALSE is converted to 0. When a Boolean value is converted to a string value, TRUE is converted to "TRUE" and FALSE is converted to "FALSE".
User Attributes
User attributes have names and values. User attribute
names
are
unquoted
. User attribute
values
are strings and are
quoted
. User attribute names must conform to the following rules:
  • They are not case-sensitive.
  • The first character must be a letter.
  • They contain only US-ASCII alphabetic characters, numeric characters, and the underscore character.
A user attribute name functions as a variable data type, not as a literal. When a user attribute name is encountered, the corresponding attribute value is retrieved from the user directory. When an attribute has multiple values, they are returned as a set. A set is a string of elements separated by the caret character, for example, 'value1^value2'. Each element in the set is a string.
Named Expressions
There are two types of named expressions: virtual user attributes and user classes.
Virtual user attributes differ from user attributes. Unlike user attributes, which are stored in the user directory as strings, virtual user attributes name expressions that are calculated at runtime and that result in a string, number, or Boolean value. Also unlike user attributes, virtual user attributes are read-only.
User classes are a special case of virtual user attributes. Like virtual user attributes, user classes name expressions that are calculated at runtime. Unlike virtual user attributes, user classes name expressions that test membership in a user group or directory and that result in a Boolean value only.
Both virtual user attribute names and user class names must conform to the following rules:
  • They are not case-sensitive.
  • In the case of virtual user attributes, the first character must be the pound sign (#).
  • In the case of user classes, the first character must be the at sign (@).
  • The second character must be a letter or an underscore.
  • The remaining characters must be US-ASCII alphabetic characters, numeric characters, or the underscore character.
sm1252sp1
Active expressions and named expressions are not the same. While both types of expressions are evaluated at run-time, they differ in the following ways:
  • While active expressions are Boolean expressions, named expressions can return a string, number, or Boolean value.
  • While active expressions are referenced as is and must be reentered each time that they are used, named expressions are referenced by name and can be referenced from anywhere and reused.