Un rango es un subconjunto de valores de un tipo escalar especificado por un límite inferior y un límite superior. Si el límite inferior es L y el límite superior es R, el rango "L .. R" comprende todos los valores del tipo en cuestión que sean mayores o iguales que L y menores o iguales que R. Si L > R el rango es nulo.
range_constraint ::= range rango
rango ::= range_attribute_reference
| simple_expression .. simple_expression
Ejemplos de rango como simple_expression .. simple_expresion:
-127 .. 128
A .. A + 10
0.0 .. 2.0
1 .. 0 -- rango nulo
Ejemplos de rango como range_attribute_reference (véase expresiones cualificadas):
Integer'Range -- rango Integer'First .. Integer'Last Mat'Range(1) -- rango 1 .. 5, supuesto que: -- Mat : array (1 .. 5, 1 .. 10) of Integer;
Ejemplos de restricción de rango (véase tipos enteros y tipos reales):
range -128.0 .. +128.0 range Integer'First .. Integer'Last - 1