function pos=pos_read_ini(date0,hours);
% Считывание данных POS-1 из исходных часовых файлов типа Fdd_hhmm.MMM
% и удаление единичных выбросов и данных с кодом ошибки ~=80
%
%               pos=pos_read_ini(date0,hours);
%
% date0 - дата (string) в формате 'DD.MM.YYYY'
% hours - часы (UT), длЯ которых требуетсЯ извлечь данные
%
% pos   - матрица [hh mm ss f qmc err]

% Хомутов С.Ю. 18.12.2003
% 07.05.2004 - считывание из ZIP-архивов в исходных директориЯх
% 12.07.2007 - добавлен вызов программы инициализации параметров POS-1
%              pos_parameter_ini.m

pos_parameter_ini   % инициализациЯ параметров POS-1

POS_length_rec=62;      % длина записи в файл POS-1, включаЯ CR и LF
data_path='tmp\';  % каталог с текущими часовыми файлами 
unzip_str=['!' unzip_path pos_data_path date0(7:10) '_'];
%unzip_str=['!C:\Prog_DOS\UTILS\PKUNZIP.EXE -e -o d:\users\data\pos-1\' date0(7:10) '_'];

day=str2num(date0(1:2)); mon=str2num(date0(4:5)); year=str2num(date0(7:10));
hours=fix(hours(:));
% дата в формате 'dd-mmm-yyyy HH:MM:SS'
t_str=datestr(datenum(year,mon,day,hours,0,0),0);

% считываем каталог длЯ нужной даты и часов Ldd_hh*.MON
file_name=[];
for kf=1:length(hours),
    % Файлы длЯ требуемого часа, извлекаемые из архива
    files=['F' t_str(kf,1:2) '_' t_str(kf,13:14) '*.' t_str(kf,4:6)];
    % Извлекаем данные из архивов в текущий каталог
    eval([unzip_str date0(4:5) '\POS_' date0(4:5) date0(1:2) '.zip ' files ' >protocol.log']); 
    % и переносим во временный каталог
    eval(['!move *.' t_str(kf,4:6) ' ' data_path  ' >protocol.log']);

    D=dir([data_path 'F' t_str(kf,1:2) '_' t_str(kf,13:14) '*.' t_str(kf,4:6)]);
    if isempty(char(D.name)), 
        pos=[];
	disp(char(D.name))
%        error(['!!! Нет данных длЯ POS-1 !!! -> '... 
        disp(['!!! Нет данных длЯ POS-1 !!! -> '... 
            date0, ',  ' num2str(hours(kf)',' %02d') ' UT']);
    end
    % сортируем по порЯдку
    file_name=strvcat(file_name, sortrows(char(D.name)));
end
if isempty(file_name), return, end

n_file=length(file_name(:,1)); % кол-во файлов

% контроль формата записей и вычисление размера данных
sum_length=0;
for kf=1:n_file,
    D=dir([data_path file_name(kf,:)]); file_size=D.bytes;
    sum_length=sum_length+file_size;
    if rem(file_size,POS_length_rec)~=0,
       error(['Ошибка формата записи в файле -> ' file_name(kf,:)]);
    end
    n_rec=file_size/POS_length_rec;        % кол-во записей в файле
end

% инициализациЯ массивов
hh=zeros(n_rec,1); mm=zeros(n_rec,1); ss=zeros(n_rec,1);
f=zeros(n_rec,1); qmc=zeros(n_rec,1); err=zeros(n_rec,1);

n1=0;
for kf=1:n_file,
    disp(file_name(kf,:))
    fid=fopen([data_path file_name(kf,:)],'r');
    D=dir([data_path file_name(kf,:)]); file_size=D.bytes;
    n_rec=file_size/POS_length_rec;        % кол-во записей в файле
    tmp=fread(fid,[POS_length_rec, n_rec]);% считываем бинарно
    tmp=char(tmp');                         % превращаем в символьный массив
    n2=n1+n_rec;
    hh(n1+1:n2)=str2num(tmp(:,38:39));
    mm(n1+1:n2)=str2num(tmp(:,41:42));
    ss(n1+1:n2)=str2num(tmp(:,44:45));
    f(n1+1:n2)=str2num(tmp(:,1:8))/1000;
    qmc(n1+1:n2)=str2num(tmp(:,12:17))/1000;
    err(n1+1:n2)=str2num(tmp(:,23:24));
    n1=n2;
    fclose(fid);
end

thp=dms_deg(hh,mm,ss);

hh=hh(:); mm=mm(:); ss=ss(:); f=f(:); err=err(:); qmc=qmc(:);

% контроль времени в файлах данных POS-1
k=find(diff(thp)<=0);   % indeces of false T
if length(k)~=0,
   disp('!!! Ошибка времени в данных POS-1 !!!')
   for kk=1:length(k),
      disp('-----------> смотри здесь ошибку таймера:')
      [hh,mm,ss,str]=deg_dms([thp(k(kk):k(kk)+2)]);
      disp(str)
   end
   error('!!! Нужно исправить исходные данные !!!')
end

f=pos_correct_all(f,err,thp,max_diff,accept_code);
pos=[hh mm ss f qmc err];
