Код
Uses CRT;
Const
n=2;
D:word=12;
var
a:array[1..n] of integer;
b:word absolute n:2;
i:word;
c:word absolute d;
begin
ClrScr;
readln(b);
for i:=1 to b do a[i]:=random(100);
for i:=1 to b do write(a[i],' ');
writeln; writeln('c=');
readln(c);
writeln(d);
end.
Const
n=2;
D:word=12;
var
a:array[1..n] of integer;
b:word absolute n:2;
i:word;
c:word absolute d;
begin
ClrScr;
readln(b);
for i:=1 to b do a[i]:=random(100);
for i:=1 to b do write(a[i],' ');
writeln; writeln('c=');
readln(c);
writeln(d);
end.
Значение константы, используемой для индексации можно безболезненно менять в меньшую сторону.
Значение свободной константы можно изменять свободно.
Почему значение констант индексирования нельзя менять в большую сторону при сохранении размера переменной в памяти?
ответ:
массив или строка увеличится, автоматически новая облать памяти попытается обнулиться, а там могут быть данные чужие, и получаем RUN-TIME ERROR.

Если есть подобные примеры работы с директивой absolute, кидайте сюда, может получиться интересная статья в итоге...
ЗЫ: Странно, зачем вообще константы в Паскале .... :D