Товары в корзине: 0 шт Оформить заказ
Стр. 1
 

48 страниц

517.00 ₽

Купить ГОСТ 23057-78 — официальный бумажный документ с голограммой и синими печатями. подробнее

Официально распространяем нормативную документацию с 1999 года. Пробиваем чеки, платим налоги, принимаем к оплате все законные формы платежей без дополнительных процентов. Наши клиенты защищены Законом. ООО "ЦНТИ Нормоконтроль".

Наши цены ниже, чем в других местах, потому что мы работаем напрямую с поставщиками документов.

Способы доставки

  • Срочная курьерская доставка (1-3 дня)
  • Курьерская доставка (7 дней)
  • Самовывоз из московского офиса
  • Почта РФ

Распространяется на язык программирования Базисный Фортран

  Скачать PDF

Оглавление

1 Общие положения

2 Структура языка

3 Правила записи программы

4 Типы данных

5 Идентификация данных и процедур

6 Выражения

7 Предложения

8 Процедуры и модули

9 Программа

10 Внутри- и межмодульные соотношения

Алфавитный указатель терминов

Показать даты введения Admin

УДК 681 3.065.4:006.354    Группа    П85

ГОСУДАРСТВЕННЫЙ СТАНДАРТ СОЮЗА ССР

гост

23057—781 2

Язык программирования БАЗИСНЫМ ФОРТРАН

Programming language Basic FORTRAN

Постановлением Государственного комитета стандартов Совета Министров СССР от 7 апреля 1978 г № 962 срок введения установлен

с 01 01 1979 г

Настоящим стандарт распространяется на язык программиро вания Ба >исный ФОРТРАН и устанавливает

форму представления и правила интерпретации (синтаксис и семантику) программы, записанной на языке Базисный ФОРТРАН, форму представления входных данных, обрабатываемых про граммой при ее выполнении в автоматизированной системе обработки данных,

форму представления выходных данных, получаемых в резуль тате выполнения программы Стандарт не устанавливает

механизм, которым программа трансформируется для ее выпол нения в системе обработки данных (комбинация этого механизма и системы обработки данных называется процессором),

метод передачи программы и ее входных или выходных дан ных в систему обработки данных и обратно,

действия, необходимые для запуска и управления программой в системе обработки данных,

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

диапазон или точность представления числовых значений, состав и форму документации на трансляторы с языка Ба зисный ФОРТРАН и программы, записанные на языке Базисный ФОРТРАН

Стандарт полностью соответствует международной рекомендации ИСО/Р 1539—72

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

1. ОБЩИЕ ПОЛОЖЕНИЯ

1.1.    Стандарт предназначен для достижения высокой степени мобильности и машинной независимости программ, записанных на языке Базисный ФОРТРАН, позволяющей использовать их в различных автоматизированных системах обработки данных.

1.2.    Процессор, выполняющий программы, записанные на языке Базисный ФОРТРАН, считается согласованным с настоящим стандартом, если он воспринимает и интерпретирует в соответствии с настоящим описанием по крайней мере те формы и соотношения, которые описаны в настоящем стандарте.

1.3.    Любое ограничение или запрет, сформулированные в настоящем стандарте, означают следующее: если в какой-либо программе это ограничение не выполнено или запрет нарушен, то такая программа считается несогласованной с настоящим стандартом.

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

2. СТРУКТУРА ЯЗЫКА

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

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

2.2.1 Выполнимая программа состоит из одного или нескольких программных модулей (п. 9.1.3), один (и только один) из которых является головным модулем (п. 9.1.4).

2.2.2.    Выполнение программы начинается с выполнения ее головного модуля. Однако в любом программном модуле (в том числе и в головном) могут использоваться внешние процедуры (разд. 9), описывающие вне данного модуля отдельные процедуры процесса обработки данных. Для определения внешних процедур средствами Базисного ФОРТРАНа служат модули-процедуры (разд. 8).

2.3. Внешняя процедура может быть внешней функцией или внешней подпрограммой (разд. 8 и 9). Внешние процедуры могут определяться и другими средствами, отличными от языка Базисный ФОРТРАН. Эти средства настоящим стандартом не определяются. (Измененная редакция, Изм. № 1).

2.3.1. (Исключен, Изм. № 1).

ГОСТ 23057-78 Стр. 11

