(* Процедура yesno -- получить ответ от пользователя *)
uses stdio;

const
  YES=1;
  NO=0;
  ANSWSZ=80;
  pdefault:pchar = 'Наберите "y" (YES), или "n" (NO)';
  error:pchar = 'Неопределенный ответ';


function yesno (prompt:pchar):integer;
var
  buf:array [0..ANSWSZ-1] of char;
  p_use, p:pchar;
begin
  (* Вывести приглашение, если он не равно nil.
   * Иначе использовать приглашение по умолчанию
   * pdefault *)
  if prompt <> nil then
    p_use := prompt
  else
    p_use := pdefault;
  (* Бесконечный цикл до получения правильного ответа. *)
  while true do
  begin
    (* Вывести приглашение *)
    printf ('%s > ', [p_use]);
    if fgets (buf, ANSWSZ, stdin) = nil then
    begin
      yesno:=EOF;
      exit;
    end;
    (* Удалить пробельные символы *)
    p := buf; 
    while isspace (byte(p^)) do
      inc(p);
    case p^ of
      'Y','y':
      begin
        yesno:=YES;
        exit;
      end;
      'N','n':
      begin
        yesno:=NO;
        exit;
      end;
      else
        printf (#$a'%s'#$a, [error]);
    end;
  end;
end;


var
  ans:integer;
begin
  ans := yesno (nil);
  printf ('Получен ответ: ',[]);
  if ans = YES then
    printf ('Да'#$a,[])
  else
    printf ('Нет'#$a,[]);
end.
