Задача. Неправильная сортировка

Вася, решая предыдущую задачу, написал следующую программу (он использовал классический метод сортировки пузырьком):

const nmax=100;

var a:array[1..nmax] of integer;
    n:integer;


procedure swap(x,y:integer);
  var z:integer;
  begin
  z:=x;
  x:=y;
  y:=z;
  end;

procedure readdata;
  var i:integer;
  begin
  read(n);
  for i:=1 to n do read(a[i]);
  end;

procedure sort;
  var i,j:integer;
  begin
  for i:=1 to n do
    for j:=1 to n-i do
      if a[j]>a[j+1] then swap(a[j],a[j+1]);
  end;

procedure writedata;
  var i:integer;
  begin
  for i:=1 to n do write(a[i],' ');
  end;

BEGIN
readdata;
sort;
writedata;
END.

Однако оказалось, что программа не работает. Найдите ошибку в программе и укажите, как ее можно исправить.