<?php
//**************************************************************
//     ОБРАБОТКА КНОПОКИ  РАЗОБРАТЬ НЕРАЗОБРАННЫЕ ТЕЛЕГРАММЫ
//**************************************************************
//СПИСКИ МАССИВОВ ОБОЗНАЧЕНИЙ смотри modules/f3.php
//**************************************************
//******************************************************
// контроль ошибок телеграмм
// если ошибок нет данные добавляются в соответствующую таблицу контроля данных или изменяются там
// контроль уровней
// контроль ледовых явлений
// контроль толщины льда
$vvv="все строки";
$rew=date_default_timezone_set("Asia/Krasnoyarsk");
//******************************************************
//if (isset ($_REQUEST['razbor']))                    // если запустил  запись в базу
//{
list($abs1, $s2) = explode("pages",getcwd( ));

$ttab =array();
$ttab2 =array();


include $abs1."/modules/f3.php";                    // вставим фрагмент контроля наличия обозначений в всех таблицах
if ($os2=="")
{
//******************************************
// сформируем массив кодов ледовых явлений
//*****************************************
//  ледовые явления - массив кодовые числа
$f=substr(getcwd ( ), 0, $poz)."pages/100/contents/02,05,17_06/1.txt";  // файл ледовых
$r = file($f); 	                                                        // ледовые в массив
for ($i = 0; $i <= count($r)-1; $i++)                                   // каждую строку
{$tag=explode("```",str_replace("\r\n","",$r[$i]));                     // в массив кодов  
$ледовые_явления_коды[$tag[$ледовые_поля100['кодовое_число']]][0]=$tag[$ледовые_поля100['интенсивность_есть']];
$ледовые_явления_коды[$tag[$ледовые_поля100['кодовое_число']]][1]=$tag[$ледовые_поля100['допустимо']];
$ледовые_явления_коды[$tag[$ледовые_поля100['кодовое_число']]][2]=$tag[$ледовые_поля100['характеристика']];
}
// ледовые явления - коды интенсивности
$f=substr(getcwd ( ), 0, $poz)."pages/100/contents/02,05,17_07/1.txt";  // файл интенсивность ледовых
$r = file($f); 	                                                        // в массив
for ($i = 0; $i <= count($r)-1; $i++)                                   //каждую строку
{$tag=explode("```",str_replace("\r\n","",$r[$i]));                     // на столбцы  
$ледовые_интенсивность_коды[$tag[$интенсивность_ледовых_поля100['интенсивность_код']]]=
$tag[$интенсивность_ледовых_поля100['процент']];                 // массив кодов ключ - код значение - %
}
//****************************************
// сформируем массив высота снега на льду
//****************************************
$f=substr(getcwd ( ), 0, $poz)."pages/100/contents/27,04,17_05/1.txt";  // файл толщина льда
$r = file($f); 	                                                        // в массив
for ($i = 0; $i <= count($r)-1; $i++)                                   // для всех строк
{$tag=explode("```",str_replace("\r\n","",$r[$i]));                     // строку на столбцы  
$высота_снега_коды[$tag[$высота_снега100['код']]]="";                   // массив кодов
}

//****************************************
//  массив добавления в контроль уровней
//****************************************
$контрольуровней_шаблон=$контрольуровней_поля2;
for ($i = 0; $i <= count($контрольуровней_поля2)-1; $i++)               // для всех строк
{$контрольуровней_шаблон[$i]="";
}
$контрольуровней_шаблон2=$контрольуровней_шаблон;                       // пустой шаблон
$уровни=array();                                        // масси строк таблицы Контроль уровней

//****************************************
// массив добавления в контроль ледовые
//****************************************
$контрольледовые_шаблон=$контрольлед_явл_поля2;
for ($i = 0; $i <= count($контрольлед_явл_поля2)-1; $i++) 
{$контрольледовые_шаблон[$i]="";
}
$контрольледовые_шаблон2=$контрольледовые_шаблон;                       // пустой шаблон
// сын контроля ледовых - строка списка ледовых
//$контрольлед_явл_сын_шаблон=$контрольлед_явл_сын_поля2;
for ($i = 0; $i <= count($контрольлед_явл_сын_поля2)-1; $i++) 
{$контрольлед_явл_сын_шаблон[$i]="";
}
$контрольлед_явл_сын_шаблон2=$контрольлед_явл_сын_шаблон;               // пустой шаблон
$ледовые=array();                                        // масси строк таблицы Контроль ледовые

//********************************************
// массив добавления в контроль толщина льда
//********************************************
$контрольлед_шаблон=$контрольлед_поля2;
for ($i = 0; $i <= count($контрольлед_поля2)-1; $i++)
{$контрольлед_шаблон[$i]="";
}
$контрольлед_шаблон2=$контрольлед_шаблон;                       // пустой шаблон
$снег=array();                                        // масси строк таблицы Контроль толщины льда


//****************************************
//  массив добавления в контроль ГЭС
//****************************************
$контрольгэс_шаблон=$контрольгэс_поля2;
for ($i = 0; $i <= count($контрольгэс_поля2)-1; $i++)               // для всех строк
{$контрольгэс_шаблон[$i]="";
}
$контрольгэс_шаблон2=$контрольгэс_шаблон;                       // пустой шаблон
$гэс=array();                                          // масси строк таблицы Контроль ГЭС
// массив индексов постов+ГЭС $индексы_уровни_и_гэс сфрмирован в  modules/f3.php
//*****************************
//
//*****************************
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/11,08,16_03/1.txt";  // файл телеграмм    
$r = file($f); 	                                       // телеграммы в массив
$w = fopen($f, 'w') or exit;   
$os="";                                               // ошибки телеграммы
for ($i = 0; $i <= count($r)-1; $i++)                  // просмотрим все телеграммы
{
$os="";
$r[$i]=preg_replace("/  +/"," ",$r[$i]);               // удалим лишние пробелы
$tag=explode("```",str_replace("\r\n","",$r[$i]));     // разделим телеграмму на колонки
if ($tag[$телеграммы_поля['разобрано']]=="нет")          // если телеграмма неразобрана
{
$tag[$телеграммы_поля['текстп']]="";
$tag[$телеграммы_поля['ошибки']]="";
$tt=$tag[$телеграммы_поля['текст']];                  //  текст телеграммы
$tag[$телеграммы_поля['разобрано']]="да";             // установим признак разобрано
if (!strstr($tt, "HHZZ"))                              // есть ли признак гидрологической телеграммы 
{$os=$os." Нет HHZZ !";
}
$hzz=explode("HZZ",$tt);                               // сколько признаков
if (count($hzz)>2)                                     // не 1
{
$os=$os." HHZZ>1 ";
}

list($q, $q2) = explode("HHZZ",$tt);                   // разобьем текс телеграммы на голову и строки
if (trim($q2)== "" )                                   // если строк нет    
{$os=$os.="Нет разделов! ";
}
//поскольку рассматриваем даты измерения  давностью не более 3 дней назад от даты получено
list($da, $bp) = explode(" ",$tag[$телеграммы_поля['получено']]);   // разобьем колонку получено на дату и время
list($d, $m,$y) = explode(".",$da);                                 // разобьем дату
if (strlen($da)==0)
{$os='"Получено" нет! ';}
else
{
$sdc=",0,1,2,3,4,5,6,7,8,9,.,";                      // список допустимых символов в дате 
for ($jj = 0; $jj <= strlen($da)-1; $jj++)            // просмотрим все символы
{if (!strstr($sdc,substr($da, $jj, 1)))
{$os=$os.'"Получено" неформат!';
}}
}
$sdd=",0,1,2,3,4,5,6,7,8,9,:, ";                      // список допустимых символов в времени
for ($jj = 0; $jj <= strlen($bp)-1; $jj++)            // просмотрим все символы
{if (!strstr($sdd,substr($bp, $jj, 1)))
{$os=$os.'"Время" неформат!';
}
}
if ($os=="")
{if (!checkdate ($m, $d, $y))
{$os=$os.'"Получено" не дата! ';}
}
if ($os!="")                                          // серьезные ошибки раздела 0 разбор бессмысленен
{$tag[$телеграммы_поля['ошибки']]=$os;                // запомним ошибки в массиве  
$tag[$i]=implode("```", $tag)."\r\n";
fwrite($w,$tag[$i]);
continue;                                             // на следующую телеграмму 
}

//*****************************
// ошибки в строках телеграммы
//*****************************
//$os="";
// сформируем список допустимых дат   
// массив допустимых чисел и дат;  индекc - число, значение - дата
$stm[date("d",mktime(0, 0, 0, $m  , $d, $y))]=date("d.m.Y",mktime(0, 0, 0, $m  , $d, $y));
$stm[date("d",mktime(0, 0, 0, $m  , $d-1, $y))]=date("d.m.Y",mktime(0, 0, 0, $m  , $d-1, $y));
$stm[date("d",mktime(0, 0, 0, $m  , $d-2, $y))]=date("d.m.Y",mktime(0, 0, 0, $m  , $d-2, $y));
$stm[date("d",mktime(0, 0, 0, $m  , $d-3, $y))]=date("d.m.Y",mktime(0, 0, 0, $m  , $d-3, $y));
$stm[date("d",mktime(0, 0, 0, $m  , $d-4, $y))]=date("d.m.Y",mktime(0, 0, 0, $m  , $d-4, $y));
$stm[date("d",mktime(0, 0, 0, $m  , $d-5, $y))]=date("d.m.Y",mktime(0, 0, 0, $m  , $d-5, $y));
// голову телеграммы удалим ненужные символы и  в одну строку
$q=str_replace("\r","",trim($q));
$q=str_replace("\n","",$q);
$q =str_replace(Chr(2), "",$q);
$q =str_replace(Chr(10), "",$q);
$q =str_replace(Chr(13), "",$q);
$q =$q."HHZZ";
// в теле телеграммы удалим ненужные символы
$q =str_replace(" ", "&nbsp;",$q);
$q2=str_replace("\r","",trim($q2));
$q2=str_replace("\n","",$q2);
$q2 =str_replace(Chr(2), "",$q2);
$q2 =str_replace(Chr(10), "",$q2);
$q2 =str_replace(Chr(13), "",$q2);
$q2 =str_replace(" =", "=",$q2);
$q2 =str_replace("= ", "=",$q2);
$q2 =str_replace("ТИРЕ", "",$q2);
$q2 =str_replace("ЦОР", "",$q2);
$ts=explode("=",$q2);                                // разделим тело  телеграммы на строки
//***********************
// просмотрим все строки 
//***********************
for ($iii = 0; $iii <= count($ts)-1; $iii++)        // каждую из строк  
{
If ($ts[$iii]== ""  Or  strstr($ts[$iii], "NIL"))   // пропустим все пустые строки
{}
else                                                 // текущая непустая строка тела телеграммы
{
//$tag[$телеграммы_поля['ошибки']]=$os;                // запомним ошибки в массиве  
//$tag[$i]=implode("```", $tag)."\r\n";
//fwrite($w,$tag[$i]);
//continue;                                             // на следующую телеграмму 
//}
//*********************************************
// разобьем строку на группы и отметим разделы
//*********************************************
// $ndx+$dat2   - 0 раздел
//********************************************

if (count(explode(" ",$ts[$iii]))<3)
{$os=$os."<br>".($iii+1)."&nbsp;Неполный раздел !";}
else
{list($ndx,$dat2,$d3) = explode(" ",$ts[$iii],3);      
if ($dat2=="")
{$os=$os."<br>".($iii+1)."&nbsp;Нет даты и срока!";
}
if (strlen ($ndx)!=5 or  strlen ($dat2)!=5)          // в группе должно быть 5 символов
{$os=$os."<br>".($iii+1)."&nbsp;Индекс или срок не&nbsp;5&nbsp;символов!";
}
else
{
if (!array_key_exists ($ndx ,$индексы_уровни_и_гэс))   // есть ли индекс в общем массиве индексов
{$os=$os."<br>".($iii+1)."&nbsp;Индекса&nbsp;".$ndx."&nbsp;нет!";
}
$dt=substr($dat2, 0, 2);                              // в 2 группе  дата в 0 группе
if  (!array_key_exists ($dt, $stm))                   // в массиве допустимых дат
{$os=$os."<br>".($iii+1)."&nbsp;число&nbsp;".$dt."&nbsp;вне&nbsp;дат!";
}
if ($d3=="")
{$os=$os."<br>".($iii+1)."&nbsp;Нет разделов !";
}
}
}
if ($os=="")                                          // если ошибок нет
{$Индекс=$ndx;
$Дата=$stm[substr($dat2, 0, 2)];
$Час=substr($dat2, 2, 2);          
$Получено=$tag[$телеграммы_поля['получено']];
$ko=$Индекс."-".$Дата."-".$Час;                        // ключ отца контроля ледовых
$mi=" ".$d3;                                           // то что за разделом 0   
// подготовим его для разбивки на разделы 
    $mi = str_replace(" 922", "***922",$mi);
    $mi = str_replace(" 933", "***923",$mi);
    $mi = str_replace(" 944", "***944",$mi);
    $mi = str_replace(" 955", "***955",$mi);
    $mi = str_replace(" 966", "***966",$mi);
    $mi = str_replace(" 97701", "***97701",$mi);
    $mi = str_replace(" 97702", "***97702",$mi);
    $mi = str_replace(" 97703", "***97703",$mi);
    $mi = str_replace(" 97704", "***97704",$mi);
    $mi = str_replace(" 97705", "***97705",$mi);
    $mi = str_replace(" 97706", "***97706",$mi);
    $mi = str_replace(" 97707", "***97707",$mi);
	$mi =trim($mi);      // 
    $razd = explode("***",$mi);                       // разобьем телеграмму на разделы

//************************************
//   все разделы
//************************************	
for ($k = 0; $k <= count($razd)-1; $k++)             // каждый из разделов
{If($k == 0)
{$razt="1";
 if ($razd[0]=="")                                   // 1  раздел отсутствует
 {continue;                                          // на следующий раздел
}}
else
{$razt =substr($razd[$k],0,3 ); 
}
// разбираем только следующие разделы:0 1 922 944 955
$razd2=" ,1,922,944,955,";                             //  список допустимых разделов
if (strpos($razd2,",".$razt.",")>0)                    // раздел в списке допустимых
{$mts=" ".$razd[$k];
$os4="";
// контроль на не повторение групп  1 2 3 4 7 8  для 1 и 922
if ($razt=="1" or $razt=="922")
{if (count(explode(" 1",$mts))>2){$os4="1";}
if (count(explode(" 2",$mts))>2) {$os4="2";}
if (count(explode(" 3",$mts))>2) {$os4="3";}
if (count(explode(" 4",$mts))>2) {$os4="4";}
if (count(explode(" 7",$mts))>2) {$os4="7";}
if (count(explode(" 8",$mts))>2) {$os4="8";}
$os5="";
if (count(explode(" 1",$mts))==1) {$os5=$os5."1";}
if (count(explode(" 2",$mts))==1) {$os5=$os5."2";}
//if (count(explode(" 3",$mts))==1) {$os5=$os5." 3";}
//if (count(explode(" 4",$mts))==1) {$os5=$os5." 4";}
}
// контроль на не повторение групп  1 2 3 4 5 6 7 8  для 944 и 955
if ($razt=="944" or $razt=="955")
{if (count(explode(" 1",$mts))>2) {$os4="1";}
if (count(explode(" 2",$mts))>2) {$os4="2";}
if (count(explode(" 3",$mts))>2) {$os4="3";}
if (count(explode(" 4",$mts))>2) {$os4="4";}
if (count(explode(" 5",$mts))>2) {$os4="5";}
if (count(explode(" 6",$mts))>2) {$os4="6";}
if (count(explode(" 7",$mts))>2) {$os4="7";}
if (count(explode(" 8",$mts))>2) {$os4="8";}
}
if ($os4!="")
{$os=$os."<br>".($iii+1)."&nbsp;повторение&nbsp;".$os4."&nbsp;в&nbsp;".$razt."!";
continue;    // на следующий раздел
}
if ($os5!="")
{$os=$os."<br>".($iii+1)."&nbsp;нет&nbsp;".$os5."&nbsp;в&nbsp;".$razt."!";
continue;    // на следующий раздел
}




//*********************
//  все группы раздела
//*********************
$tg=explode(" ",$razd[$k]);                            // разделим раздел на группы
for ($iii2 = 0; $iii2 <= count($tg)-1; $iii2++)
{$grt=$tg[$iii2];                                       // текст группы
 $grn=substr($grt, 0, 1);                               // номер группы
// общий контроль 
if (strlen ($grt)!=5)                                   // в группе должно быть 5 символов
{$os=$os."<br>".($iii+1)."&nbsp;".$grt."&nbsp;не&nbsp;5&nbsp;символов!";
continue;                                               // на следующую группу
}
// пропустим пустые группы это группы с ////, /// 
if (substr($grt, 2, 3)=="///"  or  substr($grt, 0, 5)=="/////" or substr($grt, 1, 4)=="/////")
{continue;                              // на следующую группу
}
if (!ctype_digit(str_replace("//", "00",$grt)))   //
{$os=$os."<br>".($iii+1)."&nbsp;".$grt."&nbsp;не&nbsp;цифры!";
continue;                                // на следующую группу
}
$z =substr($grt,1);                      // данные в группе
//**************************************
//  1 или 922 разделы  
//**************************************
if ($razt == "1" or $razt == "922")       // число месяца для раздела 1 см выше 0 раздел
{
if ($grn=="9" and $razt == "922")         //  для 922 раздела
{
 $dt=substr($grt, 3, 2);                 // число из группы 9
 if  (!array_key_exists ($dt, $stm))     // в массиве допустимых чисел 
 {$os=$os."<br>".($iii+1)."&nbsp;".$grt.",&nbsp;".$dt."&nbsp;вне&nbsp;дат!";
  break;                                 // на следующий раздел 
 }
  $Дата=$stm[$dt];
 $Час="08";          
 continue;                              // на следующую группу
}

if ($grn=="1")                          // уровень воды
{$h=$z;
if ($h > 5000)
{$h = $h - 5000;
$h = -$h;
}
$контрольуровней_шаблон2[$контрольуровней_поля['уровень']]=$h;
}
elseif ($grn=="2")       // изменение уровня
{$Изм=substr($z,0,3);    // значение
$контрольуровней_шаблон2[$контрольуровней_поля['изменение']]=$Изм;
$ht=substr($z,3);        // тренд код
if ($ht==0 or $ht==1 or $ht==2)
{$контрольуровней_шаблон2[$контрольуровней_поля['тренд_код']]=$ht;}
else
{$os=$os."<br>".($iii+1)."&nbsp;".$grt."&nbsp;".$ht."&nbsp;тренд_код !";
}
}
elseif ($grn=="3")   // уровень на 20 час
{$h20=$z;
if ($h20 > 5000)
{$h20 = $h20 - 5000;
$h20 = -$h20;
}
$контрольуровней_шаблон2[$контрольуровней_поля['20_час']]=$h20;
}
elseif ($grn=="4")   // температура воды и воздуха 
{
$tw=substr($z,0,2);   // значение воды
if ($tw=="//")
{$tw="";}
$контрольуровней_шаблон2[$контрольуровней_поля['tводы']]=$tw;
$ta=substr($z,2,2);   // значение воздуха
if ($ta=="//")
{$ta="";}
else
{if ($ta > 50)
{$ta = $ta - 50;
$ta = -$ta;
}}
$t_воз=$ta;
$контрольуровней_шаблон2[$контрольуровней_поля['tвоздуха']]=$ta;
}
//**************************************
elseif ($grn=="5")   // ледовые явления
//**************************************
{$код_чис=substr($z,0,2);                                      // Кодовое число 1
 $код_чис2="";                                                 // Кодовое число 2 
//"N пп```Характеристика```Кодовое число```Интенсивность```Допустимо"
if (!array_key_exists ($код_чис ,$ледовые_явления_коды))      // недопустимое кодовое число 1
{$os=$os."<br>".($iii+1)."&nbsp;".$grt."&nbsp;".$код_чис."&nbsp;не&nbsp;кодовое!";
continue;                                                      // на следующую группу
}
else                                                           // кодовае число есть в массиве 
{if ($ледовые_явления_коды[$код_чис][0]=="да")                    // если для кодового числа есть интенсивность           
{$Интенсивность_код=substr($z,2,2);                                // интенсивность
if (!array_key_exists ($Интенсивность_код,$ледовые_интенсивность_коды))
{$os=$os."<br>".($iii+1)."&nbsp;".$grt."&nbsp;".$Le."&nbsp;интенсивность!";
continue;                                                      // на следующую группу
}}
else                                                           // интенсивности нет значит это кодовое число 2 
{$код_чис2=substr($z,2,2);
if (!array_key_exists ($код_чис2 ,$ледовые_явления_коды))      // недопустимое кодовое число2 
{$os=$os."<br>".($iii+1)."&nbsp;".$grt."&nbsp;".$код_чис2."&nbsp;не&nbsp;кодовое";
continue;                                                      // на следующую группу
}
else
{
$Интенсивность_код="";                                   
if ($код_чис==$код_чис2)
{
$os=$os."<br>".($iii+1)."&nbsp;".$grt."&nbsp;".$код_чис2."&nbsp;повторение!";
continue;                                                      // на следующую группу
}
if ($ледовые_явления_коды[$код_чис2][0]=="да")                    // если для кодового числа2 есть интенсивность           
{$os=$os."<br>".($iii+1)."&nbsp;".$grt."&nbsp;".$код_чис2."&nbsp;интенсивность?";
continue;                                                      // на следующую группу
}}}}


if (!array_key_exists ($ko ,$ледовые))
{
 $контрольледовые_шаблон2[$контрольлед_явл_поля['индекс']]=$Индекс;
 $контрольледовые_шаблон2[$контрольлед_явл_поля['дата']]=$Дата;
 $контрольледовые_шаблон2[$контрольлед_явл_поля['час']]=$Час;
 $контрольледовые_шаблон2[$контрольлед_явл_поля['получено']]=$Получено;
 $ледовые[$ko]=implode("```", $контрольледовые_шаблон2)."\r\n".$ледовые[$ko];  
 $контрольледовые_шаблон2=$контрольледовые_шаблон; 
}


if ($код_чис2!="")                                             // в группе 2 явления без интенсивности
{$контрольлед_явл_сын_шаблон2[$контрольлед_явл_сын_поля['кодовое_число']]=$код_чис;
 $контрольлед_явл_сын_шаблон2[$контрольлед_явл_сын_поля['характеристика']]="";
 $контрольлед_явл_сын_шаблон2[$контрольлед_явл_сын_поля['интенсивность_код']]="00";
 $контрольлед_явл_сын_шаблон2[$контрольлед_явл_сын_поля['интенсивность']]="";          // БЕЗ ИНТЕНСИВНОСТИ
 $ледовые[$ko]=$ледовые[$ko].implode("```",$контрольлед_явл_сын_шаблон2)."\r\n";   // строку добавим в список ледовых
 $контрольлед_явл_сын_шаблон2[$контрольлед_явл_сын_поля['кодовое_число']]=$код_чис2;
 $ледовые[$ko]=$ледовые[$ko].implode("```",$контрольлед_явл_сын_шаблон2)."\r\n";   // строку добавим в список ледовых
}

else                                                           // в группе 1 явление с интенсивностью               
{$контрольлед_явл_сын_шаблон2[$контрольлед_явл_сын_поля['кодовое_число']]=$код_чис;   // С ИНТНСИВНОСТЬЮ  
 $контрольлед_явл_сын_шаблон2[$контрольлед_явл_сын_поля['характеристика']]="";
 $контрольлед_явл_сын_шаблон2[$контрольлед_явл_сын_поля['интенсивность_код']]=$Интенсивность_код;
 $ледовые[$ko]=$ледовые[$ko].implode("```",$контрольлед_явл_сын_шаблон2)."\r\n"; // строку добавим в список ледовых

 }
}
//******************************************************************************************
elseif ($grn=="6")   //состояние водного объекта  НЕТ
//******************************************************************************************
{$os=$os."<br>".($iii+1)."&nbsp;".$grt."&nbsp;группа&nbsp;".$grn."&nbsp;мимо!";
continue;                                                       // на следующую группу
}
//*******************************************************************************************
elseif ($grn=="7")   // толщина снега на льду  N пп```Высота снега на льду, см```Цифра кода
//*******************************************************************************************
{$толщина_льда=substr($z,0,3);
 $цифра_кода_снега=substr($z,3,1);                               // цифра кода
if (!array_key_exists ($цифра_кода_снега ,$высота_снега_коды))   // недопустимое цифра кода
{$os=$os."<br>".($iii+1)."&nbsp;".$grt."&nbsp;".$цифра_кода_снега."&nbsp;не&nbsp;код!";
continue;                                                        // на следующую группу
}
$контрольлед_шаблон2[$контрольлед_поля['индекс']]=$Индекс;
$контрольлед_шаблон2[$контрольлед_поля['дата']]=$Дата;
$контрольлед_шаблон2[$контрольлед_поля['час']]=$Час;
$контрольлед_шаблон2[$контрольлед_поля['получено']]=$Получено;
$контрольлед_шаблон2[$контрольлед_поля['толщина']]=$толщина_льда;
$контрольлед_шаблон2[$контрольлед_поля['цифра_кода']]=$цифра_кода_снега;
$снег[]=implode("```",$контрольлед_шаблон2)."\r\n";           // строку добавим в массив для Контроль толщины льда
$контрольлед_шаблон2=$контрольлед_шаблон;                     // вычистим для след группы 
}
//********************************************************
elseif ($grn=="8")   // ежедневный расход   НЕТ
//********************************************************
{
$os=$os."<br>".($iii+1)."&nbsp;".$grt."&nbsp;группа&nbsp;".$grn."&nbsp;мимо!";
continue;                                                         // на следующую группу
}
elseif ($grn=="0" and $iii2>1)   // количество и продолжительность осадков НЕТ
{
$os=$os."<br>".($iii+1)."&nbsp;".$grt."&nbsp;группа&nbsp;".$grn."&nbsp;мимо!";
continue;                                             // на следующую группу
}
//*************************************************************
else                 // неизвестная  группа раздела 1 или 922
//*************************************************************
{
$os=$os."<br>".($iii+1)."&nbsp;".$grt."&nbsp;группа&nbsp;".$grn."&nbsp;мимо!";
continue;                                             // на следующую группу
}
}   // конец раздела "1" или "922") 


//***************************************************************************
if ($razt == "944")   //  944 раздел    УРОВНИ И ОБЪЕМЫ ВОДОХРАНИЛИЩА
//***************************************************************************
{if ($iii2==0)                           //  $iii2 - индекс группы в разделе 0 - первая группа
{$dt=substr($grt, 3, 2);                 // из нее, из группы 944   число 
 if  (!array_key_exists ($dt, $stm))     // в массиве допустимых чисел 
 {$os=$os."<br>".($iii+1)."&nbsp;".$grt.",&nbsp;".$dt."&nbsp;вне&nbsp;дат!";
  break;                                 // на следующий раздел 
 }
 $Дата=$stm[$dt];                        // по числу определим дату 
 $Час="08";                              // час по умолчанию
 continue;                               // на следующую группу
}
$zz=substr($z,0,4);            //  значение в группе (отбросили номер группы) 
if ($grn=="1")                 //  уровень воды вб 1HвбHвбHвбHвб
{$г1=$zz;  
}
elseif ($grn=="2")             //  уровень воды средний в срок 2НсНсНсНс
{$г2=$zz;}
elseif ($grn=="3")             //  уровень воды средний на конец 3НксНксНксНкс 
{$г3=$zz;}
elseif ($grn=="4")             //  уровень воды нб 4HнбHнбHнбHнб
{$г4=$zz;}
elseif ($grn=="5")             //  5Нв5Нв5Нв5Нв
{$г5=$zz;}
elseif ($grn=="6")             //  6НнНнНнНн
{$г6=$zz;}
elseif ($grn=="7")             //  7kVcVcVc
{
$kc=substr($z,0,1);
if ($kc<1 or $kc>3)            //   количество цифр в целой части не (1,2,3)
{$os=$os."<br>".($iii+1)."&nbsp;".$grt.",&nbsp;".$ks."&nbsp;целая&nbsp;часть!";
$г7="";
}
else
{$г7=substr($z,1,3);
}}
elseif ($grn=="8")             //  8kVkcVkcVkc
{
$kc=substr($z,0,1);
if ($kc<1 or $kc>3)            //   количество цифр в целой части не (1,2,3)
{$os=$os."<br>".($iii+1)."&nbsp;".$grt.",&nbsp;".$ks."&nbsp;целая&nbsp;часть!";
$г8="";
}
else
{$г8=substr($z,1,$kc).".".substr($z,$kc);
}
}
else                          // неизвестная группа 
{$os=$os."<br>".($iii+1)."&nbsp;".$grt.",&nbsp;неизвестная&nbsp;группа!";
continue;
}

$ключ_гэс=$Индекс."-".$Дата."-".$Час;
if (array_key_exists ($ключ_гэс,$гэс))                            //   если есть данные по 955
{
$контрольгэс_шаблон2=explode("```",$гэс[$ключ_гэс]);
$контрольгэс_шаблон2[$контрольгэс_поля['1HHHвб']]=$г1;
$контрольгэс_шаблон2[$контрольгэс_поля['2HHHс']]=$г2;
$контрольгэс_шаблон2[$контрольгэс_поля['3HHHкс']]=$г3;
$контрольгэс_шаблон2[$контрольгэс_поля['4HHHнб']]=$г4;
$контрольгэс_шаблон2[$контрольгэс_поля['5HHHв']]=$г5;
$контрольгэс_шаблон2[$контрольгэс_поля['6HHHн']]=$г6;
$контрольгэс_шаблон2[$контрольгэс_поля['7VVVс']]=$г7;
$контрольгэс_шаблон2[$контрольгэс_поля['8VVVкс']]=$г8;
$гэс[$ключ_гэс]=implode("```",$контрольгэс_шаблон2);    // строку добавим в массив для Контроль ГЭС
}
else
{
$контрольгэс_шаблон2=$контрольгэс_шаблон;                     // вычистим 
$контрольгэс_шаблон2[$контрольгэс_поля['индвб']]=$Индекс;
$контрольгэс_шаблон2[$контрольгэс_поля['дата']]=$Дата;
$контрольгэс_шаблон2[$контрольгэс_поля['час']]=$Час;
$контрольгэс_шаблон2[$контрольгэс_поля['получено']]=$Получено;
$контрольгэс_шаблон2[$контрольгэс_поля['1HHHвб']]=$г1;
$контрольгэс_шаблон2[$контрольгэс_поля['2HHHс']]=$г2;
$контрольгэс_шаблон2[$контрольгэс_поля['3HHHкс']]=$г3;
$контрольгэс_шаблон2[$контрольгэс_поля['4HHHнб']]=$г4;
$контрольгэс_шаблон2[$контрольгэс_поля['5HHHв']]=$г5;
$контрольгэс_шаблон2[$контрольгэс_поля['6HHHн']]=$г6;
$контрольгэс_шаблон2[$контрольгэс_поля['7VVVс']]=$г7;
$контрольгэс_шаблон2[$контрольгэс_поля['8VVVкс']]=$г8;
$гэс[$ключ_гэс]=implode("```",$контрольгэс_шаблон2);    // строку добавим в массив для Контроль ГЭС
}
}    // конец 944

//***************************************************************
if ($razt == "955") //  955 раздел   ПРИТОК ВОДЫ В ВОДОХРАНИЛИЩЕ
//***************************************************************
{
if ($iii2==0)                             //  если опозновательная группа
{$dt=substr($grt, 3, 2);                  // число из группы
 if  (!array_key_exists ($dt, $stm))      // в массиве допустимых чисел 
 {$os=$os."<br>".($iii+1)."&nbsp;".$grt.",&nbsp;".$dt."&nbsp;вне&nbsp;дат!";
  break;                                  // на следующий раздел 
 }
 $Дата=$stm[$dt];
 $Час="08";                               // час по умолчанию
 continue;                                // на следующю группу 
 }
 $kc=substr($z,0,1);
if ($kc<1 or $kc>3)                       //   количество цифр в целой части не (1,2,3)
{$os=$os."<br>".($iii+1)."&nbsp;".$grt.",&nbsp;".$ks."&nbsp;целая&nbsp;часть!";    
 continue;                                // на следующю группу 
}
 if ($grn=="1")                           // приток воды в срок 1kQoQoQo
{$v1=substr($z,1,$kc).".".substr($z,$kc);
}
elseif ($grn=="2")                        // приток воды в срок 2kQбQбQб
{$v2=substr($z,1,$kc).".".substr($z,$kc);
}
elseif ($grn=="3")                        // приток воды в срок 3kQаQаQа
{$v3=substr($z,1,$kc).".".substr($z,$kc);
}
elseif ($grn=="4")                        // приток воды в средний за першеств сутки 4kQоQоQо
{$v4=substr($z,1,$kc).".".substr($z,$kc);
}
elseif ($grn=="5")                        // приток воды в средний за першеств сутки 5kQбQбQб
{$v5=substr($z,1,$kc).".".substr($z,$kc);
}
elseif ($grn=="6")                        // приток воды в средний за першеств сутки 6kQаQаQа
{$v6=substr($z,1,$kc).".".substr($z,$kc);
}
elseif ($grn=="7")                       // сброс воды 7kQсбQсбQсб
{$v7=substr($z,1,$kc).".".substr($z,$kc);

$ключ_гэс=$Индекс."-".$Дата."-".$Час;
if (array_key_exists ($ключ_гэс,$гэс))                            //   если есть данные по 944
{
$контрольгэс_шаблон2=explode("```",$гэс[$ключ_гэс]);
$контрольгэс_шаблон2[$контрольгэс_поля['1QQQо']]=$v1;
$контрольгэс_шаблон2[$контрольгэс_поля['2QQQб']]=$v2;
$контрольгэс_шаблон2[$контрольгэс_поля['3QQQа']]=$v3;
$контрольгэс_шаблон2[$контрольгэс_поля['4QQQо']]=$v4;
$контрольгэс_шаблон2[$контрольгэс_поля['5QQQб']]=$v5;
$контрольгэс_шаблон2[$контрольгэс_поля['6QQQа']]=$v6;
$контрольгэс_шаблон2[$контрольгэс_поля['7QQQсб']]=$v7;
$гэс[$ключ_гэс]=implode("```",$контрольгэс_шаблон2);    // строку добавим в массив для Контроль ГЭС
}
else
{
$контрольгэс_шаблон2=$контрольгэс_шаблон;                     // вычистим
$контрольгэс_шаблон2[$контрольгэс_поля['индвб']]=$Индекс;
$контрольгэс_шаблон2[$контрольгэс_поля['дата']]=$Дата;
$контрольгэс_шаблон2[$контрольгэс_поля['час']]=$Час;
$контрольгэс_шаблон2[$контрольгэс_поля['получено']]=$Получено;
$контрольгэс_шаблон2[$контрольгэс_поля['1QQQо']]=$v1;
$контрольгэс_шаблон2[$контрольгэс_поля['2QQQб']]=$v2;
$контрольгэс_шаблон2[$контрольгэс_поля['3QQQа']]=$v3;
$контрольгэс_шаблон2[$контрольгэс_поля['4QQQо']]=$v4;
$контрольгэс_шаблон2[$контрольгэс_поля['5QQQб']]=$v5;
$контрольгэс_шаблон2[$контрольгэс_поля['6QQQа']]=$v6;
$контрольгэс_шаблон2[$контрольгэс_поля['7QQQсб']]=$v7;
$гэс[$ключ_гэс]=implode("```",$контрольгэс_шаблон2);    // строку добавим в массив для Контроль ГЭС
}

}
else                                    // неизвестная группа 
{$os=$os."<br>".($iii+1)."&nbsp;".$grt.",&nbsp;неизвестная&nbsp;группа!";}
}
}        // конец группы
}        // допустимый раздел     
else     // раздел неизвестен
{
$os=$os."<br>".($iii+1)."&nbsp;".$razt."&nbsp;мимо!".strpos($razd2,",".$razt.",")."";
continue;
}
// Для соотв раздела добавим данные в соотв массивы
if ($razt="1")    // or $razt="922")                                              // конец раздела уровней
{

 $контрольуровней_шаблон2[$контрольуровней_поля['индекс']]=$Индекс;
 $контрольуровней_шаблон2[$контрольуровней_поля['дата']]=$Дата;
 $контрольуровней_шаблон2[$контрольуровней_поля['час']]=$Час;
 $контрольуровней_шаблон2[$контрольуровней_поля['получено']]=$Получено;
 $уровни[]=implode("```", $контрольуровней_шаблон2)."\r\n";  
 $контрольуровней_шаблон2=$контрольуровней_шаблон;               // вычистим массив для следующей строки
 // в массиве ледовые 1 строка относится к отцу остальные к сыну 
}
//***************************************************************
}        //  конец раздела
//**************************************************************

}
else                                                 // ошибки раздела не позволяющие запись в таблицы контроля
{
//echo "".$os."<br>";
//$tag[$телеграммы_поля['ошибки']]=$os;                // запомним ошибки в массиве  
//$tag[$i]=implode("```", $tag)."\r\n";
//fwrite($w,$tag[$i]);
}
}        //  пустые строки 
//**************************************************************
}        // конец строк телегр конец индекса
//************************************************************
$q22=$q2;
$en=substr($q22,strlen($q22)-1,1); 
if ($en=="=")
{$q22=substr($q22,0,strlen($q22)-1);}
$q22 ="<ol><li>".$q22;
$q22 =str_replace("=", "<li>",$q22);
$q22 =$q22."</li></ol>";
$tag[$телеграммы_поля['текстп']]=$q22;      
$tag[$телеграммы_поля['ошибки']]=$os;    // ошибки вставим в тек телеграмму 
$r[$i]=implode("```", $tag)."\r\n";
fwrite($w,$r[$i]);                       // пишем не разобранную телеграмму 
}
else                                    // разобранную тел пишем без изменений
{
$r[$i]=implode("```", $tag)."\r\n";
fwrite($w,$r[$i]);
}

}   // конец обработки строк телеграммы на следующую теграмму
fclose($w);                            //  закроем обработанный файл
}                                      // конец обработки
//************************************************
// Из телеграмм данные уровней в КОНТРОЛЬ УРОВНЕЙ
//************************************************
if (count($уровни)>0)                        // в телеграммах есть уровни 
{$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/11,08,16_01/1.txt";
$ur = file($f); 	                         // маасив данных из Контроля уровней      
$wur = fopen($f, 'w') or exit;               // откроем  файл контроля уровней для добавления данных из теграмм
for ($j = 0; $j <=count($ur)-1; $j++)        // пишем что считали 
{//echo $ur[$j]."<br>";
fwrite($wur,$ur[$j]);
}
for ($j2 = 0; $j2 <=count($уровни)-1; $j2++)  // добавим из телеграмм
{//echo ($j+$j2+1).$уровни[$j2]."<br>";
$mva3=explode("```",$уровни[$j2]);
$mva3[$контрольуровней_поля['ошибки']]="контроль !"; 
// если индекс ГЭС пропустим
if (array_key_exists ($mva3[$контрольуровней_поля['индекс']],$индексы_гэс))      
{}
else
{
fwrite($wur,($j+$j2+1).implode("```",$mva3));
}
}
fclose($wur);
}
//************************************************************
// Из телеграмм данные льда и снего  в КОНТРОЛЬ ТОЛЩИНА ЛЬДА
//************************************************************
if (count($снег)>0)                          // в телеграммах есть лед и снег
{$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/11,08,16_02/1.txt";
$ur = file($f); 	                         // маасив данных из Контроля толщина льда
$wur = fopen($f, 'w') or exit;               // откроем  файл контроля толщины льда и снега
for ($j = 0; $j <=count($ur)-1; $j++)        // пишем что считали 
{fwrite($wur,$ur[$j]);
}
for ($j2 = 0; $j2 <=count($снег)-1; $j2++)  // добавим из телеграмм
{

$mva3=explode("```",$снег[$j2]);
$mva3[$контрольлед_поля['ошибки']]="контроль !"; 
fwrite($wur,($j+$j2+1).implode("```",$mva3)."\r\n");
//fwrite($wur,($j+$j2+1).$снег[$j2]);
}
fclose($wur);
}

