The range attribute allows a numeric range to be specified for a slot when a numeric value is used in that slot. If a numeric value is not used in that slot, then no checking is performed.
Syntax
<range-attribute> ::= (range <range-specification> <range-specification>) <range-specification> ::= <number> | ?VARIABLE
Either integers or floats can be used in the range specification
with the first value to the range attribute signifying the minimum
allowed value and the second value signifying the maximum value.
Integers will be temporarily converted to floats when necessary
to perform range comparisons. If the keyword ?VARIABLE is used
for the minimum value, then the minimum value is negative infinity
(_). If the keyword ?VARIABLE is used for the maximum value, then
the maximum value is positive infinity (+_). The range attribute
cannot be used in conjunction with the allowedvalues, allowednumbers,
allowedintegers, or allowedfloats attributes.