Я просто не знаю, что делать на cyberforum'е куча ссылок на разные компиляторы

P.S. прошу не устраивать holy wars!!! мне нужен обоснованный ответ!
varРаботает как ни в чем не бывало
arr : array[1 .. random(20)] of integer;
begin
writeln('Это нормально?');
end.
procedure p(const sz : integer);, хотя я как бы намекал компилятору, что sz изменяться не будет - что мешало ему точно так же как и в предыдущем случае плюнуть на ISO7185 и выделить sz элементов? Несуразица какая-то получается.
var
arr : array[1 .. sz] of integer; // Ожидалось константное выражение
i : integer;
begin
for i := 1 to sz do
begin
arr[ i ] := 0;
end;
end;