Procedury i funkcje (ang. routines) są zwartymi blokami instrukcji, które mogą być wywoływane z różnych miejsc w programie. Ponadto, wywołanie funkcji powoduje zwrócenie wyznaczonej wewnątrz nich wartości; w przeciwieństwie do procedur, które nie zwracają wartości.
Wywołanie funkcji może być użyte w wyrażeniach i instrukcjach podstawienia. Np. instrukcja:
I := MojaFunkcja(X);
wywołuje funkcję MojaFunkcja i przypisuje jej wynik zmiennej I. Wywołanie funkcji nie może być umieszczane po lewej stronie instrukcji podstawienia.
Zarówno funkcje jak i procedury mogą stanowić kompletne instrukcje. Np.:
DoSomething;
wywołuje procedurę lub funkcję DoSomething; jeśli DoSomething jest funkcją, w powyższym wywołaniu zwracana przez nią wartość jest utracona.
Procedury i funkcje mogą wywoływać same siebie w sposób rekurencyjny.