	FUNCTION gen_fn, hdr, drecs, wid=wid, wkpre=wkpre, $
			prefix=prefix, fileids=fileids
;	---------------------------------------------------------------
;+							30-Nov-92
;	NAME:
;		gen_fn
;	PURPOSE:
;		Given file prefix and/or fileid Generate/Create full 
;		file names.
;	CALLING SEQUENCE:
;		fn = gen_fn(hdr, drecs, [wid=wid, wkpre=wkpre,
;			prefix=prefix, fileids=fileids])
;		Where:
;		hdr	input header to tape dir. file
;		drecs	input data_recs to tape dir. file
;		wid	optional input Weekid to create hdr and drecs.
;		wkpre	 optional input for weekly file prefixes
;		prefix	 optional input for reformatted file prefixes
;		fileids	 optional input for reformatted fileids
;	Examples:
;		fn = gen_fn(hdr, drecs, prefix=['spr','sfr'], 
;				fileids=['911205.1207','911206.0424'])
;		fn = gen_fn(wid='91_49', prefix=['spr'], 
;				fileids=['911206.0424'])
;
;	HISTORY:
;		Written 16-Sept-92, gal
;		30-Nov, bug fix for null on weeklys, gal
;-
;	---------------------------------------------------------------

	IF Keyword_set(wid) THEN BEGIN
	  fweekfn = weekid(wid, /xbd, ver=verno)
	  rd_tapdir, fweekfn, hdr, drecs
	ENDIF

;	Create Weekly file names
	IF (n_elements(wkpre) ne 0) THEN BEGIN
	  IF (wkpre(0) ne '') THEN BEGIN 	;check for null
	    weeklys = strarr(n_elements(wkpre))
	    wid = string(drecs.fileid)		;plus a
	    prelst = str2arr(string(hdr.wkprelst),del=',')
	    extlst = string((hdr.wkextlst),format='(i2.2)')
	    FOR i=0, n_elements(wkpre)-1 DO BEGIN	;for each
	      idx = where(prelst eq wkpre(i))
	      weeklys(i) = wkpre(i)+wid+'.'+extlst(idx)
	    ENDFOR
	  ENDIF
	ENDIF

;	Create reformatted file names
	CASE 1 OF
	  (n_elements(prefix) ne 0) AND (n_elements(fileids) ne 0): BEGIN
	    pre = strlowcase(prefix)
	    FOR i=0, n_elements(pre)-1 DO BEGIN
	      if i eq 0 then begin
		ret= pre(0)+fileids
	      endif else begin
	        r1= pre(i)+fileids		;append ids 
		ret = [ret, r1]			
	      endelse
	    ENDFOR
	  END			;end for prefix & fileid
	  (n_elements(prefix) ne 0): BEGIN	;prefix only
	    pre = strlowcase(prefix)
	    fids = string(drecs.fileid)         ;all fids
	    fids = fids(1:*)		;drop the 1st
            FOR i=0, n_elements(pre)-1 DO BEGIN
              if i eq 0 then begin
                ret= pre(0)+fids
              endif else begin
                r1= pre(i)+fids		;append ids
                ret = [ret, r1]
              endelse
            ENDFOR
	  END			;end for prefix
	  (n_elements(fileids) ne 0): BEGIN	;fileids only
	    pre = prefixck(/noobs)		;must want all pre*
	    FOR i=0, n_elements(pre)-1 DO BEGIN
              if i eq 0 then begin
                ret= pre(0)+fids
              endif else begin
                r1= pre(i)+fids		;append ids
                ret = [ret, r1]
              endelse
            ENDFOR	    	    
	  END			;end for fileid
	  ELSE:  Print, 'invalid combination of input keywords'
	ENDCASE

	if n_elements(weeklys) ne 0 then ret = [weeklys, ret]

	RETURN, ret
	END      
	
