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