Aspect Dimension (GNAT Reference Manual)

### 3.10 Aspect Dimension ¶

The `Dimension` aspect is used to specify the dimensions of a given subtype of a dimensioned numeric type. The aspect also specifies a symbol used when doing formatted output of dimensioned quantities. The syntax is:

    with Dimension =>
      ([Symbol =>] SYMBOL, DIMENSION_VALUE {, DIMENSION_Value})

    SYMBOL ::= STRING_LITERAL | CHARACTER_LITERAL

    DIMENSION_VALUE ::=
      RATIONAL
    | others               => RATIONAL
    | DISCRETE_CHOICE_LIST => RATIONAL

    RATIONAL ::= [-] NUMERIC_LITERAL [/ NUMERIC_LITERAL]

This aspect can only be applied to a subtype whose parent type has a `Dimension_System` aspect. The aspect must specify values for all dimensions of the system. The rational values are the powers of the corresponding dimensions that are used by the compiler to verify that physical (numeric) computations are dimensionally consistent. For example, the computation of a force must result in dimensions (L => 1, M => 1, T => -2). For further examples of the usage of this aspect, see package `System.Dim.Mks`. Note that when the dimensioned type is an integer type, then any dimension value must be an integer literal.