Арифметические операнды — это первичное арифметическое выражение, множитель, терм, терм со знаком, простое арифметическое выражение и арифметическое выражение.

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

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

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

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

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

или

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

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

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

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

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

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

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

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

6.4.    Вычисление выражений. Часть выражения нуждается в вычислении только в том случае, если это необходимо для установления значения всего этого выражения. Правила формирова-

Стр. 1 2 ГОСТ 23057-78

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

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

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

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

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

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

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

7.1. Операторы. Имеется три типа операторов: операторы присваивания; операторы управления; операторы ввода/вывода.

ГОСТ 23057-78 Стр. \ 3

7 Л Л. Операторы присваивания* Существует один тип операторов присваивания — а риф мети ноский оператор присваивания.

7.1.1.1. Арифметический оператор присваивания. Арифметический оператор присваивания имеет вид:

v = e

(v — имя переменной или имя элемента массива;

е - - а рифмети ческое выражение).

Выполнение такого оператора заключается в вычислении выражения е и изменении значения v в соответствии с табл. 1.

Т а 6 л и ц а 1

Тип v

Тип с

Действие

Целый

Целый

Приев.

То же

Вещественный

Фикс.; Приев.

Вещественный

Целый

Плав.; Приев.

То же

Вещественный

Приев.

Примечания:

1.    «Приев» - передача резулы ир> ющего значения без изменений.

2.    «Фькс.» — отбрасывание дробной части результата и преобразование полученною значении в форму целого данною.

3.    «Плав.» - преобразование значения в форму вещественного данного.

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

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

7.1.1.3. Оператор предписания ~ отсутствует; определение по ГОСТ 23056-78.

7Л.2. Операторы управления. Существует семь типов операторов управления:

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

Метки, используемые в операторах управления, должны помечать операторы в том же программном модуле, в котором используются эти операторы управления.

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

7.1.2.1. Операторы перехода. Существует два типа операторов перехода:

безусловный оператор перехода; вычисляемый оператор перехода.

Стр. 14 ГОСТ 23057*—78

7 12 11 Безусловный оператор перехода. Безусловный оператор перехода имеет вид

GO ТО к

(к — метка оператора)

Результат выполнения этого оператора состоит в гом, что следующим будет выполняться оператор, помеченный этой меткой к 7 12 12 Оператор перехода по предписанию — отсутствует, определение — по ГОСТ 23056-78

7 12 13 Вычисляемый оператор перехода. Вычисляемый оператор перехода имеет вид

GO ТО (к,, к2, ,кл),i (каждое к} — метка оператора, 1 — имя переменной типа целый) Результат выполнения этого оператора состоит в том, что еле дующим будет выполняться оператор, помеченный меткой к, где i0 — значение переменной i к моменту выполнения данного one ратора перехода Действие этого оператора определено только для i0, удовлетворяющих условию 1<10<п (см пп 102 8 и 103 относительно использования переменной типа целый в вычисляемом операторе перехода)

7 12 2 Условный арифметический оператор. Условный арифметический оператор имеет вид

IF(e) k,,k2,k3

(е — арифметическое выражение типа целый или вещественный, каждое к} — метка оператора)

Условный арифметический оператор служит для разветвления вычислительного процесса по трем возможным путям При выпол нении этого оператора сначала вычисляется выражение е, после чего в качестве следующего выполняется оператор, помеченный меткой kb k2 или k3 при значении е, меньшем нуля, равном нулю или большем нуля соответственно

7 12 3 Условный логический оператор — отсутствует, опре деление — по ГОСТ 23056-78

7 1 2.4 Оператор вызова подпрограммы. Оператор вызова подпрограммы имеет вид

CALL s(alt а2, ,ап)

ИЛИ

CALL s

(s — имя подпрограммы,

каждое — фактический параметр (п 8.4 2))

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

ГОСТ 23057—78 Стр. 15

управления из этого модуля завершает выполнение оператора вызова подпрограммы.

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

7.1.2.5. Оператор возврата. Оператор возврата имеет вид

RETURN

Оператор возврата используется только в модуле-процедуре и предназначен для того, чтобы отмечать его логический конец.

Если этот оператор используется в модуле-подпрограмме, то результат его выполнения состоит в возврате управления в тот модуль, из которого было произведено обращение к рассматриваемому модулю-подпрограмме.

