function [T_rise,T_set,T_trans]=read_rise_set_usno_fun(file)
% Считывание данных о восходах/закатах, полученных с помощью программы
% ICE.exe (интерактивный альманах USNO)
%
%    [T_rise,T_set,T_trans]=read_rise_set_usno_fun(file);
%
%    file - имя считываемого файла
%  T_rise - сериальная дата восхода (в UT)
%   T_set - сериальная дата заката (в UT)
% T_trans - сериальная дата кульминации (прохождения через меридиан на
%           юге (в UT)

% 20.01.2018 - замена построчного считывания на бинарное и работу с
%               массивом в памяти

% формат для считывания в ячейки (символы "(" и ")" удалены)
format_data='%12c %f %f %f %f %f %f %f %f %f %f %f %f %f';

if ~exist(file,'file'), 
    disp('!!! File do not found !!!')
    T_rise=NaN; T_set=NaN; T_trans=NaN;
    return 
end

fid=fopen(file,'rt');
% ---------- считываем "шапку"
str=fgetl(fid); str=fgetl(fid); % заголовок
str=fgetl(fid); % Longitude
    tmp=str2num(str(71:length(str)));
    Lon=tmp(1)+tmp(2)/60;
    if str(70)=='W'     % западная долгота
        Lon=-Lon;
    end
str=fgetl(fid); % Latitude
    tmp=str2num(str(71:length(str)));
    Lat=tmp(1)+tmp(2)/60;
    if str(70)=='S'     % южная широта
        Lat=-Lat;
    end
str=fgetl(fid); % LT = UT + TimeZone
    if length(str)<74   % время - в UT (нет разности LT-UT)
        TimeZone=0;
    else
        TimeZone=str2num(str(75:76));
    end
str=fgetl(fid); str=fgetl(fid); str=fgetl(fid); % заголовки
% ---------------- считываем данные
tmp=fread(fid); % считываем остаток бинарно
fclose(fid);
str=char(tmp');
% замена нецифровых символов
str=strrep(str,'(s','');
str=strrep(str,'(','');
str=strrep(str,')','');
% считываем данные с массив ячеек по формату
C=textscan(str,format_data);

T=datenum(C{1},'yyyy mmm dd');
T_rise=T+(C{6}+C{7}/60)/24-TimeZone/24;
T_trans=T+(C{9}+C{10}/60)/24-TimeZone/24;
T_set=T+(C{12}+C{13}/60)/24-TimeZone/24;
