Borland Pascal поддерживает две модели вызова процедур -
ближнюю (near) и дальнюю (far). С точки зрения объема программы и
скорости выполнения ближняя модель вызова более эффективна, но с
ней связаны ограничения: процедуры типа near могут вызываться
только в том модуле, где они описаны. Процедуры же с дальним ти-
пом вызова можно вызывать из любого модуля, но они несколько ме-
нее эффективны.
Примечание: О вызовах ближнего и дальнего типа расска-
зывается в Главе 22 "Вопросы управления".
На основе описания процедуры компилятор будет автоматически
выбирать правильную модель вызова. Для процедур, описанных в ин-
терфейсной части модуля (interface), используется дальняя модель
вызова - их можно вызывать из других модулей. Процедуры, описан-
ные в секции реализации модуля (implementation), имеют ближний
тип вызова. Вызываться они могут только из программ данного моду-
ля.
Для некоторых специальных целей может потребоваться исполь-
зовать модель с дальним типом вызова. Например, в оверлейных за-
дачах обычно требуется, чтобы все процедуры и функции имели даль-
ний тип вызова. Аналогично, если процедура или функция
присваивается процедурной переменной, то она также должна исполь-
зовать дальний тип вызова. Чтобы переопределить автоматический
выбор модели вызова компилятором, можно использовать директиву
компилятора {$F+}. Процедуры и функции, компилируемые в состоянии
{$F+}, всегда будут иметь дальний тип вызова (far), а в состоянии
{$F-} компилятор автоматически выбирает корректную модель. По
умолчанию используется директива {$F-}.
Чтобы задать конкретную модель вызова, в описании процедуры
перед ее блоком можно указать директиву near или far. При наличии
такой директивы она переопределяет директиву $F компилятора и ав-
томатический выбор модели вызова.