(Измененная редакция, Изм. № 1).
Свойства данных разных типов. В пп. 4.2.1—4.2.6 определяются математические свойства и свойства представлений каждого из двух типов данных. Значение нуль не считается ни положительным, ни отрицательным для данных типов целый в вещественный.
Тип целый. Целое данное — это всегда точное представление целого значения. Оно может принимать только целые (положительные, отрицательные и нулевое) значения.
Тип вещественный. Вещественное данное — это процессорное приближение вещественного значения. Оно может принимать положительные, отрицательные и нулевое значения.
Тип двойной точности — отсутствует; определение — по ГОСТ 23056—78.
Тип комплексный — отсутствует; определение — по ГОСТ 23056—78.
Тип логический — отсутствует; определение — по ГОСТ 23056—78.
Тип текстовый — отсутствует; определение — по ГОСТ 23056—78.
ИДЕНТИФИКАЦИЯ ДАННЫХ И ПРОЦЕДУР
Имена используются как для ссылок на данные и процедуры, так и для любой другой их идентификации.
Термин «ссылка» используется при такой идентификации данного, когда подразумевается, что текущее значение этого данного становится доступным при выполнении предложения (оператора), содержащего эту ссылку. Если данное идентифицируется, но его значение не обязательно становится доступным, то говорят, что данное именуется. Один случай, когда данное именуется, представляет особый интерес — это когда данному присваивается значение и тем самым производится определение или переопределение (значения) данного, т. е. данное либо впервые получает некоторое конкретное значение, либо ему присваивается новое значение. В случае процедуры термин «ссылка» означает, что действия, определяемые этой процедурой, станут доступными при выполнении предложения (оператора), содержащего эту ссылку.
Полное и строгое объяснение понятий «ссылка» и «определение» (включая и «переопределение») содержится в разд. 10.
Имена данных и процедур. С помощью имен данных идентифицируются константы, переменные, массивы или элементы массивов. С помощью имен процедур идентифицируются функции и подпрограммы.
Константы. Константа является данным, которое всегда определено в процессе выполнения программы и не может быть переопределено (т. е. изменено). Для каждого типа данных имеются свои правила записи констант.
Среди числовых констант (чисел) типа целый и вещественный различаются число без знака и число со знаком. Последнее представляет собой число без знака, непосредственно перед которым расположен знак плюс или минус. Термином «число» означается как число со знаком, так и число без знака.
Целое число без знака. Целое число без знака записывается как непустая последовательность цифр. Значение константы этого вида в точности равно числу, изображенному в десятичной системе счисления этой константой.
Вещественное число без знака. Основной формой записи вещественного числа без знака является смешанная дробь, под которой понимается запись вида
P.Q
(где Р — целая часть; Q — дробная часть). Как целая, так и дробная часть есть целое без знака. Одна из этих частей (либо целая, либо дробная) может отсутствовать, т. е. представляться пустой последовательностью цифр. Значение константы этого вида есть процессорное приближение того числа, которое в десятичной системе счисления записывается в виде указанной смешанной дроби.
Десятичная экспонента изображается буквой Е, за которой следует целое число (без знака или со знаком). Десятичная экспонента является множителем (применяемым к числу, записанному непосредственно перед десятичной экспонентой), равным приближению результата возведения числа десять в степень, указанную целым числом, записанным после буквы Е.
Вещественное число без знака — это либо смешанная дробь, либо смешанная дробь, за которой следует десятичная экспонента.
Число двойной точности без знака — отсутствует; определение — по ГОСТ 23056—78.
Комплексное число — отсутствует; определение — по ГОСТ 23056—78.
Логическая константа — отсутствует; определение — по ГОСТ 23056—78.
Текстовая константа — отсутствует; определение — по ГОСТ 23056—78.
Переменная. Переменная есть данное, идентифицируемое символическим именем (п. 3.5). На это данное можно ссылаться и его можно определять (т. е. присваивать ему значение).
Массив. Массив есть упорядоченный набор данных, имеющий одно или два измерения. Массив идентифицируется символическим именем. Идентификация этого упорядоченного выбора данных как единого целого достигается посредством использования имени массива.
Элемент массива. Элементом массива является одна из компонент набора данных, образующего массив. Элемент массива идентифицируется указанием имени массива, непосредственно за которым следует дополнительная конструкция, называемая индексом. Индекс указывает на конкретный элемент массива.
На элемент массива можно ссылаться и его можно определять.
Индекс. Индекс представляет собой заключенный в скобки список индексных выражений. Если индексных выражений два, то они разделяются запятой. Число индексных выражений должно соответствовать объявленной размерности массива (п. 7.2.1.1), за исключением вхождения имени элемента массива в объявление эквивалентности (п. 7.2.1.4). Идентифицируемый элемент массива определяется при помощи функции линеаризации (п. 7.2.1.1.1), используя вычисленные значения всех индексных выражений.
Индексные выражения. Индексное выражение записывается в виде одной из следующих конструкций:
C*V+K
C*V— К
C*V
v+к
v-к
V
к
где С и К — целые без знака; V — ссылка на переменную типа целый (см. разд. 6 относительно правил вычисления выражений; пп. 10.2.8 и 10.3 относительно требований на использование переменной в индексе).
Процедуры. Процедура (разд. 8) идентифицируется символическим именем. Процедурой является либо внутренняя функция, либо встроенная функция, либо основная внешняя функция, либо внешняя функция, либо внешняя подпрограмма. Внутренние функции, встроенные функции, основные внешние функции и внешние функции называются общим термином функции (или процедуры-функции), а внешние подпрограммы — термином подпрограммы (или процедуры-подпрограммы).
Функция доставляет результат, который называется значением функции и используется в точке ссылки на эту функцию; подпрограмма этого не делает. Способы ссылки на функции и подпрограммы отличаются друг от друга.
Ссылка на функцию. Ссылка на функцию производится при помощи указателя функции, состоящего из имени функции, за которым следует список фактических параметров, заключенный в скобки. Если список содержит более одного параметра, то они отделяются друг от друга запятой. Допустимые виды фактических параметров функций приведены в разд. 8 (см. п. 10.2.1 относительно требований к ссылкам на функции).
Правила типов для идентификаторов данных и процедур. Тип константы определяется ее изображением. С символическим именем, идентифицирующим переменную, массив или внутреннюю функцию, связывается тип целый, если первая буква этого имени есть 1, J, К, L, М, N; в противном случае связывается тип вещественный.
Если символическое имя встроенной функции или основной внешней функции используется в таком контексте, где оно идентифицирует именно одну из этих функций, то с ним связывается тип соответствующей функции, определенный в табл. 3 и 4.
Если в программном модуле содержатся ссылки на внешнюю функцию, то тип этой функции определяется так же, как и для переменной или массива.
С каждым элементом массива связывается тот же тип, который связан с именем этого массива.
Формальные параметры. Формальный параметр внешней процедуры представляет переменную или массив.
Если не оговорено противное, то использование формального параметра в качестве имени переменной, массива или элемента массива допустимо при условии установления надлежащей связи с соответствующим фактическим параметром.
Процесс установления связи фактических параметров с формальными параметрами изложен в разд. 8 и 10.
ВЫРАЖЕНИЯ
Настоящий раздел определяет форму представления и правила вычисления арифметических выражений. Выражение формируется из операндов и знаков операций (см. п. 10.3 об ограничениях на использование операндов в выражениях).
Арифметические выражения. Арифметическое выражение формируется из знаков арифметических операций и арифметических операндов. Как выражение, так и входящие в него операнды идентифицируют значения типа целый и вещественный. Знаки арифметических операций:
Знак операции Представляемая операция.
+ Сложение
— Вычитание
Умножение
/ Деление
* Возведение в степень
Арифметические операции сложения и вычитания могут быть одноместными и двуместными. В случае одноместных операций сложения и вычитания подразумеваемым первым арифметическим операндом является нуль.Арифметические операнды — это первичное арифметическое выражение, множитель, терм, терм со знаком, простое арифметическое выражение и арифметическое выражение.
Первичное арифметическое выражение — это либо арифметическое выражение, взятое в скобки, либо константа, либо ссылка на переменную, либо ссылка на элемент массива, либо ссылка на функцию.
Множитель — это либо первичное арифметическое выражение, либо конструкция вида:
первичное арифметическое выражение ** первичное арифметическое выражение
Терм — это либо множитель, либо конструкция одного из видов:
терм/множитель или
терм* множитель
Терм со знаком — это терм, которому непосредственно предшествует знак + или —.
Простое арифметическое выражение — это либо терм, либо два простые арифметические выражения, разделенные знаком + или —.
Арифметическое выражение — это либо простое арифметическое выражение, либо терм со знаком, либо одна из этих двух конструкций, за которой непосредственно следует знак + или —, за которым непосредственно следует простое арифметическое выражение.
Первичное арифметическое выражение любого типа может возводиться в степень, показателем которой является первичное арифметическое выражение типа целый; при этом получающийся в результате множитель имеет тот же тип, что и возводимое в степень первичное арифметическое выражение. Первичное арифметическое выражение типа вещественный может возводиться в степень, показателем которой является первичное арифметическое выражение типа вещественный; получающийся в результате множитель имеет тип вещественный. Во всех остальных случаях эффект выполнения операции возведения в степень не определен.
При использовании остальных арифметических операций любой допустимый операнд может сочетаться с любым допустимым операндом того же самого типа; получающийся в результате операнд имеет тот же самый тип.
Отношения — отсутствует; определение — по ГОСТ 23056—78.
Логические выражения — отсутствует; определение — по ГОСТ 23056—78.
Вычисление выражений. Часть выражения нуждается в вычислении только в том случае, если это необходимо для установления значения всего этого выражения. Правила формирования выражений определяют и порядок выполнения операций. Необходимо отметить, что вторым операндом операции вычитания является терм, непосредственно следующий за знаком этой операции. Вычисление выражения может производиться в соответствии с любой правильной последовательностью его формирования с учетом следующих ограничений.
Если два операнда соединены знаком операции, то порядок вычисления этих операндов произвольный. Если математическая операция коммутативна и (или) ассоциативна, то это можно использовать для переупорядочивания операндов при условии сохранения целостности выражений в скобках. Значение множителя или терма типа целый — это ближайшее целое, не превосходящее математического значения, представленного этим множителем или термом. При вычислении термов типа целый, содержащих операцию деления, законы ассоциативности и коммутативности не используются, и, следовательно, вычисление таких термов должно производиться слева направо.
Любое использование имени элемента массива требует вычисления его индекса. Вычисление функции, входящей в выражение, не может изменить значения никакого другого операнда в выражении, операторе присваивания или операторе вызова подпрограммы, содержащих эту ссылку на функцию. Тип выражения, в котором встречается индекс или ссылка на функцию, не влияет (и на него не влияет) на вычисление фактических параметров или индекса.
Не может быть вычислен множитель, требующий возведения первичного арифметического выражения, значение которого отрицательно, в степень, показатель которой имеет тип вещественный. Не может быть вычислен множитель, требующий возведения первичного арифметического выражения, значение которого равно нулю, в степень, значение показателя которой также равно нулю.
Не может быть вычислен никакой операнд, значение которого математически не определено.
ПРЕДЛОЖЕНИЯ
Предложения Базисного ФОРТРАНа можно разделить на выполняемые и невыполняемые. Выполняемые предложения — операторы — определяют действия; невыполняемые предложения — объявления — описывают характеристики и упорядочение данных, способ редактирования данных, вводимые в употребление функции и классификацию программных модулей.