(*~\Глагол\Приложения\Иное\~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(**)                           ОТДЕЛ РусЛат+;
(*============================================================================*)
(* НАЗНАЧЕНИЕ:
//             Приложение "Транслитерация (в латинские буквы) файла,
\\                                 содержащего русские буквы"                 *)
(*============================================================================*)

ИСПОЛЬЗУЕТ 
  ОС      ИЗ "..\..\Отделы\Обмен\",
 Параметр ИЗ "..\..\Отделы\Обмен\",
    Файл  ИЗ "..\..\Отделы\Обмен\",

  ИзФайла ИЗ "..\..\Отделы\Обмен\ВводВывод\",
   ВФайл  ИЗ "..\..\Отделы\Обмен\ВводВывод\",
  НаЭкран ИЗ "..\..\Отделы\Обмен\ВводВывод\",

 оЗнака   ИЗ "..\..\Отделы\Иное\",
 Транслит ИЗ "..\..\Отделы\Иное\";

(*-----------------------------------------локальная ЗАДАЧА-------------------*)
ЗАДАЧА Ошибка1(ц-:ЦЕПЬ);
УКАЗ
  НаЭкран.ВсяЦепь(ц);
  НаЭкран.ВсяЦепь("^ РусЛат вх-Файл вых-Файл");
  (*
   * Пояснение: при записи текста в поток (в т.ч. на экран)
   * знак ^ обозначает переход на новую строку и сброс данных
   *) 
  СТОП(1)
КОН Ошибка1;

(*-----------------------------------------локальная ЗАДАЧА-------------------*)
ЗАДАЧА Ошибка2(ц1-,ц2-:ЦЕПЬ);
УКАЗ
  НаЭкран.ВсяЦепь(ц1);
  Ошибка1(ц2)
КОН Ошибка2;

(*-----------------------------------------локальная ЗАДАЧА-------------------*)
ЗАДАЧА Работа(ч:ИзФайла.ДкПотоку;
              п:  ВФайл.ДкПотоку);
ПОСТ
  ЗНАКОВ=100; (* можем прочитать за раз знаков из файла *)
ПЕР
  рус:ЦЕПЬ[ЗНАКОВ  ];
  лат:ЦЕПЬ[ЗНАКОВ*2];
УКАЗ
  ПОКА
       НЕ ИзФайла.Конец(ч)
  ВЫП
          ИзФайла.Строку(ч,рус);
    Транслит.ВЛат(рус,лат);
      ВФайл.ВсяЦепь(п,лат);
    ЕСЛИ
          ИзФайла.НачалоСтроки(ч)
    ТО
      ВФайл.ЗнакЦепи(п,0DX);
      ВФайл.ЗнакЦепи(п,0AX)
    КОН
  КОН
КОН Работа;

(*------------------------------------------ Главная ЗАДАЧА-------------------*)
ЗАДАЧА Голова();
ПЕР
  ч:ИзФайла.ДкПотоку;
  п:  ВФайл.ДкПотоку;
  пИмя,                   (* имя вых-файла *)
  чИмя:Файл.ВПолного;     (* имя  вх-файла *)
УКАЗ
  ЕСЛИ Параметр.всего < 2 ТО Ошибка1("Нет имени входного файла")  КОН;
  ЕСЛИ Параметр.всего < 3 ТО Ошибка1("Нет имени выходного файла") КОН;

  Параметр.Втекст(1,чИмя);
  Параметр.Втекст(2,пИмя);

  ч:=ИзФайла.Открыть(чИмя);
  п:=  ВФайл.Открыть(пИмя);

  ЕСЛИ ч=ПУСТО ТО Ошибка2(чИмя," не открывается") КОН;
  ЕСЛИ п=ПУСТО ТО Ошибка2(пИмя," не открывается") КОН;

  ч.цВидЗнаков:=ИзФайла.знУни;
  п.цВидЗнаков:=  ВФайл.знУни;

  Работа(ч,п);

  ИзФайла.Закрыть(ч);
    ВФайл.Закрыть(п)
КОН Голова;

(*-SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS-*)
УКАЗ
  Голова
КОН РусЛат.