//************************************************************
// Из телеграмм данные  в КОНТРОЛЬ ГЭС
//************************************************************
//echo "<br><br>".count($гэс)."<br>";
if (count($гэс)>0)                            // в телеграммах есть данные ГЭС
{$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/11,08,16_04/1.txt";
$ur = file($f); 	                          // маасив данных из Контроля ГЭС
$wur = fopen($f, 'w') or exit;                // откроем  файл контроля толщины льда и снега
for ($j = 0; $j <=count($ur)-1; $j++)         // пишем что считали 
{fwrite($wur,$ur[$j]);
}
reset($гэс);                                  // на начало  
for ($j2 = 0; $j2 <=count($гэс)-1; $j2++)     // добавим из телеграмм
{
$val=current($гэс);

$mva3=explode("```",$val);
$mva3[$контрольгэс_поля['ошибки']]="контроль !"; 
fwrite($wur,($j+$j2+1).implode("```",$mva3)."\r\n");
//fwrite($wur,($j+$j2+1).$val."\r\n");
//echo "<br>".($j+$j2+1).$val."<br>";
next($гэс);
}
fclose($wur);

}


//************************************************************
// Из телеграмм данные ледовых явлений  в КОНТРОЛЬ ЛЕДОВЫЕ
//************************************************************
if (count($ледовые)>0)
{
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/11,08,16_003/1.txt";   // контроль ледовые отец  
$ur = file($f); 	      
$wur = fopen($f, 'w') or exit;
for ($j0 = 0; $j0 <=count($ur)-1; $j0++)        // пишем что считали 
{fwrite($wur,$ur[$j0]);
}
reset($ледовые);                                  // на начало  
for ($j2 = 0; $j2 <= count($ледовые)-1; $j2++)  
{$va=current($ледовые);                         // текущая запись - список ледовых 
 $mva=explode("\r\n",$va);                       // строки ледовых
 for ($j3 = 1; $j3 <= count($mva)-2; $j3++)  
 {$var=explode("```",$mva[$j3]);
 $var[$контрольлед_явл_сын_поля['характеристика']]=
 $ледовые_явления_коды[$var[$контрольлед_явл_сын_поля['кодовое_число']]][2];
 $var[$контрольлед_явл_сын_поля['интенсивность']]=
 $ледовые_интенсивность_коды[$var[$контрольлед_явл_сын_поля['интенсивность_код']]];
 
 $mva[$j3]=implode("```",$var);
 }
//************************************************************
// Контроль совместимости кодов ледовых явлений из телеграмм
//************************************************************ 
$mps=array();                                   // для каждого списка ледовых пустой массив несовместимости
for ($j3 = 1; $j3 <= count($mva)-2; $j3++)  
{$mva2=explode("```",$mva[$j3]);                                  // строку ледового на столбцы
$kodp=$mva2[$контрольлед_явл_сын_поля['кодовое_число']];          // проверяемый код  
$kodps=" ".$ледовые_явления_коды[$kodp][1]." "; // список кодов сочетаемых с ним 
 for ($j4 = 1; $j4 <= count($mva)-2; $j4++)                // все ледовые строки контроля ледовых кроме тек контр
  {if ($j3!=$j4)                                            // проверяемый со всеми кроме самого себя
   {$mva22=explode("```",$mva[$j4]);                       // строку ледового на столбцы
    $kods=$mva22[$контрольлед_явл_сын_поля['кодовое_число']]; // сочетаемый код  
	if (strstr(" ".$kodps." ",$kods))                                        // сочетаемый в списке сочетаемых   
   {}
   else                     // если несочетаемые коды
   {if ($kodp>$kods )       // сформируем несочетаемый элемент
   {$tk=$kods."x".$kodp;}
   else
   {$tk=$kodp."x".$kods;}
   }
   if (!array_key_exists ($tk,$mps ))      //  сочетания нет в массиве в ключе
   {$mps[$tk]="";} 
   }}}
 if (count($mps)>1)                             // если есть несочетаемые коды
{
//echo "<br>";
//print_r($mps);

reset($mps);                                   // на начало  
 $snns="";                                      // список  
 for ($j5 = 0; $j5 <= count($mps)-1; $j5++)              // все ледовые строки контроля ледовых кроме тек контр
{
$snns=$snns.key($mps).",";
 next($mps);
} 
$mva3=explode("```",$mva[0]);
$mva3[$контрольлед_явл_поля['ошибки2']]=$snns; 
fwrite($wur,(count($ur)+$j2+1).implode("```",$mva3)."\r\n");
}
else
{
$mva3=explode("```",$mva[0]);
$mva3[$контрольлед_явл_поля['ошибки']]="контроль !"; 
fwrite($wur,(count($ur)+$j2+1).implode("```",$mva3)."\r\n");

//fwrite($wur,(count($ur)+$j2+1).$mva[0]."\r\n");
}
// сын контроля ледовых
$fsp=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/11,08,16_003/".(count($ur)+$j2+1)."/";
if (!file_exists($fsp))                // если нет папки с сына
{mkdir($fsp);}                          // создадим ее  
$fsf=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/11,08,16_003/".(count($ur)+$j2+1)."/1.txt";
$wsur = fopen($fsf, 'w') or exit;
for ($j6 = 1; $j6 <= count($mva)-2; $j6++)  
{fwrite($wsur,$j6.$mva[$j6]."\r\n");
}
fclose($wsur);
next($ледовые);
}
fclose($wur);
}
//}
?>