Задание:
Для программы на сортировку строк напишите принципиальный алгоритм (последовательность блоков), а также опишите, что означает каждая переменная
Не могу найти ошибку, при запуске данного кода сортировка только по первой и второй строке, а нужно чтобы сортировка была по всем строкам в файле input.txt. В файле следующие данные
Петров;1997;4
Абрамов;1996;5
Иванов;1994;3
Богданов;1997;5
И что значит "напишите принципиальный алгоритм (последовательность блоков)" не понимаю

Код:
var
temp_s, s1: string; //объявление строковых переменных
s: array[1..255]of string; //array - объявление массива; string - строковая переменная
ball, year: array[1..255]of integer; //integer - используется для определения целых чисел
i, j, n, pos1, kod, k: integer; //объявление целых чисел
input, output: text;//input, output - системные файлы для связи с внешними устройствами ввода/вывода текстовые файлы

begin// начало блока
assign(input, 'input.txt'); //ассоциация переменной input с файлом input.txt
reset(input); //открытие файла связанного с переменной input на чтение
i := 1;
while not eof(input) do //пока не конец файла input
begin//начало блока
readln(input, temp_s); //чтение переменной input в строке-накопителе
pos1 := pos(';', temp_s); //позиция первого пробела
s[i] := copy(temp_s, 1, pos1 - 1); //копирует из строки temp_s начиная с первого символа символ номер один
delete(temp_s, 1, pos1); //удаление символов из строки temp_s начиная с первого символа символ номер один
pos1 := pos(';', temp_s); //позиция второго пробела
s1 := copy(temp_s, 1, pos1 - 1); //копируем подстроку до второго пробела
val(s1, year[i], kod); //Преобразует строку в число
delete(temp_s, 1, pos1); //удаляем все до второго пробела включительно
s1 := temp_s;
val(s1, ball[i], kod); //Преобразует строку в число
writeln(s[i], ';', year[i], ';', ball[i]); //writeln - перенос на новую строку
i := i + 1;
end; //конец блока
n := i - 1;
writeln('---всего ', n, ' записей---');
//сортировка
for i := 1 to (n - 1) do
for j := 1 to (n - i) do
if s[j] > s[j + 1] then;
begin//начало блока
temp_s := s[j];
s[j] := s[j + 1];
s[j + 1] := temp_s;
k := year[j];
year[j] := year[j + 1];
year[j + 1] := k;
k := ball[j];
ball[j] := ball[j + 1];
ball[j + 1] := k;
end; //конец блока
assign(output, 'output.txt'); // ассоциация переменной output с файлом output.txt
rewrite(output); // открытие файла, связанного с переменной output, на запись
assign(output, 'output.txt'); //вывод в output.txt
writeln('---После сортировки---');
for i := 1 to n do
writeln(s[i], ' ', year[i], ' ', ball[i]);
assign(output, 'output.csv'); //вывод в CSV-файл
rewrite(output); //открытие файла output на запись
for i := 1 to n do //чтение элементов от 1 до n
writeln(output, s[i], ';', year[i], ';', ball[i]);
close(output); //закрытие файла output
close(input); // закрытие файла связанного с input
end. //конец блока