1. В заголовке подпрограммы и при обращении к ней аргументы должны совпадать по типу, количеству и порядку следования.
2. В подпрограммах допускается наличие вложенных подпрограмм, количество вложений не ограничено.
3. Переменные, являющиеся формальными параметрами, а так же метки, типы, константы и переменные, описанные внутри подпрограммы, являются локальными, то есть область их действия ограничена только данной и вложенными подпрограммами. Если же объекты описаны только в основной программе или вызывающей подпрограмме, то они являются глобальными. Из-за возможности ошибочного изменения глобальной переменной в какой-либо подпрограмме, правилом хорошего стиля является локализация всех объектов, используемых в подпрограмме.
4. Работа процедуры или функции завершается после выполнения последнего оператора ее тела. Язык Турбо-Паскаль содержит дополнительное средство прерывания выполнения подпрограммы или программы в целом, это системная процедура Exit. Она возвращает управление в точку вызова. Данная процедура является избыточной и предназначена только для устранения безусловного перехода на конец подпрограммы или программы в целом, поэтому, при наличии нескольких вариантов, лучше обходиться без нее. Так, использование второго варианта подпрограммы более предпочтительно.
Procedure P(x,y:real; Var Res:real);
Begin
If x<y Then Exit;
Res:=Sqrt(x*x-y*y)
End;
Procedure P(x,y:real; Var Res:real);
Begin
If x>=y Then Res:=Sqrt(x*x-y*y)
End;