Внешние процедуры

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

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

Общий вид внешней процедуры:

Заголовок процедуры

[Операторы описания]

[Исполняемые операторы]

[contains

внутренние процедуры]

Оператор end процедуры

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

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

Все процедуры должны иметь возможность обмениваться данными с вызывающими программными единицами – получить входные данные от вызывающей программы и передать ей результаты своей работы. Обмен информацией с процедурами может происходить через параметры (аргументы) процедур и/или через глобальные данные. Организация глобальных данных рассматривается в разделе «Модули».

При передаче данных через параметры в заголовке процедуры указывается список формальных параметров – перечень переменных и/или массивов, которые используются в ходе выполнения процедуры.

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

Каждый параметр процедуры имеет следующие основные характеристики:

- тип;

- ранг – размерность или количество измерений; ранг переменной равен 0;

- назначение параметра – входной, выходной или универсальный (изменяемый).

Назначение формального параметра определяет атрибут intent:

intent(in) – входной параметр;

intent(out) – выходной параметр;

intent(inout) – универсальный параметр.

Если атрибут назначения параметра не указан, то по умолчанию параметр считается универсальным (inout).

Имеется два основных вида процедур: процедуры-функции function и процедуры-подпрограммыsubroutine.