Змінні, що описані у програмі (модулі) можна використовувати в усіх функціях та процедурах, що містяться у ній. Ці змінні називають глобальними змінними.
Змінні, які описуються у підпрограмі поширюють свою дію тільки на цю підпрограму і називаються локальними.
Глобальні змінні, імена яких співпадають з локальними підпрограм та функцій, не “діють” у цих підпрограмах та функціях. Усі ж локальні змінні там можна використовувати.
Процедури
Результатом виконання процедури є не якесь значення, а зміна існуючих значень, запуск інших процедур, функцій та процесів.
Розглянемо загальний вигляд процедури:
procedure ім'я_процедури(опис параметрів);
блок опису локальних констант, змінних, типів;
Begin
послідовність операторів;
end;
На відміну від функції, в її заголовку немає імені типу для значень, породжуваних у результаті виклику, тому що ніякі значення не породжуються. За цією ж причиною в тілі процедури не може бути операторів присвоювання з її ім'ям у лівій частині. Виклик процедури складається з імені й аргументів у дужках і записується як окремий оператор.
Наприклад
Reset(Input);
Процедури доцільно використовувати у тих випадках, коли у різних місцях програми необхідно виконати однакову послідовність операцій з різними параметрами. Наприклад, у багатьох алгоритмах сортування часто використовується послідовність операторів які міняють значення двох змінних місцями. У цьому випадку доцільно винести цю послідовність операторів у окрему процедуру. Це матиме вигляд:
procedure repl (var a,b : real);
var
t:real;
begin
t:=a;
a:=b;
b:=t;
end;
і викликається ця процедура, наприклад для перестановки значень a[4] та a[5] масиву, що описаний як
var
a: array [1..1000] of real;
таким чином
…
repl (a[4],a[5]);
…
var у описі процедури носить таке саме навантаження, як і у описі функції.