В ФОРТРАНе различают данные шести типов: целые, вещест­венные, двойной точности, комплексные, логические и текстовые. Каждый тип предназначен для вполне определенных целей и мо­жет иметь свое особое внутреннее представление. Поэтому интер­претация операций над данными существенно зависит от типов этих данных. Тип функции определяет тип того значения, кото­рое доставляется в качестве результата в выражение, содержащее указатель этой функции.

  1. Связь данного с его тином. С именем, используемым для идентификации данного или функции, связывается вполне опре­деленный тип данных. Последовательность символов, образующих константу, определяет как значение, так и тип этой константы.

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

Для символического имени тип данных может быть установлен указанием его в объявлении типа (п. 7.2.1.6) для любого типа данных, кроме текстового. Такое явное объявление аннулирует неявную связь, устанавливаемую для целого и вещественного ти­пов (п. 5.3).

Не существует способа установления связи символического имени с текстовым типом данных, поэтому данные этого типа, за исключением констант, идентифицируются с помощью имени од­ного из остальных типов (см., например, п. 8.4.2.).

(Измененная редакция, Изм. № I).

  1. Свойства данных разных типов. В следующих разделах определяются математические свойства и свойства представлений каждого из шести типов данных. Значение нуль не считается ни положительным, ни отрицательным для данных типов целый, вещественный и двойной точности.

    1. Тип целый. Целое данное — это всегда точное пред­ставление целого значения. Оно может принимать только целые (положительные, отрицательные и нулевое) значения.

    2. Тип вещественный. Вещественное данное — это процес­сорное приближение вещественного значения. Оно может принимать положительные, отрицательные и нулевое значения.

    3. Тип двойной точности. Данное двойной точности — это процессорное приближение вещественного значения. Оно может принимать положительные, отрицательные и нулевое значения. Точность приближения, не определяемая здесь, должна быть больше, чем для типа вещественный.

    4. Тип комплексный. Комплексное данное — это процессор­ное приближение комплексного значения. Это приближение пред­ставлено в виде упорядоченной пары вещественных данных. Пер­вый элемент пары представляет действительную, а второй — мни­мую часть комплексного числа. Соответственно, каждый элемент имеет ту же точность приближения, что и вещественное данное.

    5. Тип логический. Логическое данное может принимать одно из двух логических значений: «истина» или «ложь».

    6. Тип текстовый. Текстовое данное — это последователь­ность символов. Эта последовательность может состоять из любых символов, допускающих представление в процессоре. В текстовом данном символ пробела является допустимым и значащим.

(Измененная редакция, Изм. № 1).

  1. ИДЕНТИФИКАЦИЯ ДАННЫХ И ПРОЦЕДУР

Имена используются как для ссылок на данные и процедуры, так и для любой другой их идентификации.

Термин «ссылка» используется при такой идентификации дан­ного, когда подразумевается, что текущее значение этого данного становится доступным при выполнении предложения (оператора), содержащего эту ссылку. Если данное идентифицируется, но его значение не обязательно становится доступным, то говорят, что данное именуется. Один случай, когда данное именуется, пред­ставляет особый интерес — это когда данному присваивается зна­чение и тем самым производится определение или переопределе­ние (значения) данного, т. е. данное либо впервые получает неко­торое конкретное значение, либо ему присваивается новое значе­ние. В случае процедуры термин «ссылка» означает, что действия, определяемые этой процедурой, станут доступными при выполне­нии предложения (оператора), содержащего эту ссылку.

Полное и строгое объяснение понятий «ссылка» и «определе­ние» (включая и «переопределение») содержится в разд. 10.

  1. Имена данных и процедур. С помощью имен данных иден­тифицируются константы, переменные, массивы или элементы мас­сивов, а также блоки (п. 7.2.1.3). С помощью имен процедур идентифицируются функции и подпрограммы.

    1. Константы. Константа является данным, которое всегда определено в процессе выполнения программы и не может быть переопределено (т. е. изменено). Для каждого типа данных име­ются свои правила записи констант.