Если этот оператор используется в модуле-функции, то результат его выполнения состоит в возврате управления в тот программный модуль, из которого было произведено обращение к рассматриваемому модулю-функции, и в этот момент становится доступным значение функции (п. 8.3.1), определенное этим модулем.

7.1.2.6.    Оператор продолжения. Оператор продолжения имеет

вид

CONTINUE

В результате выполнения этого оператора просто продолжается нормальный порядок выполнения операторов, т. е. этот оператор не вызывает никаких иных действий.

7.1.2.7.    Операторы останова и паузы. Существует два вида операторов:

оператор останова; оператор паузы.

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

7.1.2.7.1.    Оператор останова. Оператор останова имеет вид

STOP п

или

STOP

(п — последовательность от одной до четырех восьмеричных цифр).

В результате выполнения этого оператора завершается выполнение программы.

7.1.2.7.2.    Оператор паузы. Оператор паузы имеет вид

PAUSE п

или

PAUSE

Стр. 16 ГОСТ 23057-78

(п — последовательность от одной до четырех восьмеричных цифр).

Выполнение этого оператора состоит из двух этапов. В результате выполнения первого из них происходит приостановка выполнения программы. На время этой приостановки становится доступной последовательность восьмеричных цифр п. Для возобновления выполнения программы необходимы действия, внешние по отношению к ней. Если выполнение возобновляется без каких-либо изменений состояния процессора, то выполняется второй этап оператора паузы, в результате чего продолжается нормальный порядок выполнения операторов (п. 9.2).

7.1.2.8. Оператор цикла.

7.1.2.8.1. Оператор цикла имеет вид

DO n i = rrij, m2, m3

или

DO n i = mb m2

(n — метка оператора; i — имя переменной типа целый;

каждое пз, — целое без знака либо имя переменной типа целый).

Оператор, помеченный меткой п и называемый закрывающим оператором тела цикла, должен находиться в том же программном модуле, что и рассматриваемый оператор цикла, и физически должен помещаться после него. Закрывающий оператор не может быть оператором перехода, возврата, останова, паузы, цикла, условным арифметическим оператором. Переменная i называется управляющей переменной; rrij называется начальным параметром, гп2 — конечным параметром, гп3 — параметром приращения. При использовании оператора цикла второго вида, в котором т3 явно не указывается, считается, что параметр приращения есть единица. Во время выполнения оператора цикла значения mlf mи ш3 должны быть больше нуля.

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

7Л.2.8.2. Оператор цикла служит для задания цикла в программе. Действия, порождаемые выполнением оператора цикла, описываются следующими шестью шагами:

а)    управляющей переменной присваивается значение, представленное начальным параметром; это значение не должно превышать значения, представленного конечным параметром;

б)    выполняется тело оператора цикла;

ГОСТ 23057-78 Стр. 17

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

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

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

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

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

7.1.2.8.3.    Понятие расширенного тела — отсутствует; определение — по ГОСТ 23056-78.

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

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

7.1.3. Операторы ввода/вывода. Существует два типа операторов ввода/вывода:

основные операторы ввода/вывода;

вспомогательные операторы ввода/вывода.

6- 310

Стр. 18 ГОСТ 23057-78

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

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

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

7.1.3.1.    Свойства устройств ввода/вывода. Считается, что с конкретным устройством ввода/вывода связан только один последовательный файл. Такое устройство обладает следующими свойствами:

а)    если устройство содержит записи, то они считаются упорядоченными;

б)    существует единственная позиция устройства, называемая начальной. Если устройство не содержит записей, то оно находится в начальной позиции. Если устройство находится в начальной позиции и содержит записи, то первая запись устройства считается очередной записью;

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

г)    по завершении выполнения оператора вывода или оператора разметки не существует записи, следующей за записью, образованной этим оператором;

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

Если какое-либо устройство не обладает какими-то из перечисленных выше свойств, то некоторые из определенных ниже операторов не могут содержать ссылку на это устройство; действие таких операторов для этого устройства не определено.

7.1.3.2.    Основные операторы ввода/вывода. Основные операторы ввода/вывода служат для передачи записей. Каждый такой

ГОСТ 23057-78 Стр. 19

