Ребят, нужна помощь. Есь задача
uses crt;
type
   clinic = record
      sur, add, diag : string;
      sex: char;
      age: byte;
      end;
var
   a: array[1..100] of clinic;
   i,n,kol,x: byte;
   key: char;
   filename, town, y: string;
   f: text;
begin
   clrscr;
   write('введите имя файла: ');
   readln(filename);
   assign(f,filename);
   rewrite(f);
   repeat
      inc(i);
      with a[i] do begin
         write('фамилия пациента: ');
         readln(sur);
         writeln(f,'фамилия: ',sur);
         write('пол (м/ж): ');
         readln(sex);
         writeln(f,'пол: ',sex);
         write('возраст: ');
         readln(age);
         writeln(f,'возраст: ',age);
         write('место проживания: ');
         readln(add);
         writeln(f,'город: ',add);
         write('диагноз: ');
         readln(diag);
         writeln(f,'диагноз: ',diag);
      end;
         writeln('Выход? (д/н) ');
         readln(key)
   until upcase(key)='Д';
   close(f);
   n:=i;
   write('введите наш город: ');
   readln(town);
   for i:=1 to n do
   with a[i] do
      if add<>town then inc(kol);
   writeln('количество иногородних: ',kol);
   writeln('введите X: ');
   readln(x);
   writeln('введите Y: ');
   readln(y);
   for i:=1 to n do
   with a[i] do
      if (age>x) and (diag=y) then
         writeln('фамилия: ',sur);
   readkey
end.


Нужно вывести:
1) список иногородних с указанием городов в алфавитном порядке и для каждого города – список фамилий в алф. порядке (сортировка вставками по индексам по двум араметрам одновременно, индекс- номер позиции в файле)
2) список всех диагнозов, поставленных пациентам старше заданного возраста, в алфавитном порядке(челночная сортировка).

Помогите пожалуйста !