function [f,T,qmc,err]=pos_read_vs(file,year,data_path);
% Считывание данных POS-1 из файлов, записанных программой VarStat
%
%               [f[,T[,qmc,err]]]=pos_read_vs(file[,year[,data_path]]);
%
% file  - имЯ файла VarStat
% data_path - путь к файлу данных.
%             Если data_path=[], то имя файла содержит полный путь
%             По умолчанию - "tmp\"
% year - год измерения (из-за неправильного года в данных VarStat после
%           2000).
%
% f     - модуль полЯ F (нТл), если NARGOUT > 1
%         матрица [mon day hh mm ss f qmc err], если NARGOUT=1
% T     - сериальная дата
% qmc   - QMC (нТл)
% err   - код ошибок
%

% Хомутов С.Ю. 31.07.2005
%
% 19.08.2009 - добавлен выбор пути к файлу
%            - вместо времени в часах используется сериальная дата

POS_length_rec=50;      % длина записи в файл POS-1, включаЯ CR и LF

if nargin<3,
    data_path='tmp\';  % каталог с текущими часовыми файлами 
end

if isempty(data_path),
    file_name=file;
else
    file_name=[data_path file];
end

if ~exist(file_name,'file'),
    error(['!!! File ' file_name ' not found !!!'])
end

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

% инициализациЯ массивов
mon=zeros(n_rec,1); day=zeros(n_rec,1);
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);

fid=fopen(file_name,'r');
tmp=fread(fid,[POS_length_rec, n_rec]);% считываем бинарно
tmp=char(tmp');                         % превращаем в символьный массив
day=str2num(tmp(:,1:2));
mon=str2num(tmp(:,4:5));
hh =str2num(tmp(:,10:11));
mm =str2num(tmp(:,13:14));
ss =str2num(tmp(:,16:17));
f  =str2num(tmp(:,18:27));
qmc=str2num(tmp(:,28:34));
err=hex2dec(tmp(:,35:37));
fclose(fid);

% thp=dms_deg(hh,mm,ss);
T=datenum(year,mon,day,hh,mm,ss);

T=T(:); f=f(:); err=err(:); qmc=qmc(:);

% контроль времени в файлах данных POS-1
k=find(diff(T)<=0);   % indeces of false T
if length(k)~=0,
   disp('!!! Ошибка времени в данных POS-1 !!!')
    disp(datestr(T(k)))
    error('!!! Нужно исправить исходные данные !!!')
end

%f=pos_correct_all(f,err,thp,7);

if nargout==1,
    pos=[mon day hh mm ss f qmc err];
end
