Статус документа
Статус документа

ГОСТ 23056-78 Язык программирования. ФОРТРАН (с Изменением N 1)

8. ПРОЦЕДУРЫ И МОДУЛИ

Имеются четыре категории процедур: внутренние функции, встроенные функции, внешние функции и внешние подпрограммы. Первые три категории процедур относятся к функциям (или процедурам-функциям), а последняя категория - к подпрограммам (или процедурам-подпрограммам). Имеются две категории модулей: модули-процедуры и модули-спецификации; к первой из них относятся модули-функции и модули-подпрограммы, а ко второй - модули-блоки данных. Правила типа для процедур-функций указаны в п.5.3.

8.1. Внутренние функции. Внутренняя функция определяется в том же самом программном модуле, в котором имеются ссылки на эту функцию. Такая функция определяется при помощи объявления внутренней функции.

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

8.1.1. Структура объявлений внутренних функций. Внутренняя функция определяется при помощи объявления внутренней функции, которое имеет вид:     


( - символическое имя определяемой функции;

- выражение;

каждое - символическое имя, называемое формальным параметром).

Соответствие между и должно удовлетворять правилам присваивания из пп.7.1.1.1-7.1.1.2.

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

Выражение , кроме формальных параметров, может содержать только:

нетекстовые константы;

указатели переменных;

указатели встроенных функций;

указатели внутренних функций, определенных ранее в данном программном модуле;

указатели внешних функций.

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

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

8.2. Встроенные функции и ссылки на них. Символические имена встроенных функций заранее известны процессору и, если они удовлетворяют условиям, изложенным в п.10.1.7, им приписывается специальный смысл и тип в соответствии с табл.3.

Таблица 3

Встроенная функция

Определение

Число параметров

Символическое имя

Тип

параметров

функции

Абсолютное значение

1


Вещ.

Вещ.


Цел.

Цел.


Дв.

Дв.

Усечение*

умножается на

1


Вещ.

Вещ.


Вещ.

Цел.


Дв.

Цел.

Взятие остатка**

2


Вещ.

Вещ.


Цел.

Цел.

Выбор наибольшего значения

2


Цел.

Вещ.


Вещ.

Вещ.


Цел.

Цел.


Вещ.

Цел.


Дв.

Дв.

Выбор наименьшего значения

2


Цел.

Вещ.


Вещ.

Вещ.


Цел.

Цел.


Вещ.

Цел.


Дв.

Дв.

Преобразование в плавающую форму

Преобразование от целого к вещественному

1


Цел.

Вещ.

Преобразование в фиксированную форму

Преобразование от вещественного к целому

1


Вещ.

Цел.

Передача знака

умножается на

2


Вещ.

Вещ.


Цел.

Цел.


Дв.

Дв.

Положительная разность


2


Вещ.

Вещ.


Цел.

Цел.

Получение максимальной значащей части аргумента двойной точности

1


Дв.

Вещ.

Получение вещественной части комплексного аргумента

1


Компл.

Вещ.

Получение мнимой части комплексного аргумента

1


Компл.

Вещ.

Преобразование вещественного аргумента в форму двойной точности

1


Вещ.

Дв.

Преобразование двух вещественных аргументов в комплексную форму


2


Вещ.

Компл.

Получение комплексной величины, сопряженной с аргументом

1


Компл.

Компл.

________________

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

** Функция MOD или AMOD (, ) определяется как

.