Среди числовых констант (чисел) типа целый, вещественный и двойной точности различаются число без знака и число со зна­ком. Последнее представляет собой число без знака, непосредст­венно перед которым расположен знак плюс или минус. Термином «число» обозначается как число со знаком, так и число без знака.

  1. Целое число без знака. Целое число без знака записы­вается как непустая последовательность цифр. Значение констан­ты этого вида в точности равно числу, изображаемому в десятич­ной системе счисления этой константой.

  2. Вещественное число без знака. Основной формой записи вещественного числа без знака является смешанная дробь, под которой понимается запись вида

P.Q

(где Р — целая часть, a Q — дробная часть). Как целая, так и дробная часть есть целое без знака. Одна из этих частей (либо целая, либо дробная) может отсутствовать, т. е. представляться пустой последовательностью цифр. Значение константы этого ви­да есть процессорное приближение того числа, которое в десятич­ной системе счисления записывается в виде указанной смешан­ной дроби.

Десятичная экспонента изображается буквой Е, за которой следует целое число (без знака или со знаком). Десятичная эк­спонента является множителем (применяемым к числу, записан­ному непосредственно перед десятичной экспонентой), равным приближению результата возведения числа десять в степень, указанную целым числом, записанным после буквы Е.

Вещественное число без знака — это либо смешанная дробь, либо смешанная дробь, за которой следует десятичная экспонен­та, либо целое число без знака, за которым следует десятичная экспонента.

  1. Число двойной точности без знака. Экспонента двой­ной точности записывается и трактуется аналогично десятичной экспоненте, за исключением того, что вместо буквы Е использует­ся буква D.

Число двойной точности без знака записывается как смешан­ная дробь, за которой следует экспонента двойной точности, ли­бо как целое число без знака, за которым следует экспонента двойной точности.

  1. Комплексное число. Комплексное число задается в виде упорядоченной пары вещественных чисел (каждое из которых может быть либо вещественным без знака, либо вещественным со знаком), разделенных запятой и заключенных в скобки. Значе­нием такой константы является приближение комплексного числа, представленного указанной парой чисел, первое из которых пред­ставляет действительную, а второе — мнимую часть комплексного числа.

  2. Логическая константа. Логические константы «истина» и «ложь» записываются как .TRUE, и .FALSE, соответственно.

  3. Текстовая константа. Запись текстовой константы име­ет вид

nHhlh2...hn

(п—целое без знака (п>0); каждое — некоторый символ). Последовательность из п символов, которая следует за буквой Н, и образует собственно текстовое данное — константу. После бук­вы Н могут быть записаны любые п символов, представление ко­торых допустимо в процессоре. В этой последовательности сим­волов, изображающей текстовое данное, символ пробела является значащим. Константа этого типа может встречаться только в спис­ке фактических параметров оператора вызова подпрограммы и в объявлении начальных данных.

(Измененная редакция, Изм. № 1).

  1. Переменная. Переменная есть данное, идентифицируе­мое символическим именем (п. 3.5). На это данное можно ссы­латься и его можно определять (т. е. присваивать ему значение).

  2. Массив. Массив есть упорядоченный набор данных, име­ющий одно, два или три измерения. Массив идентифицируется символическим именем. Идентификация этого упорядоченного на­бора данных как единого целого достигается посредством ис­пользования имени массива.

    1. Элемент массива. Элементом массива является одна из компонент набора данных, образующего массив. Элемент массива идентифицируется указанием имени массива, непосред­ственно за которым следует дополнительная конструкция, назы­ваемая индексом. Индекс указывает на конкретный элемент массива.

