Б1. Заголовок процедуры, состоящий из зарезервированного слова procedure, имени процедуры и списка параметров, за которым следует идентификатор типа элементов списка (служебное слово var отсутствует):
procedure имя_процедуры (<сп.ф.п.>: тип п. [;<сп.ф.п.>: тип п. [;<сп.ф.п.>: тип п.]]);
где <сп.ф.п.> – список формальных параметров, тип п. – тип параметров.
Параметры процедуры в этом случае называют "параметры-значения". Если в заголовке процедуры отсутствует слово var, то изменение параметров-значений не будет передано в основную программу или охватывающую подпрограмму, так как подпрограмма получает не сам фактический параметр, а его значение, то есть копию.
Б2. Заголовок процедуры, состоящий из зарезервированного слова procedure, имени процедуры, служебного слова var и списка параметров, за которым следует идентификатор типа элементов списка:
procedure имя_процедуры (var <сп.ф.п.>: тип п. [;var <сп.ф.п.>: тип п. [;var <сп.ф.п.>: тип п.]]);
Параметры процедуры в этом случае называют "параметры-переменные". Использование параметров-переменных позволяет уменьшить объём программы.
Б3. Заголовок процедуры, состоящий из зарезервированного слова procedure, имени процедуры, служебного слова var и списка параметров без указания их типа:
procedure имя_процедуры (var <сп.ф.п.>);
Параметры процедуры в этом случае называют "параметры-переменные". Ответственность за совпадение типов формальных и фактических параметров в этом случае берёт на себя программист.
В список формальных параметров в подпрограмме можно включать только стандартные или ранее объявленные типы данных. Поэтому, например, нельзя объявлять объект типа массива в виде:
procedure имя_процедуры (<сп.ф.п.> : array [1 .. 15] of real);
так как здесь объявляется тип-диапазон, указывающий границы индексов массива.
Правильным в этом случае будет предварительно описать тип объекта в основной программе, а затем этот тип ввести в заголовок процедуры: