По-моему, всё достаточно просто. Процедурная константа - это такая процедурная переменная, значение которой присваивается компилитором либо рантаймом, и не может быть изменено пользовательским кодом в процессе работы.

Применение - например, синонимы (алиасы) процедур. Пишем код модуля с использованием такого синонима, а потом можем подставлять разные реализации, редактируя только одно объявление. По сравнению с процедурной переменной имеем:
- очевидность того, что значение задаётся единожды и больше не меняется;
- возможность присвоить значение на этапе компиляции;
- возможность сосредоточить параметры модуля в заголовке вместе с другими константами, а не разрываться между шапкой в начале и секцией инициализации в конце файла.

Синонимы могут быть как локальными, так и импортированными из других модулей. При этом импортированные read-only переменные не дают уверенности, что модуль не подменит реализацию в процессе работы.