Deklaracja procedury ma postać:
procedure NazwaProcedury(ListaParametrow); dyrektywy; LokalneDeklaracje; begin instrukcje end;
gdzie:  NazwaProcedury jest poprawnym identyfikatorem, instrukcje są sekwencją instrukcji wykonywaną podczas wywołania, (ListaParametrow), dyrektywy i LokalneDeklaracje są opcjonalne.
Przykład deklaracji procedury:
procedure NumString(N: Integer; var S: string); var V: Integer; begin V := Abs(N); S := ''; repeat S := Chr(V mod 10 + Ord('0')) + S; V := V div 10; until V = 0; if N < 0 then S := '-' + S; end;
Przykład wywołania powyższej procedury:
NumString(17, MyString);
Wywołanie tej procedury przypisuje zmiennej MyString wartość "17".
Wewnątrz procedury/funkcji można używać zmiennych i innych identyfikatorów zadeklarowanych w części LokalneDeklaracje. Można także używać identyfikatorów stanowiących nazwy parametrów z listy parametrów (ListaParametrow) (jak N i S w powyższym przykładzie); lista parametrów definiuje zbiór lokalnych zmiennych, lecz nie można redeklarować identyfikatorów z listy w części LokalneDeklaracje. Można także używać innych identyfikatorów, których zakres ważności obejmuje miejsce deklaracji procedury/funkcji.