Additional ``private'' attribute lists may be created when needed, e.g. in the context of a list or a specific mapper.
Expressions
In Enif, most functionalities which access network data are not implemented by accessing network attributes directly, as is the case in EMME/2. Rather, wherever possible, the available functionalities (such as selecting subnetworks, plotting or listing network related data) are based on expressions.
In general, an expression is made up of an arbitrary combination of operands, operators and calls to intrinsic functions, using syntax rules compatible with those used by the expressions in EMME/2. In practice, however, an expression is often as simple as a single constant value (e.g. ``1'') or an attribute name (e.g. ``volau'').
In contrast to EMME/2, where expressions are limited to handle exclusively numerical values, Enif expressions support both numerical and string values. A strict distinction is made between numerical and string values. Each operator has well defined operand types and each intrinsic function requires its arguments to be of the specified types. Special intrinsic functions can be used to convert strings to numbers and vice versa, should this become necessary.
Each operand of an expression must correspond to one of the following:
- a numeric value (e.g. 0, 3.14159),
- a constant string enclosed in double quotes (e.g. "abc"),
- a numeric or string attribute from one of the associated attribute lists (e.g. volau),
- a valid subexpression enclosed in parentheses (e.g. (volau+volad)),
- the result of a call to an intrinsic function (e.g. max(speed,60).






