Помогите с программой библиотекаю не правильно работает

program Biblioteka;

type
  Bibl = record {описание типа }
    Inv_nomer: integer;
    Name_author: string[50];
    Naim_knigi: string[20];
    God_izd: string[20];
    Mesto_izd: string[20];
    Naim_izd: string[20];
  end;

var
  f: file of Bibl;
  zn, filename: string;
  t, k: integer;
  s: string;

procedure Creatfile;{создание файла}
begin
  Writeln('Задайте имя файла');
  Readln(filename);
  Assign(f, filename); {связь с внешним файлом}
  Rewrite(f);{открытие нового файла для записи}
end;

procedure Addrecord;{добавление записи в файл}
var
  rez: integer;
  kn: char;
begin
  while rez <> 0 do
  begin
    
    Writeln(' Задайте имя файла, куда добавить запись');
    Readln(filename);
    Assign(f, filename); {установка связи}
    Reset(f);
    
    if rez <> 1 then
    begin
      Writeln('Проверьте правильность имени файла! (Y/N)');
      Readln(kn);
      if (kn = 'n') or (kn = 'N') then halt(0);
    end;
  end;
end;

procedure Inputfile;{ввод данных в файл}
var
  st: Bibl;
  k: char;
begin
  Writeln('Введите данные о новой книге:');
  Write('Инвентарный номер книги:');
  Readln(st.Inv_nomer);
  Write('Имя автора:');
  Readln(st.Name_author);
  Write('Наименование книги:');
  Readln(st.naim_knigi);
  Write('Год издания:');
  Readln(st.god_izd);
  Write('Наименование издательства:');
  Readln(st.Naim_izd);
  Write('Место издания:');
  Readln(st.Mesto_izd);
  
  Write('Ввести данные о новой книге? (Y/N)');
  Readln(k);
  Writeln;
end;

procedure Redzap;{редактирование записи}
var
  st: Bibl;
  filename: string[20];
  st2: integer;
  Inv_nomer2: integer;
  Name_author2: string[20];
  Naim_knigi2: string[20];
  God_izd2: string[20];
  Naim_izd2: string[20];
  Mesto_izd2: string[30];
  x: integer;
begin
  Writeln('Задайте имя файла');
  Readln(filename);
  Assign(f, filename);
  Reset(f);
  with st do
  begin
    
    Write('Введите инвентарный номер книги:');
    Readln(st2);
    x := 0;
    while not eof(f) do
    begin
      Read(f, st);
      if st.Inv_nomer = st2 then
      begin
        Writeln('Введите новые данные о книге:');
        Write('Инвентарный номер книги:');
        Readln(st.Inv_nomer);
        Write('Имя автора:');
        Readln(st.Name_author);
        Write('Наименование книги:');
        Readln(st.Naim_knigi);
        Write('Год издания:');
        Readln(st.God_izd);
        Write('Наименование издательства:');
        Readln(st.Naim_izd);
        Write('Место издания:');
        Readln(st.Mesto_izd);
        
        seek(f, filepos(f) - 1);
        Write(f, st);x := 1;
      end;
    end;
    Close(f);
  end;
  if x = 0 then
  begin
    Writeln('Записи с таким номером нет!');
    Readln
  end;
end;

procedure Openfile;{процедура открытия файла}
var
  rez: integer;
  kn: char;
begin
  while rez <> 0 do
  begin
    
    Write('Задайте имя файла:');
    Readln(filename);
    Assign(f, filename);
    Reset(f);
    
  end;
end;

procedure Outputfile;{вывод данных из файла}
var
  st: Bibl;
begin
  while not eof(f) do
  begin
    Read(f, st);
    
    Writeln('Инвентарный номер книги:', st.Inv_nomer);
    Writeln('Имя автора:', st.Name_author);
    Writeln('Наименование книги:', st.Naim_knigi);
    Writeln('Год издания:', st.God_izd);
    Writeln('Наименование издательства:', st.Naim_izd);
    Writeln('Место издания:', st.Mesto_izd);
    Writeln('Для продолжения нажмите (Enter)');
    Readln;
  end;
  Close(f);
end;

procedure Clearfile;{удаление записи из файла}
var
  st: Bibl;
  I_N: integer;
  fo: file of Bibl;
begin
  
  Writeln('Задайте имя файла, из которого удаляются элементы');
  Readln(filename);
  Assign(f, filename);
  Reset(f);
  Assign(fo, 'newfile.dat');
  Rewrite(fo);
  
  Writeln('Введите номер книги, запись о которой удаляется');
  Readln(I_N);
  while not eof(f) do
  begin
    read(f, st);
    if st.Inv_nomer <> I_N then
      Write(fo, st);
  end;
  Close(f);
  Close(fo);
  Erase(f);
  Rename(fo, filename);
end;
{Основная часть программы}
procedure P_Nom;{поиск по номеру}
var
  PNo: integer;
  st: Bibl;
begin
  
  write('Введите инвентарный номер книги: ');
  readln(PNo);
  
  begin
    read(f, st);
    if PNo = st.Inv_nomer then begin
      Writeln('Инвентарный номер книги:', st.Inv_nomer);
      Writeln('Имя автора:', st.Name_author);
      Writeln('Наименование книги:', st.Naim_knigi);
      Writeln('Год издания:', st.God_izd);
      Writeln('Наименование издательства:', st.Naim_izd);
      Writeln('Место издания:', st.Mesto_izd); end;
    if PNo <> st.Inv_nomer then
      Writeln('Книг с таким номером нет!');
    Writeln('Нажмите <Enter> для выхода ');
    readln; end;
  close(f);
end;

procedure P_Name;{поиск по имени автора}
var
  PN: string[15];
  st: Bibl;
begin
  
  writeln('Введите полное имя автора: ');
  readln(PN);
  if PN = st.Name_author then begin
    Writeln('Инвентарный номер:', st.Inv_nomer);
    Writeln('Имя автора:', st.Name_author);
    Writeln('Наименование книги:', st.Naim_knigi);
    Writeln('Год издания:', st.God_izd);
    Writeln('Наименование издательства:', st.Naim_izd);
    Writeln('Место издания:', st.Mesto_izd);
  end;
  if PN <> st.Name_author then
    writeln('Авторов с таким именем нет!');
  writeln('Нажмите <Enter> для выхода ');
  readln;
end;

begin
  
  Writeln(' Меню:');
  
  Writeln('1:Создание файла');
  Writeln('2:Добавление записи в файл');
  Writeln('3:Редактирование записи в файле');
  Writeln('4:Просмотр файла ');
  Writeln('5:Удаление записи из файла');
  Writeln('6:Поиск по инвентарному номеру книги');
  Writeln('7:Поиск по имени автора');
  Writeln('8:Выход из программы');
  Readln(k);
  case k of
    1: begin Creatfile;Inputfile end;
    2: begin Addrecord;Inputfile end;
    3: redzap;
    4: begin Openfile;Outputfile end;
    5: Clearfile;
    6: begin Openfile;P_Nom end;
    7: begin Openfile;P_Name end;
  {8:Exit}
  end;
end.