На элемент массива можно ссылаться и его можно опреде­лять.

  1. Индекс. Индекс представляет собой заключенный в скобки список индексных выражений. Если индексных выражений несколько, то они отделяются друг от друга запятой. Число ин­дексных выражений должно соответствовать объявленной раз­мерности массива (п. 7.2.1.1), за исключением вхождения имени элемента массива в объявление эквивалентности (п. 7.2.1.4). Идентифицируемый элемент массива определяется при помощи функции линеаризации (п. 7.2.1.1.1), используя вычисленные зна­чения всех индексных выражений.

  2. Индексные выражения. Индексное выражение записы­вается в виде одной из следующих конструкций:

С* V+K

С* V—К

С* V
V + K
V—К
V
к

где С и К — целые без знака, V — ссылка на переменную типа целый (см. разд. 6 относительно правил вычисления выражений; пп. 10.2.8 и 10.3 относительно требований на использование пе­ременной в индексе).

  1. Процедуры. Процедура (разд. 8) идентифицируется символическим именем. Процедурой является либо внутренняя функция, либо встроенная функция, либо основная внешняя функ­ция, либо внешняя функция, либо внешняя подпрограмма. Внут­ренние функции, встроенные функции, основные внешние функции и внешние функции называются общим термином функции (или процедуры-функции), а внешние подпрограммы — термином под­программы (или процедуры-подпрограммы).

Функция доставляет результат, который называется значе­нием функции и используется в точке ссылки на эту функцию; подпрограмма этого не делает. Способы ссылки на функции и подпрограммы отличаются друг от друга.

  1. Ссылка на функцию. Ссылка на функцию производится при помощи указателя функции, состоящего из имени функции, за которым следует список фактических параметров, заключен­ный в скобки. Если список содержит более одного параметра, то они отделяются друг от друга запятой. Допустимые виды факти­ческих параметров функций приведены в разд. 8 (см. п. 10.2.1 относительно требований к ссылкам на функции).

  2. Правила типов для идентификаторов данных и процедур. Тип константы определяется ее изображением. С символическим именем, идентифицирующим блок данных или подпрограмму, не связывается никакой тип.

Тип, который связывается с символическим именем, иденти­фицирующим переменную, массив или внутреннюю функцию, мо­жет быть указан при помощи объявления типа. При отсутствии явного объявления типа с символическим именем связывается тип целый, если первая буква этого имени есть I, J, К, L, М, N; в противном случае связывается тип вещественный.

Если символическое имя встроенной функции или основной внешней функции используется в таком контексте, где оно иден­тифицирует именно одну из этих функций, то с ним связывается тип соответствующей функции, определенный в табл. 3 и 4.

Если в программном модуле содержатся ссылки на внешнюю функцию, то тип этой функции определяется так же, как и для переменной или массива. Для функции, определенной при помо­щи модуля-функции, тип определяется либо неявно, по имени функции, либо указывается явно в заголовке функции.

С каждым элементом массива связывается тот же тип, кото­рый связан с именем этого массива.

  1. Формальные параметры. Формальный параметр внешней процедуры представляет переменную, массив, подпрограмму или внешнюю функцию.

Если формальный параметр используется в качестве имени внешней функции, то в качестве фактического параметра ему может соответствовать только имя внешней функции (разд. 8).Если формальный параметр используется в качестве имени внешней подпрограммы, то в качестве фактического параметра ему может соответствовать только имя внешней подпрограммы.

Если формальный параметр используется для ссылки на пе­ременную или на элемент массива, то при задании фактического параметра с этим формальным параметром должно связываться значение того же типа, которое определено для формального па­раметра по правилам, приведенным в п. 5.3.

Если не оговорено противное, то использование формального параметра в качестве имени переменной, массива или элемента массива допустимо при условии установления надлежащей свя­зи с соответствующим фактическим параметром.

Процесс установления связи фактических параметров с фор­мальными параметрами изложен в разд. 8 и 10.

  1. ВЫРАЖЕНИЯ

Настоящий раздел определяет форму представления и прави­ла вычисления арифметических и логических выражений, а так­же отношений. Отношение употребляется только как компонента логических выражений. Выражение формируется из операндов и знаков операций (см. п. 10.3 об ограничениях на использова­ние операндов в выражениях).