Компоновщик Borland Pascal автоматически удаляет неиспользу-
емый код (по процедурам), то есть процедуры и функции, являющиеся
частью скомпилированной программы, но к которым нет обращений, не
включаются в файл типа .EXE. Процедуры, функции, переменные и ти-
пизованные константы, участвующие в процессе компиляции, но ссыл-
ки на которые отсутствуют, удаляются из файлa .EXE. Удаление не-
используемого кода выполняется по процедурам, а удаление неис-
пользуемых данных - по секциям, где эти данные описываются.
Рассмотрим следующую программу:
program SmartLink;
const
H: array[0..15] of char = '0123456789ABCDEF';
var
I,J : integer;
X,Y : real;
var
S: string[79];
var
A: array[1..10000] of integer;
procedure P1:
begin
A[1] = 1;
end;
procedure P2;
begin
I := 1;
B.Pascal 7 & Objects/LR - 410 -
end;
procedure P3;
begin
S := 'Borland Pascal';
P2;
end;
begin
P3;
end;
Основная программа вызывает процедуру P3, которая вызывает
процедуру P2, поэтому обе процедуры P2 и P3 включаются в файл
.EXE. Поскольку P2 ссылается на первый раздел описания перемен-
ных, а P3 ссылается на второй раздел описание переменных, пере-
менные I, J, X, Y, S также включаются в выполняемый файл. Однако
на процедуру P1 никаких ссылок нет, а включенные в выполняемый
файл процедуры не ссылаются на переменные Н и A, поэтому эти объ-
екты удаляются.
Эффективная компоновка имеет особую ценность в связи с ис-
пользованием модулей, которые реализуют библиотеки процедур и
функций. Примером такого модуля является стандартный модуль Dos,
который содержит ряд процедур и функций. При этом программа редко
использует все эти процедуры. Если она использует только одну или
две процедуры или функции, то только эти процедуры включаются в
полученный в результате код.