Помогите немогу понять почему неработает сортировка Шелла .За любую помощь большое спасибо.
program lr1;
uses
crt;
const
m = 5;
type
DataItem = integer;
n = array [1..m] of DataItem;
var
z, g: integer;
mas: n;
proz: integer;
fail: file of integer;
procedure Bubble(var item: n; count: integer);{Пузирькова сортіровка}
var
i, j: integer;
x: DataItem;
begin
for i := 2 to count do
begin
for j := count downto i do
if item[j - 1] > item[j] then
begin
x := item[j - 1];
item[j - 1] := item[j];
item[j] := x;
end;
end;
end;{конец сортировки пузырьковым методом}
procedure Bubbleon(var item: n; count: integer);{Обратная пузирькова сортіровка}
var
i, j: integer;
x: DataItem;
begin
for i := 2 to count do
begin
for j := count downto i do
if item[j - 1] < item[j] then
begin
x := item[j - 1];
item[j - 1] := item[j];
item[j] := x;
end;
end;
end;{конец сортировки пузырьковым методом}
Procedure Shell(var item: n; count:integer);{Сортировки Шелла}
const
t = 5;
var
i, j, k, s, v: integer;
x: DataItem;
begin
for v := 1 to t do
begin
k:=mas[m];
s:=-k;
for i := k+1 to count do
begin
x := item;
j := i-k;
if s=0 then
begin
s := -k;
s := s+1;
item := x;
end;
while (x
begin
textcolor(2);
Assign(fail, 'D:\data.txt');
rewrite(fail);
Writeln('===========Файл рандом===========');
for z := 1 to m do
begin
mas[z] := Trunc(Random * 100) - 0;
Write(mas[z],'');
writeln ();
Write(fail, mas[z]);
end;
while not eof(fail) do
writeln(fail, mas[g]);
writeln('==========Тип сортировки=========');
writeln('0:Виход');
writeln('1:Пузирькова сортировка');
writeln('2:Обратная пузирькова сортировка ');
writeln('3:Cортировка Шелла ');
writeln('Введите цифру ');
readln(proz);
textcolor(7);
case proz of
0: Exit;
1: Bubble(mas, m);
2: Bubbleon(mas, m);
3: Shell (mas,m);
end;
for z := 1 to m do
writeln(mas[z]);
close(fail);
readln;
end.