function lemi=lemi_read_ini(date0,hours);
% Считывание данных LEMI-008 из исходных часовых файлов типа Ldd_hhmm.MMM
% и восстановление пропусков в 04m22s
%
%               lemi=lemi_read_ini(date0,hours);
%
% date0 - дата (string) в формате 'DD.MM.YYYY'
% hours - часы (UT), длЯ которых требуетсЯ извлечь данные
%
% lemi  - матрица [hh mm ss dx dy dz heat1 heat2]

% Хомутов С.Ю. 18.12.2003
% 07.05.2004 - считывание из ZIP-архивов в исходных директориЯх

LEMI_length_rec=45;     % длина записи в файл LEMI-008, включаЯ CR и LF
data_path='tmp\';  % каталог с текущими часовыми файлами 
unzip_str=['!C:\Prog_DOS\UTILS\PKUNZIP.EXE -e -o d:\users\data\lemi\' 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=['L' t_str(kf,1:2) '_' t_str(kf,13:14) '*.' t_str(kf,4:6)];
    % Извлекаем данные из архивов в текущий каталог
    eval([unzip_str date0(4:5) '\LEMI' 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 'L' t_str(kf,1:2) '_' t_str(kf,13:14) '*.' t_str(kf,4:6)]);
    if isempty(char(D.name)), 
        lemi=[];
        disp(['!!! Нет данных длЯ LEMI-008 !!! -> '... 
            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,LEMI_length_rec)~=0,
       error(['Ошибка формата записи в файле -> ' file_name(kf,:)]);
    end
    n_rec=file_size/LEMI_length_rec;        % кол-во записей в файле
end

% инициализациЯ массивов
hh=zeros(n_rec,1); mm=zeros(n_rec,1); ss=zeros(n_rec,1);
dx=zeros(n_rec,1); dy=zeros(n_rec,1); dz=zeros(n_rec,1);
heat1=zeros(n_rec,1); heat2=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/LEMI_length_rec;        % кол-во записей в файле
    tmp=fread(fid,[LEMI_length_rec, n_rec]);% считываем бинарно
    tmp=char(tmp');                         % превращаем в символьный массив
    n2=n1+n_rec;
    hh(n1+1:n2,1)=str2num(tmp(:,1:2));
    mm(n1+1:n2,1)=str2num(tmp(:,4:5));
    ss(n1+1:n2,1)=str2num(tmp(:,7:8));
    dx(n1+1:n2,1)=str2num(tmp(:,10:17));
    dy(n1+1:n2,1)=str2num(tmp(:,19:26));
    dz(n1+1:n2,1)=str2num(tmp(:,28:35));
    heat1(n1+1:n2,1)=str2num(tmp(:,37:39));
    heat2(n1+1:n2,1)=str2num(tmp(:,41:43));
    n1=n2;
    fclose(fid);
end

% удалЯем пропуски в HH:04:22 (если есть)
lemi=lemi_gps_correct([hh mm ss dx dy dz heat1 heat2]);