оператор может содержать список имен переменных, массивов и элементов массивов. При вводе именованным элементам присваиваются значения, а при выводе их значения передаются вовне.

Записи могут быть форматными и бесформатными. Форматная запись состоит из последовательности символов, допускающих представление в процессоре. Передача такой записи требует ссылки на спецификацию формата, которая определяет необходимые преобразования и размещение записи (п. 7.2.3), Число записей, передаваемых при выполнении операторов форматного чтения или записи, зависит от списка ввода/вывода и указанной спецификации формата (п. 7.2.3.4). Бесформатная запись состоит из последовательности значений в виде, определяемом процессором. Когда выполняется оператор форматного или бесформатного ввода, требуемые записи на указанном устройстве должны быть соответственно форматными или бесформатными.

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

7.1.3.2.1. Списки ввода/вывода. Список ввода определяет имена переменных и элементов массивов, которым присваиваются значения при вводе. Список вывода определяет те переменные и элементы массивов, значения которых передаются при выводе вовне. Списки ввода и списки вывода устроены одинаково.

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

Простой список есть либо имя переменной, либо имя элемента массива, либо имя массива, либо два простых списка, разделенных запятой.

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

Спецификация цикла имеет вид

i = m j, m о, ni з

или

1= m,,m2

(i, mlf m2 и m3 определяются так же, как и для оператора цикла (п. 7.1.2.8)).

Область действия спецификации цикла — это список, входящий в состав списка с циклом; для списков ввода i, mh гп2 и m3 могут встречаться внутри этой области только в индексах.

Имя переменной или имя элемента массива в списке задают самих себя. Имя массива задает имена всех элементов массива, определенных описанием массива, и эти элементы задаются в порядке, определяемом функцией линеаризации (п. 7.2.1.1.1).

6*

Стр. 20 ГОСТ 23057-78

Элементы списка считаются упорядоченными в соответствии с их вхождением в список при его просмотре слева направо. Это упорядочение элементов в списке с циклом имеет место для каждого очередного повторения цикла.

7.1.3.2.2.    Оператор форматного ввода. Оператор форматного ввода имеет вид

READ (u, f) к

ИЛИ

READ (и, f)

(к — список ввода).

В результате выполнения этого оператора вводятся очеред-ные записи с устройства, заданного и. Вводимые данные просмат-риваются и преобразуются в соответствии с форматом, заданным f. Полученные в результате значения присваиваются элементам, определенным списком к (см. п. 7.2.3.4).

7.1.3.2.3.    Оператор форматного вывода. Оператор форматного вывода имеет вид

WRITE (u, f) к

ИЛИ

WRITE (и, f)

(к — список вывода).

В результате выполнения этого оператора создаются очеред-ные записи на устройстве, заданном и. Список вывода к определяет последовательность передаваемых значений. Эти значения преобразуются и разносятся по позициям в соответствии с форматом, заданным f (см. п. 7.2.3.4).

7.1.3.2.4.    Оператор бесформатного ввода. Оператор бесфор-матного ввода имеет вид

READ (и) к

ИЛИ

READ (и)

(к — список ввода).

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

7.1.3.2.5.    Оператор бесформатного вывода. Оператор бесформатного вывода имеет вид

WRITE (и) к

(к — список вывода).

ГОСТ 23057-78 Стр. 3

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

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

2.5.1.    Предложения Базисного ФОРТРАНа распадаются на два основных класса: выполняемые (или операторы) и невыполняемые (или объявления). Операторы определяют действия в программе, тогда как объявления (частными случаями которых являются заголовки функций и заголовки подпрограмм) описывают способ использования программы, характеристики операндов, способ редактирования данных, вводимые в употребление функции или размещение данных (пп. 7.1, 7.2).

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

2.6.    Синтаксическими элементами предложения являются имена и операции. Имена используются для ссылок на объекты, например, на данные или процедуры. Операции определяют действия над именованными объектами.

2.6.1.    Один частный случай имен, имя массива, заслуживает особого рассмотрения. С именем массива должен быть связан размер идентифицируемого массива, определяемый в описании массива (п. 7.2.1.1). Имя массива, дополненное индексом, используется для идентификации конкретного элемента массива (п. 5.1.3).

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

2.8.    Для идентификации в Базисном ФОРТРАНе используются имена и целые числа без знака (п. 5.1.1). Данные и процедуры именуются. Предложения помечаются целыми числами без знака. Устройства ввода/вывода нумеруются (разд. 3, 6, 7).

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

