function [T,C1,C2,C3,C4,head]=iaga2002_read_fun_list(code,tip,flag_plot)
% Считывание данных из нескольких файлов в формате IAGA-2002
%
% [T,C1,C2,C3,C4,head]=iaga2002_read_fun_list(code,tip);
%
% code  - код обсерватории, например, 'nvs'
% tip   - типа данных (секундные, минутные и пр.), например, 'min'
% flag_plot - 0 - не рисуем (по умолчанию)
%             1 - рисуем графики (Fvar,Fscal,deltaF)
%             2 - рисуем графики (Var,Fvar,Fscal,deltaF)
%
%   T   - сериальная дата
% С1,С2,С3,С4 - компоненты поля, список которых есть в head.Elements
% head  - заголовок файла (из последнего считанного)
%
% Файлы должны находиться в поддиректории \tmp
% Принудительная сортировка не делается, так что возможны сбои (?)

% 21.12.2012    - С.Ю.Хомутов, Новосибирск
% 01.02.2020 - сделан вывод графиков
% 14.03.2020 - сделан вывод графиков составляющих и маркировка пропусков
% 09.12.2020 - добавлен вариант компоненты "E" (D для вариаций, в нТл)
% 04.09.2025 - FF сначала вычисляется по C4, если все C4=NaN - по Fv

if nargin<3,
    flag_plot=0;
end
% считываем список файлов в структуру
DD=dir(['tmp\' code '*.' tip]);
file=char(DD.name);
Nf=length(DD);

if length(DD)==0,
    error('!!! НЕ могу найти требуемые файлы !!!')
end

T=[]; C1=[];C2=[];C3=[];C4=[];
for kf=1:Nf,
    disp(['tmp\' file(kf,:)])
    [head,Tf,C1f,C2f,C3f,C4f]=iaga2002_read_fun(['tmp\' file(kf,:)]);
    T=[T;Tf];
    C1=[C1;C1f]; C2=[C2;C2f]; C3=[C3;C3f]; C4=[C4;C4f];
end

% заполняем брак (99999.00) NaN-ами
C1(C1>88880)=NaN; C2(C2>88880)=NaN;
C3(C3>88880)=NaN; C4(C4>88880)=NaN;

% рисуем графики
if flag_plot==1
    switch lower(head.Elements(1:2))
        case 'xy'
            Fv=total_field(C1,C2,C3);
        case 'hd'
            Fv=total_field(C1,C3);
        otherwise
            disp('... неизвестный набор элементов поля ...')
    end
    FF=base_to_extract(Fv);
    figure(100)
    subplot(211), plot(T,Fv-FF,T,C4-FF)
    datetick('x'), legend('Var','Scal','Location','Best')
    title([head.Code ' --- ' datestr(fix(min(T))) ' - ' datestr(fix(max(T)))])
    ylabel(sprintf('F%+d, nT', -FF))
    subplot(212),plot(T,Fv-C4)
    datetick('x'), ylabel('F(var)-F(scal), nT')
end
if flag_plot==2
    switch lower(head.Elements(1:2))
        case 'xy'
            Fv=total_field(C1,C2,C3);
            Shift1=base_to_extract(C1);
            xlbl1=sprintf('%c%+d,nT',head.Elements(1),-Shift1);
            Shift2=base_to_extract(C2);
            xlbl2=sprintf('%c%+d,nT',head.Elements(2),-Shift2);
            Shift3=base_to_extract(C3);
            xlbl3=sprintf('%c%+d,nT',head.Elements(3),-Shift3);
        case 'hd'
            Fv=total_field(C1,C3);
            Shift1=base_to_extract(C1);
            xlbl1=sprintf('%c%+d,nT',head.Elements(1),-Shift1);
            Shift2=base_to_extract(C2);
            xlbl2=sprintf('%c%+d,arcmin',head.Elements(2),-Shift2);
            Shift3=base_to_extract(C3);
            xlbl3=sprintf('%c%+d,nT',head.Elements(3),-Shift3);
        case 'he'
            Fv=ones(length(T),1)*NaN;
            Shift1=base_to_extract(C1);
            xlbl1=sprintf('%c%+d,nT',head.Elements(1),-Shift1);
            Shift2=base_to_extract(C2);
            xlbl2=sprintf('%c%+d,nT',head.Elements(2),-Shift2);
            Shift3=base_to_extract(C3);
            xlbl3=sprintf('%c%+d,nT',head.Elements(3),-Shift3);
        otherwise
            disp('... неизвестный набор элементов поля ...')
    end
    if sum(~isnan(C4))~=0    % 04.09.2025
        FF=base_to_extract(C4);
    else
        FF=base_to_extract(Fv);
    end
    figure(100)
    subplot(211), plot(T,Fv-FF,T,C4-FF)
    datetick('x'), legend('Var','Scal','Location','Best')
    title([head.Code ' --- ' datestr(fix(min(T))) ' - ' datestr(fix(max(T)))])
    ylabel(sprintf('F%+d, nT', -FF))
    subplot(212),plot(T,Fv-C4)
    datetick('x'), ylabel('F(var)-F(scal), nT')
    figure(101)
    k=isnan(C1); C_NaN=ones(sum(k),1)*nanmean(C1);
    subplot(311), plot(T,C1-Shift1,T(k),C_NaN-Shift1,'r.')
    ylabel(xlbl1), datetick('x')
    title([head.Code ' --- ' datestr(fix(min(T))) ' - ' datestr(fix(max(T)))])
    k=isnan(C2); C_NaN=ones(sum(k),1)*nanmean(C2);
    subplot(312), plot(T,C2-Shift2,T(k),C_NaN-Shift2,'r.')
    ylabel(xlbl2), datetick('x')
    k=isnan(C3); C_NaN=ones(sum(k),1)*nanmean(C3);
    subplot(313), plot(T,C3-Shift3,T(k),C_NaN-Shift3,'r.')
    ylabel(xlbl3), datetick('x')

end
