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

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

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

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

      3. Тип двойной точности — отсутствует; определение — по ГОСТ 23056—78.

      4. Тип комплексный — отсутствует; определение — по ГОСТ 23056—78.

      5. Тип логический — отсутствует; определение — по ГОСТ 23056—78.

      6. Тип текстовый — отсутствует; определение — по ГОСТ 23056—78.

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

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

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

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

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

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

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

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

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

P.Q

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

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

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

    1. Число двойной точности без знака — отсутствует; оп­ределение — по ГОСТ 23056—78.

    2. Комплексное число — отсутствует; определение — по ГОСТ 23056—78.

    3. Логическая константа — отсутствует; определение — по ГОСТ 23056—78.

    4. Текстовая константа — отсутствует; определение — по ГОСТ 23056—78.

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

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

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

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

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

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

C*V+K

C*V— К

C*V
v+к
v-к
V
к

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

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

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

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

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

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

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

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

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

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

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

  1. ВЫРАЖЕНИЯ

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

  1. Арифметические выражения. Арифметическое выражение формируется из знаков арифметических операций и арифметичес­ких операндов. Как выражение, так и входящие в него операнды идентифицируют значения типа целый и вещественный. Знаки арифметических операций:

Знак операции Представляемая операция.

+ Сложение

— Вычитание

  1. Умножение

/ Деление

  1. * Возведение в степень

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

Первичное арифметическое выражение — это либо арифмети­ческое выражение, взятое в скобки, либо константа, либо ссылка на переменную, либо ссылка на элемент массива, либо ссылка на функцию.

Множитель — это либо первичное арифметическое выражение, либо конструкция вида:

первичное арифметическое выражение ** первичное арифметическое выражение

Терм — это либо множитель, либо конструкция одного из видов:

терм/множитель или

терм* множитель

Терм со знаком — это терм, которому непосредственно пред­шествует знак + или —.

Простое арифметическое выражение — это либо терм, либо два простые арифметические выражения, разделенные знаком + или —.

Арифметическое выражение — это либо простое арифметическое выражение, либо терм со знаком, либо одна из этих двух конструкций, за которой непосредственно следует знак + или —, за которым не­посредственно следует простое арифметическое выражение.

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

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

  1. Отношения — отсутствует; определение — по ГОСТ 23056—78.

  2. Логические выражения — отсутствует; определение — по ГОСТ 23056—78.

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

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

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

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

Не может быть вычислен никакой операнд, значение которого математически не определено.

  1. ПРЕДЛОЖЕНИЯ

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