function newfiles, nfiles, sfd=sfd, sfr=sfr, spd=spd, spr=spr, $ bda=bda, hda=hda, wda=wda, oldfiles=oldfiles, $ fid=fid, pattern=pattern, select=select, last=last, quiet=quiet, $ gbh=gbh,gbl=gbl,gbw=gbw,gch=gch,ghh=ghh,ghm=ghm,gki=gki,$ gkm=gkm,glh=glh,gnp=gnp,gnt=gnt, widget=widget, one=one, $ ssc=ssc, sss=sss quiet=keyword_set(quiet) pathenv='$DIR_SITE_NEWDATA' ; default location pathenv=str2arr(pathenv) ; allow comma delimited env if keyword_set(fid) then files=uniq_fid(pathenv) else begin ; ; form prefix scaler/vector (keywords not mutually exclusive) prefix='' if keyword_set(spr) then prefix=[prefix,'spr'] if keyword_set(sfr) then prefix=[prefix,'sfr'] if keyword_set(spd) then prefix=[prefix,'spd'] if keyword_set(bda) then prefix=[prefix,'bda'] if keyword_set(sfd) then prefix=[prefix,'sfd'] if keyword_set(ssc) then prefix=[prefix,'ssc'] if keyword_set(sss) then prefix=[prefix,'sss'] if keyword_set(hda) then prefix=[prefix,'hda'] gbopre=str2arr('gbh,gbl,gbw,gch,ghh,ghm,gki,gkm,glh,gnp,gnt') for i=0,n_elements(gbopre)-1 do begin exestr='if keyword_set(' + gbopre(i) + $ ') then prefix=[prefix,"' + gbopre(i) + '"]' exestat=execute(exestr) endfor gbocheck=where(strmid(prefix,0,1) eq 'g',gcnt) if gcnt gt 0 then begin pathenv=gbo_paths(/noshell,/gbo) pathenv=pathenv((n_elements(pathenv) - 4):(n_elements(pathenv) - 1)) pattern=['??????.????*'] ; may be compressed endif if n_elements(prefix) eq 1 then prefix='???' else prefix=prefix(1:*) ; determing file patttern template case 1 of keyword_set(pattern): is_member(prefix,'ssc'): pattern='????????_????_??????.?' is_member(prefix,'sss'): pattern='????????_????_??????_??_.?' else: pattern='??????.????' endcase ; file_list does the dirty work times=0. files=file_list(pathenv,prefix+pattern,/quiet) if files(0) ne '' then times=file2time(files,out='tai',/quiet) ;-- patch for SFD files that use week ID's (e.g. sfd92_10a.12) ;-- (Zarro, 10-Aug-00) if is_member(prefix,'sfd') then begin pattern='??_???.??' tfiles=trim(file_list(pathenv,prefix+pattern,/quiet)) if tfiles(0) ne '' then begin break_file,tfiles,tdsk,tdir,tname,text week_ext=strmid(tname+text,3,100) time_ext=time2file(weekid2ex(week_ext),delimit='.',/year) t_files=concat_dir(tdsk+tdir,'sfd'+time_ext) t_times=file2time(t_files,out='tai',/quiet) if times(0) ne 0 then begin times=[times,t_times] files=[files,tfiles] endif endif endif ;-- now sort on time if times(0) ne 0. then begin sorder=sort(times) files=files(sorder) endif ; window selection option if keyword_set(select) then begin ss=wmenu_sel(files,one=one) if ss(0) eq -1 then begin message,/info,'No files selected!, returning... return,'' endif else files=files(ss) endif endelse if files(0) eq '' then nfile=0 else nfile=n_elements(files) ; if old, shift the array before selecting final cut if keyword_set(oldfiles) then files=shift(files,oldfiles) if keyword_set(last) then nfiles=last else nfiles=nfile if keyword_set(files(0)) then begin if nfiles gt 0 then begin if nfiles gt nfile then message,/info, $ 'More files requested than exist (' + strtrim(nfile,2) + ')' nfiles = nfiles < nfile files=files(nfile-nfiles:nfile-1) endif else files='' endif else begin if not quiet then $ message,/info, 'No files in DIR_SITE_NEWDATA with prefix: ' + prefix(0) endelse if n_elements(files) eq 1 then files=files(0) ; make scaler return,files end