Код сильно утрирован для простоты восприятия:
- Код: Выделить всё
- 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.
Программа выводит "Введите имя файла", и завершает свою работу.
Может, я книжки верх ногами читаю?!
Подскажите мне молодому, не опытному, что тут не так. Буду очень благодарен за совет.




 Процедура работает исправно
 Процедура работает исправно 