(*~\Глагол\Отделы\ЧисАн\64\ц\ВводВывод\~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(**)                             ОТДЕЛ шцВектВВ;
(*============================================================================*
 * НАЗНАЧЕНИЕ: (ввод из файла)/(вывод в файл) и печать на экран векторов
 *                                                   широких целых 64 разряда
 *============================================================================*)

ИСПОЛЬЗУЕТ 
 шцВектор ИЗ "..\..\..\..\..\Отделы\ЧисАн\64\ц\",

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


(*=рррррррррррррррррррррррр= реализация задач =рррррррррррррррррррррррррррррр=*)


(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА ОткрытиеФайла-(имяФайла-:ЦЕПЬ):ИзФайла.ДкПотоку;
(*
 * Цель:  если возможно, то открыть поток на чтение, иначе АВОСТ
 *----------------------------------------------------------------------------*
 * До:    <имяФайла> - имя считываемого файла
 * Ответ: открытый на чтение поток
 *)
ПЕР
       потокД:ИзФайла.ДкПотоку;
УКАЗ
       потокД:=ИзФайла.Открыть(имяФайла);
  ЕСЛИ
       потокД = ПУСТО
  ТО
(*
    НаЭкран.ОшибкаВпотоке-(имяФайла,' " не найден.^');
*)
    НаЭкран.ВсяЦепь('^Файл "');
    НаЭкран.ВсяЦепь(имяФайла);
    НаЭкран.ВсяЦепь('" не найден.^');
    СТОП(1) 
  КОН;
          потокД.цВидЗнаков:=ИзФайла.знУни;
  ВОЗВРАТ потокД
КОН ОткрытиеФайла;
 
(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА изФайла-(потокД:ИзФайла.ДкПотоку):шцВектор.Доступ;
(*
 * Цель: прочитать из потока размер вектора-строки (число столбцов),
 *       создать вектор-строку из шир.целых
 *       и заполнить его данными из этого потока
 *----------------------------------------------------------------------------*
 * До:    <потокД> - открытый на чтение поток
 * Ответ: доступ к созданному вектору из шир.целых
 *)
ПЕР
  j,столбцов:ЦЕЛ;
          шцВекД:шцВектор.Доступ;
УКАЗ
                 столбцов:=ИзФайла.Цел32(потокД);
  СОЗДАТЬ(шцВекД,столбцов);

  ОТ j:=0 ДО столбцов-1 ВЫП
          шцВекД[j]:=      ИзФайла.Цел64(потокД) 
  КОН;
  ВОЗВРАТ шцВекД
КОН изФайла;
 
(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА наЭкран-(описание-:ЦЕПЬ; шцВек-:шцВектор.Вид);
(*
 * Цель:  вывести на экран содержимое вектора <шцВек> из шир.целых
 *----------------------------------------------------------------------------*
 * До: <описание> - описатель печати элемента вектора из шир.целых
 *                         (см. \Отделы\Числа\Текст.отд)
 *       <шцВек>  - печатаемый вектор-строка из шир.целых
 *)
ПЕР
  j:ЦЕЛ;
УКАЗ
  ОТ j:=0 ДО РАЗМЕР(шцВек)-1 ВЫП
      НаЭкран.Цел4числа(описание,шцВек[j],0,0,0)
  КОН; 
      НаЭкран.ВсяЦепь('^')  (* перевод строки *)
КОН наЭкран;
 
(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА наЭкранДвух-(описание-:ЦЕПЬ; шцВек1-,шцВек2-:шцВектор.Вид);
(*
 * Цель:  вывести на экран содержимое двух векторов из шир.целых
 *                                       <шцВек1, шцВек2> 
 *----------------------------------------------------------------------------*
 * До: <описание> - описатель печати элементов 2-х векторов из шир.целых
 *                         (см. \Отделы\Числа\Текст.отд)
 *     <шцВек1,шцВек2> - два печатаемых вектора-строки одинаковой длины
 *)
ПЕР
  j:ЦЕЛ;
УКАЗ
  ОТ j:=0 ДО РАЗМЕР(шцВек1)-1 ВЫП
      НаЭкран.Цел4числа(описание,
                                      шцВек1[j],шцВек2[j],0,0)
  КОН; 
      НаЭкран.ВсяЦепь('^')  (* перевод строки *)
КОН наЭкранДвух;
 
(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА наЭкранЧетырёх-(описание-:ЦЕПЬ; шцВек1-,шцВек2-,
                                       шцВек3-,шцВек4-:шцВектор.Вид);
(*
 * Цель:  вывести на экран содержимое четырёх векторов из шир.целых
 *                                          <шцВек1 ,шцВек2, шцВек3, шцВек4> 
 *----------------------------------------------------------------------------*
 * До: <описание> - описатель печати элементов 4-х векторов из шир.целых
 *                         (см. \Отделы\Числа\Текст.отд)
 *     <шцВек1,шцВек2,шцВек3,шцВек4> - 4 печатаемых вектора-строки одинаковой длины
 *)
ПЕР
  j:ЦЕЛ;
УКАЗ
  ОТ j:=0 ДО РАЗМЕР(шцВек1)-1 ВЫП
      НаЭкран.Цел4числа(описание,
                                      шцВек1[j],шцВек2[j],
                                      шцВек3[j],шцВек4[j])
  КОН; 
      НаЭкран.ВсяЦепь('^')  (* перевод строки *)
КОН наЭкранЧетырёх;

(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА вФайлЧетырёх-(выходФайл-:ВФайл.ДкПотоку;
                             описание-:ЦЕПЬ; шцВек1-,шцВек2-,
                                             шцВек3-,шцВек4-:шцВектор.Вид);
(*
 * Цель: записать в файл содержимое четырёх векторов из шир.целых
 *                                          <шцВек1 ,шцВек2, шцВек3, шцВек4> 
 *----------------------------------------------------------------------------*
 * До: <описание> - описатель печати элементов 4-х векторов из шир.целых
 *                         (см. \Отделы\Числа\Текст.отд)
 *     <шцВек1,шцВек2,шцВек3,шцВек4> - 4 записываемых вектора-строки одинаковой длины
 *)
ПЕР
  j:ЦЕЛ;
УКАЗ
  ОТ j:=0 ДО РАЗМЕР(цВек1)-1 ВЫП
      ВФайл.Цел4числа(выходФайл,   (*--- широкие/обычные/узкие целые ---*)
                             описание,
                                      шцВек1[j],шцВек2[j],
                                      шцВек3[j],шцВек4[j])
  КОН; 
      ВФайл.ЦепьЗнаков(выходФайл,'^')  (* перевод строки *)
КОН вФайлЧетырёх;
 
КОН шцВектВВ.
