Проблема: процедура не нормально работает

Я тут вот с каким вопросом. Пишу программу "телефонная книга", алгоритм готов на бумаге. Начал кодирование, и тут столкнулся со следующей проблемой. При линейном вызове процедуры из модуля, процедура выполняет код нормально (в данном случае создает файл, имя задается переменной). Но если ту же процедуру вызывать из конструкций if then, repeat - until, case и т.д. то она проходит без создания файла. Если имя задать константой то все нормально проходит.
Код сильно утрирован для простоты восприятия:
при вызове из основной программы с линейным алгоритмом:
Файл создается.
При вызове из основной программы с нелинейным алгоритмом.
Программа выводит "Введите имя файла", и завершает свою работу.
Может, я книжки верх ногами читаю?!
Подскажите мне молодому, не опытному, что тут не так. Буду очень благодарен за совет.
Код сильно утрирован для простоты восприятия:
- Код: Выделить всё
Unit pr;
INTERFACE
procedure MakePh;
IMPLEMENTATION
procedure MakePh;
const c='.ph';
type
phon = record
Surname:string[10];
Name:string[10];
Telephon:string[10];
Stat:boolean;
end;
Ph = array [1..11] of phon;
var
F:file of Ph;
Name:string;
begin
write('Введите имя файла: ');
readln(Name);
Name:=Name+c;
Assign(F,Name);
{$I-}
reset(F);
if Ioresult <> 0 then rewrite(F);
{$I+}
close(F);
end;
BEGIN
END.
при вызове из основной программы с линейным алгоритмом:
- Код: Выделить всё
uses crt,pr;
BEGIN
MakePh;
END.
Файл создается.
При вызове из основной программы с нелинейным алгоритмом.
- Код: Выделить всё
uses crt,pr;
var I:integer;
BEGIN
write('Создать файл - "1": ');
read (I);
if I = 1 then MakePh;
END.
Программа выводит "Введите имя файла", и завершает свою работу.
Может, я книжки верх ногами читаю?!
Подскажите мне молодому, не опытному, что тут не так. Буду очень благодарен за совет.