SUBROUTINE s(a„ a2,...,an)

ГОСТ 23057-78 Стр. 21

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

7.1.3.3. Вспомогательные операторы ввода/вывода. Существует три типа вспомогательных операторов ввода/вывода: оператор перемотки; оператор сдвига назад; оператор разметки.

7.1.3.3.1.    Оператор перемотки. Оператор перемотки имеет вид

REWIND и

В результате выполнения этого оператора устройство, заданное и, устанавливается в начальную позицию.

7.1.3.3.2.    Оператор сдвига назад. Оператор сдвига назад имеет вид

BACKSPACE и

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

7.1.3.3.3. Оператор разметки. Оператор разметки имеет вид

ENDFILE и

В результате выполнения этого оператора на устройство, заданное и, выводится специальная запись «конец файла». «Конец файла» — это единственная запись, обозначающая границу последовательного файла. Если запись «конец файла» встретится при выполнении какого-либо оператора ввода, то действие такого оператора не определено.

7.1.3.4.    Вывод форматных записей на печать. При передаче форматной записи на печать ее первый символ не печатается.

7.2. Объявления. Имеется четыре типа объявлений:

объявления спецификаций;

объявление формата;

объявление внутренней функции;

заголовки (функций и подпрограмм).

Ограничения на использование символических имен в объявлениях изложены в п. 10.2.

Объявления внутренних функций и заголовки (функций и подпрограмм) рассматриваются в разд. 8.

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

7.2.1. Объявления спецификаций. Имеется три типа объявлений спецификаций:

Стр. 4 ГОСТ 23057-73

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

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

Термин «ссылка» используется со специальным смыслом, определенным в разд. 5.

3. ПРАВИЛА ЗАПИСИ ПРОГРАММЫ

3.1.    Алфавит Базисного ФОРТРАНа. При записи программного модуля используются только символы, входящие в алфавит Базисного ФОРТРАНа. Этот алфавит делится на три группы символов: цифры, буквы и специальные символы. Множество символов, образующих алфавит Базисного ФОРТРАНа, считается неупорядоченным.

3.1.1.    Цифры. Цифра — это один из десяти символов: 0, 1,2, 3, 4, 5, 6, 7, 8, 9.

Если не оговорено противное и уместно считать последовательность цифр числом, то оно будет интерпретироваться как число в десятичной системе счисления.

Восьмеричная цифра — это один из восьми символов:

0, 1, 2, 3, 4, 5, 6, 7.

Восьмеричные цифры используются только в операторах останова (п. 7.1.2.7.1) и паузы (п. 7.1.2.7.2).

3.1.2. Буквы. Буква — это одна из двадцати шести символов: А, В, С, D, Е, F, G, Н, I, J, К, L, М, N, О, Р, Q, R, S,

Т, U, V, W, X, У, Z.

3.1.3.    Буквенно-цифровые символы. Буквенно-цифровой символ — это либо буква, либо цифра.

3.1.4.    Специальные символы. Специальный символ — это один из десяти символов:

Символ

Название символа

Пробел

Равно

+

Плюс

Минус

*

Звездочка

/

Дробная черта

(

Круглая левая скобка (левая скобка)

)

Круглая правая скобка (правая скобка)

7

Запятая

.

Точка

ГОСТ 23057-78 Стр. 5

3.1.4.1.    Символ пробела. Символ пробела — это отсутствие какого-либо графического изображения в данной позиции. Кроме специально оговоренных случаев (пп. 3.2.2—3.2.4, 7.2.3.6 и 7.2.3.8) символ пробела нс является значащим и поэтому может свободно использоваться для улучшения наглядности программы в любом ее месте, с учетом ограничений на строки продолжения (п. 3.3).

3.2.    Строки. Строка — это последовательность, состоящая из 72 символов. Каждый символ должен принадлежать алфавиту Базисного ФОРТРАНа, за исключением случаев, описанных в пп. 7.2.3.1 и 7.2.3.8.

Позиции символов в строке последовательно нумеруются слева направо от I до 72 включительно.

3.2.1.    Комментарии. Буква С в позиции 1 какой-либо строки указывает на то, что данная строка является комментарием. За комментарием должны непосредственно следовать либо другой комментарий, либо начальная строка, либо заключительная строка (п. 3.2.2).

