Что не правильно в коде?? ? Паскаль, pascal! Помогите!
procedure Merge(var arr:array of integer; a, c, b: integer );
var
arr1, arr2 : array of integer;
j, i, f, n1, n2, l, m: integer;
begin
j:= 1;
i:= 1;
f:= 1;
n1:= c;
n2:= b - c;
SetLength(arr1, n1);
SetLength(arr2, n2);
for l:= a to c do
arr1[l]:= arr[l];
for m:= 1 to n2 do
for l:= c+1 to b do
arr2[m]:= arr[l];
repeat
if arr1[j] < arr2 then
begin
arr[f]:= arr1[j];
j:= j + 1;
end
else
begin
arr[f]:= arr2;
i:= i + 1;
end;
f:= f + 1;
until(j - 1 = n1) or (i - 1 = n2);
if j - 1 = n1 then
for l:= i to n2 do
for m:= f to b do
arr[m]:= arr2[l]
else
for l:= j to n1 do
for m:= f to b do
arr[m]:= arr1[l];
end;
function Split(var arr:array of integer; a, b: integer): integer;
var
k: real;
c: integer;
begin
k:= b/2;
c:= trunc(k);
Split:= c;
end;
procedure Sort(var arr:array of integer; a, b: integer);
var
c: integer;
begin
c := Split(arr, a, b);
Sort(arr, a, c);
Sort(arr, c + 1, b);
Merge(arr, a, c, b);
end;
var
arr: array of integer;
n, i: integer;
begin
writeln('How much elements of array ?');
readln(n);
SetLength(arr, n);
writeln('Filling of array:');
for i:= 1 to n do
read(arr);
Sort(arr, 1, n);
for i:= 1 to n do
write(arr, ' ');
readln;
end.