Випереджальне оголошення процедур і функцій

У разі прямої рекурсії підпрограма містить виклики самої себе.

У разі непрямої рекурсії підпрограма містить виклики інших підпрограм, що, у свою чергу, містять виклики даної підпрограми. Якщо декілька підпрограм містять непрямі рекурсивні виклики, то до деяких з них має бути застосоване випереджальне оголошення. Випереджальне оголошення процедур і функцій реалізується конструкцією forward.

Якщо у програмі є підпрограми що викликають одна одну, то спочатку в розділі оголошень програми або підпрограми вищого рівня записуються лише заголовки кількох із них (якщо таких підпрограм дві – то однією з них), а замість їх тіла пишеться директива forward , тобто «попереду»:

Procedure < ім’я > (< оголошення параметрів >); forward;

Function < ім’я > (<оголошення параметрів >): <тип >; forward;

Така підпрограма стає відомою іншим підпрограмам навіть без фактичної реалізації її тіла. Решту підпрограм розташовують так, щоб вони містили виклики лише тих підпрограм, заголовки яких (разом із тілом чи директивою forward ) було записано вище. Підпрограми, що їх заголовки записано без тіла, мають бути реалізовані нижче. Така реалізація розпочинається зі скороченого заголовка:

Procedure < ім’я >;

Function < ім’я >;

Оголошення параметрів і типу значення, що його повертає функція, у скороченому заголовку відсутні.