Комментарии не оказывают никакого влияния на выполнение программы, их можно использовать для пояснений.

3.2.2.    Заключительная строка. Заключительной строкой называется такая строка, которая в позициях 1—6 содержит пробелы, а в позициях 7—72 пробелы и буквы Е, N и D. Эти буквы должны следовать в том порядке, в каком они приведены выше, каждая по одному разу, и могут размещаться в любых этих позициях; в остальных позициях должны содержаться пробелы. Заключительная строка указывает процессору конец текста программного модуля (п. 9. 1.3). Текст каждого программного модуля обязательно должен завершаться точно одной заключительной строкой.

3.2.3.    Начальная строка. Начальной строкой называется такая строка, которая не является ни комментарием, ни заключительной строкой и содержит пробел или цифру 0 в позиции 6. В позициях 1—5 содержится либо метка предложения, либо пробелы.

3.2.4.    Строка-продолжение. Строкой-продолжением называется такая строка, которая не является комментарием и в позиции 6 содержит символ, отличный от пробела и цифры 0.

Строка-продолжение может непосредственно следовать только за начальной строкой или за другой строкой-продолжением.

3.3.    Предложения. Предложение состоит из одной начальной строки, за которой может следовать до пяти строк-продолжений. Символы, образующие предложение, записываются в позициях 7— 72 каждой из строк и считаются упорядоченными: сначала идут символы, записанные в начальной строке, затем — символы, записанные в первой строке-продолжении (если она имеется), затем — символы, записанные во второй строке-продолжении (если она имеется) и т. д. В каждой строке символы считаются упоря-

Стр. 6 ГОСТ 23057-78

доменными по возрастанию номеров позиций, в которых они записаны (учитываются только символы, расположенные в колонках 7—72).

3.4.    Метка предложения. Любое предложение может быть помечено, с тем, чтобы на него можно было ссылаться в других предложениях. Метка предложения состоит из последовательности от одной до четырех цифр. Величина целого без знака, представленного этой последовательностью цифр, не играет роли, но она должна быть больше нуля. Метка предложения должна быть помещена в позициях 1—5 начальной строки этого предложения и может начинаться с любой из этих позиций. В одном программном модуле одной и той же меткой не должно быть помечено более одного предложения. При отождествлении меток ведущие нули не учитываются.

3.5.    Символические имена. Символическое имя состоит из буквы, за которой может следовать еще до четырех буквенно-цифровых символов (см. пп. 10.1 —10.1.10 относительно классификации символических имен и ограничений на их использование).

3.6.    Упорядоченность символов. Символы, образующие программный модуль, считаются упорядоченными. В частности, любой осмысленный набор символов, образующий имена, строки и предложения, является упорядоченным. Эта упорядоченность определяется упорядоченностью символов в строке (п. 3.2) и порядком следования строк в программном модуле.

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

4. типы ДАННЫХ

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

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

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

ГОСТ 23057-78 Стр. 7

Для символического имени тип данного может быть установлен по первой букве этого имени (п 5 3)

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

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

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

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

4 2 3 Тип двойной точности — отсутствует, определение — по ГОСТ 23056-78

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

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

4 2 6 Тип текстовый — отсутствует, определение- по ГОСТ 23056-78

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

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

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

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

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

Стр. 8 ГОСТ 23057-78

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

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

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

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

P.Q

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

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

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

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

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

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

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

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

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

ГОСТ 23057-78 Стр. 9

данных как единого целого достигается посредством использования имени массива.

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

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

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

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

C*V+K

C*V—K

OV

V+K

V-K

V

к

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

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

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

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

Стр. 10 ГОСТ 23057-78

ких параметров функций приведены в разд. 8 (см. п. 10.2.1 относительно требований к ссылкам на функции).

5.3.    Правила типов для идентификаторов данных и процедур.

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

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

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

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

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

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

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

6. ВЫРАЖЕНИЯ

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

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

-Ь    Сложение

—    Вычитание

*    Умножение

/    Деление

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

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

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

1

Издание официальное    Перепечатка воспрещена

2

Переиздание (июнь 1982 г ) с Изменением М 1, утвержденным в июне 1980 г (ИУС 9—80)

5—310