;+
; Project     : SOHO - CDS     
;                   
; Name        : LOAD_ENG_PARMS
;               
; Purpose     : Loads specific eng. parameters and time into output array.
;               
; Explanation : From the global EngA and EngB data structures, the specific
;               parameters requested are selected and stored in the output
;               array.
;               
; Use         : IDL> load_eng_parms, wanted_parms, struct, time, out_array
;    
; Inputs      : wanted_parms  - array of parameter (tag) names
;               struct        - the complete EngA or EngB structure
;               
; Opt. Inputs : None
;               
; Outputs     : time       -  time array
;               out_array  -  array (N) of parameter times and values 
;                             where N is number of parameters
;               
; Opt. Outputs: None
;               
; Keywords    : None
;
; Calls       : None
;
; Common      : None
;               
; Restrictions: None
;               
; Side effects: None
;               
; Category    : Telemetry
;               
; Prev. Hist. : None
;
; Written     : C D Pike, RAL, 29-Sep-94
;               
; Modified    : 
;
; Version     : Version 1, 29-Sep-94
;-            

pro load_eng_parms, wanted_parms, str, time, out

;
;  how many parameters?
;
np = where(wanted_parms ne '')
if np(0) ge 0 then np = n_elements(np) else return

;
;  setup output array
;
out =  lonarr(np)

;
;  was it EngA (3 tags) or EngB (4 tags)?
;

for i=0,np-1 do begin
  name = wanted_parms(i)
  if n_tags(str) eq 3 then begin
    time = str.enga_cdhs.a_obt_time

    n = where(tag_names(str.enga_cdhs) eq  strupcase(name))
    if n(0) ge 0 then  out(i) = str.enga_cdhs.(n(0))

    n = where(tag_names(str.enga_eps) eq  strupcase(name))
    if n(0) ge 0 then  out(i) = str.enga_eps.(n(0))

    n = where(tag_names(str.enga_vds) eq  strupcase(name))
    if n(0) ge 0 then  out(i) = str.enga_vds.(n(0))

  endif else begin

    time = str.engb_cdhs.b_obt_time

    n = where(tag_names(str.engb_cdhs) eq  strupcase(name))
    if n(0) ge 0 then  out(i) = str.engb_cdhs.(n(0))

    n = where(tag_names(str.engb_mcu) eq  strupcase(name))
    if n(0) ge 0 then  out(i) = str.engb_mcu.(n(0))

    n = where(tag_names(str.engb_gis1) eq  strupcase(name))
    if n(0) ge 0 then  out(i) = str.engb_gis1.(n(0))

    n = where(tag_names(str.engb_gis2) eq  strupcase(name))
    if n(0) ge 0 then  out(i) = str.engb_gis2.(n(0))

  endelse
endfor

end
