next up previous contents
След.: Встроенные типы Выше: Объекты данных Пред.: Неявная типизация   Содержание


Разновидности типа

Все типы могут иметь разновидности, различающиеся диапазоном, точностью и другими показателями, и описываемых параметрами типа, которые представляют собой натуральные числа. Например,

REAL(1) A

REAL(KIND=2) B

Ключевое слово KIND не обязательно. Значения параметров типа стандарт не фиксирует (поэтому целесообразно использовать их в виде именованных констант).

Функция KIND(X) возвращает параметр типа любого объекта X. Удобно задавать тип в форме KIND=KIND(1.D0), KIND=KIND('Ю') и т.п.

Функция SELECTED_INT_KIND(N) возвращает наименьшее значение параметра типа для целочисленных данных, которое обеспечивает диапазон от $ -10^N$ до $ 10^N$ и значение $ -1$ , если такой диапазон невозможен.

Функция SELECTED_REAL_KIND(D,P) возвращает наименьшее значение параметра типа для вещественных данных, которое обеспечивает точность не менее, чем $ D$ знаков и максимальным значением показателя степени не менее $ P$ . Если запрашиваемая точность не может быть обеспечена, возвращается отрицательное значение. Подробнее см. § 13.

Для символьного типа, помимо разновидности KIND, есть еще параметр длины LEN. Функция SELECTED_CHAR_KIND(кодировка) возвращает значение параметра типа для символьных данных, обеспечивающее данную кодировку. Возможные значения кодировки -- строковые константы 'ASCII', 'ISO_10646' и 'DEFAULT'.

Для производных типов могут указываться многочисленные параметры разновидности и «длины» типа, имеющие произвольный смысл.

Чтобы указать параметр разновидности типа констант, применяется символ подчеркивания _ после константы, после которого идет параметр типа. Для символьных констант (строк) параметр типа и символ подчеркивания предшествуют константе. Например [2]

INTEGER:: SHORT = 2

7.40_4; 740_SHORT; CYRILLIC_'Символьная константа'

Определить объем, необходимый для хранения типа данной разновидности, позволяет одна из форм оператора INQUIRE (см. §9.10, посвященный вводу/выводу).

Помимо целочисленного выражения, задающего параметр типа, возможно указание в качестве значения символов двоеточия и звездочки. Двоеточие означает, что параметр типа имеет отложенное значение; он применяется при объявлении указателей и размещаемых объектов данных, подразумевая, что значение параметра будет определено при размещении объекта, присваивании (в том числе присваивании указателю) или при связи фактического аргумента процедуры с формальным. Звездочка применима при определении параметра длины и означает, что этот параметр перенимаемый. Применяется для формальных аргументов процедур (в этом случае значение параметра определяется фактическим аргументом), в конструкции SELECT TYPE, а также при определении именованных констант символьного типа (длина определяется длиной значения).

Определение разновидности типа объектов данных встроенных и производных типов возможно с помощью функций KIND и LEN, а также посредством синтаксиса, аналогичного доступу к полям структур, например:

R%KIND ! R вещественного типа

TEXT%LEN ! TEXT символьного типа

A%m ! M типа MATRIX, см. ниже



Ilya A. Chernov 2012-12-19
X