;+ ; $LastChangedBy: davin-win $ ; $LastChangedDate: 2006-12-15 12:31:28 -0800 (Fri, 15 Dec 2006) $ ; $LastChangedRevision: 108 $ ; $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/ssl_general/trunk/CDF/cdf_load_vars.pro $ ;- function cdf_load_vars,files,varnames=vars,info=info,verbose=verbose,all=all ;if not keyword_set(info) then info = cdf_info(files[0],/attributes) i=0 repeat begin info = cdf_info(files[i++],/attributes) endrep until keyword_set(info) or i eq n_elements(files) if not keyword_set(info) then begin message,/info,'No valid CDF files' return,0 endif if keyword_set(all) then vars = info.vars.name for i=0,n_elements(files)-1 do begin if file_test(files[i]) eq 0 then begin print,'File not found: ',files[i] ; message,/info,'No such file: '+files[i] continue endif id = cdf_open(files[i]) for j=0,n_elements(vars)-1 do begin w = (where( strcmp(info.vars.name, vars[j]) , nw))[0] if nw ne 0 then begin vi = info.vars[w] if vi.numrec gt 0 then begin cdf_varget,id,vi.name,value ,/string ,rec_count=vi.numrec if vi.recvary then begin if vi.ndimen ge 1 then begin transshift = shift(indgen(vi.ndimen+1),1) value=reform(transpose(temporary(value),transshift),/overwrite) endif else value = reform(value,/overwrite) if keyword_set(verbose) then printdat,value,vi.name if not keyword_set(vi.dataptr) then vi.dataptr = ptr_new(value,/no_copy) $ else *vi.dataptr = [*vi.dataptr,temporary(value)] endif else begin if keyword_set(verbose) then printdat,value,vi.name if not keyword_set(vi.dataptr) then vi.dataptr = ptr_new(value,/no_copy) endelse info.vars[w] = vi endif endif else message,/info,vars[j]+' not found!' endfor cdf_close,id endfor return,info end