4.7. КВАЛИФИЦИРОВАННЫЕ ВЫРАЖЕНИЯ

Квалифицированное выражение используется для явного указания типа и, возможно, подтипа операнда, заданного выражением или агрегатом.

квалифицированное-выражение ::= обозначение-типа' (выражение) | обозначение-типа'агрегат

Тип операнда должен совпадать с базовым типом обозначения типа. Значение квалифицированного выражения — это значение операнда. Вычисление квалифицированного выражения выдает операнд и проверяет, принадлежит ли его значение подтипу, заданному в обозначении типа. При отрицательном результате проверки возбуждается исключениеCONSTRAINT_ERROR.

Примеры:

type MASK is (FIX, DEC, EXP, SIGNIP);type CODE is (FIX, CLA, DEC, TNZ, SUB);PRINT (MASK'(DEC)); -- DEC типа MASK PRINT (СОDЕ'(DЕC)); -- DЕС типа CODEfor J in CODE'(FIX) .. CODE'(DEC) loop ... — квалификация необходима либо для FIX, либо для DEC for J in. CODE range FIX .. DEC loop ... — квалификация не нужна for J in CODE'(FIX) .. DEC loop ... — квалификация для DEC не нужнаDOZEN'(1 | 3 | 5 | 7 => 2, others => 0) -- см. 4.6

Примечание. Когда тип литерала перечисления или агрегата неизвестен из контекста, квалифицированное выражение может быть использовано для явного установления типа. Например, совмещенный литерал перечисления должен быть квалифицирован в следующих случаях: при использовании его в качестве параметра в вызове совмещенной подпрограммы, которая не может быть идентифицирована на основе типов остальных параметров и типа результата; в отношении, в котором оба операнда — совмещенные литералы перечисления; в массиве или диапазоне параметра цикла, в которых обе границы — совмещенные литералы перечисления. Явная квалификация используется также для определения совмещенной функции без параметров или для ограничения значения данным подтипом.

Ссылки: агрегат 4.3, базовый тип 3.3, возбуждение исключений 11, вызов подпрограммы 6.4, выражение 4.4, граница диапазона 3.5, диапазон 3.3, исключение CONSTRAINT_ERROR 11.1, контекст разрешения совмещения 8.7, литерал перечисления 3.5.1, массив 3.6, обозначение типа 3.3.2, отношение 4.4, параметр цикла 5.5, подпрограмма 6, подтип 3.3, совмещение 8.5, тип 3.3, функция 6.5.