Подпрограмма описывается в разделе подпрограмм указанием ее заголовка и тела. В заголовке объявляются имя подпрограммы и формальные параметры, если они есть. Для функции, кроме того, указывается тип возвращаемого ею результата. За заголовком следует тело подпрограммы, которое подобно программе состоит из раздела описаний и раздела исполняемых операторов.
Описание процедуры в общем виде выглядит так:
Procedure<имя_процедуры> (<список форм. параметров>);
{раздел описаний процедуры}
begin{раздел операторов - тело процедуры}
end;
Описание функции в общем виде выглядит так:
Function<имя_функции> (<список форм. параметров>):<тип>;
{раздел описаний функции}
begin{раздел операторов - тело процедуры}
<имя_функции> := <выражение_результат>;
end;
где <имя_функции> – имя описываемой функции;
<имя_ процедуры> – имя описываемой процедуры;
<список форм. параметров> – список формальных параметров процедуры или функции;
<тип> – тип значения, которое функция возвращает в вызвавшую ее программу.
Сразу за заголовком подпрограммы может следовать одна из стандартных директив assembler, external, far, forward, inline, interrupt, near. Эти директивы уточняют действия компилятора и распространяются только на данную подпрограмму.
Нередко в подпрограммах для повышения их удобочитаемости используют оператор выхода exit. Это приводит к тому, что, не доходя до конца тела подпрограммы, ее выполнение будет прервано оператором exit и выполнение программы будет продолжено непосредственно со следующего оператора за вызовом данной подпрограммы.