
FUNCTION QUERYCAT,headls,field,filter=filter, wave=wave, block=block, $
                 exptime1=exptime1, exptime2=exptime2, $
                 rows=rows, cols=cols, dt=dt, inst=inst, pf=pf

 IF headls(0) EQ '' THEN RETURN,{tmps:'',tmpp:''}

;PRINTF,lu,fn,date,time,tel,exptime,naxis1,naxis2,p1col,p1row, filt,pol,lp_num, wavel,$
;       format='(a12,2x,a12,2x,a8,2x,a3,f8.1,4i7,2x,a6,2x,a6,2x,a8,1x,a14)'
       
; fpos = [ 0,12,2 ;  0 file_name $
;         14,12,2 ;  1 date $
;         28,08,2 ;  2 time $
;         38,03,0 ;  3 telescope $
;         41,08,0 ;  4 exptime $
;         49,07,0 ;  5 naxis1 $
;         56,07,0 ;  6 naxis2 $
;         63,07,0 ;  7 p1col $
;         70,07,2 ;  8 p1row $
;         79,06,2 ;  9 filter $
;         87,06,2 ; 10 polarizer $
;         95,08,1 ; 11 lp_num $
;        104,13,0 ; 12 wavel ]
;	 116,5    ; 13 os_num
              
 fpos = [0,14,28,38,41,49,56,63,70,79,87,95,104,116]
 flen = [12,12,8,3,8,7,7,7,7,6,6,8,13,5]
 
 IF KEYWORD_SET(filen) THEN BEGIN
 
 ENDIF

 IF KEYWORD_SET(filter) THEN BEGIN

   ;field = 10
   fp = fpos(field)
   fl = flen(field)
   
   tmp = ''
   n = n_elements(headls)

   IF n EQ 0 THEN RETURN," "
   sorted = STRARR(n)

   for i=0,n-1 do begin
           
      line = STRTRIM(headls(i),1)
      fn = STRPOS(line,' ')

      IF fn NE 12 THEN fp = fpos(field)  + (fn-12) $ ; (fn-12) ????
                  ELSE fp = fpos(field)
  
      tmp = STRTRIM(STRMID(line,fp,fl),2)
      sorted(i) = tmp

   endfor

   ind = WHERE(sorted EQ filter)
   tmp = ''
   tmp_pf= ''
   IF ind(0) GT -1 THEN BEGIN
   
    tmp = headls(ind)
    tmp_pf  = pf(ind) 
     
   ENDIF
               
   tmps = tmp
   tmpp = tmp_pf
   
 ENDIF

 IF KEYWORD_SET(exptime1) THEN BEGIN

   ;field = 4
   fp = fpos(field)
   fl = flen(field)

   time1 = exptime1 < exptime2
   time2 = exptime1 > exptime2

   tmp = ''
   n = n_elements(headls)
   IF n EQ 0 THEN RETURN," "
   sorted = FLTARR(n)
   for i=0,n-1 do begin
      line = headls(i)
      fn = STRPOS(line,' ')
      fp = fpos(field)
      IF fn NE 12 THEN fp = fpos(field)  + (fn-12); (fn-12) ????
      
      tmp = STRMID(line,fp,fl)

      sorted(i) = FLOAT(tmp)
   endfor
   ind = WHERE(sorted  GE time1 AND  sorted LE time2)
   tmp = ''
   tmp_pf= ''
   IF ind(0) GT -1 THEN BEGIN
   
    tmp = headls(ind)
    tmp_pf  = pf(ind) 
     
   ENDIF
               
   tmps = tmp
   tmpp = tmp_pf
   
;   tmp = ''
;   IF ind(0) GT -1 THEN  tmp = headls(ind)
;               
;   tmps = tmp

 ENDIF

 IF KEYWORD_SET(rows) THEN BEGIN

   ;field = 6
   fp = fpos(field)
   fl = flen(field)
   
     tmp = ''
     n = n_elements(headls)
     IF n EQ 0 THEN RETURN," "
     sorted = FLTARR(n)
     for i=0,n-1 do begin
       line = headls(i)
       fn = STRPOS(line,' ')
       fp = fpos(field)
       IF fn NE 12 THEN fp = fpos(field)  + (fn-12); (fn-12) ????
       tmp = STRMID(line,fp,fl)

       sorted(i) = FIX(tmp)
     endfor
     ind = WHERE(sorted EQ rows )
     tmp = ''
     tmp_pf= ''
     IF ind(0) GT -1 THEN BEGIN
   
      tmp = headls(ind)
      tmp_pf  = pf(ind) 
     
     ENDIF
               
     tmps = tmp
     tmpp = tmp_pf
      
 ENDIF

 IF KEYWORD_SET(cols) THEN BEGIN

   ;field = 5
   fp = fpos(field)
   fl = flen(field)
   
     tmp = ''
     n = n_elements(headls)
     IF n EQ 0 THEN RETURN," "
     sorted = FLTARR(n)
     for i=0,n-1 do begin
       line = headls(i)
       fn = STRPOS(line,' ')
       fp = fpos(field)
       IF fn NE 12 THEN fp = fpos(field)  + (fn-12); (fn-12) ????       
       tmp = STRMID(line,fp,fl)

       sorted(i) = FIX(tmp)
     endfor
     ind = WHERE(sorted EQ cols )
     tmp = ''
     tmp_pf= ''
     IF ind(0) GT -1 THEN BEGIN
   
      tmp = headls(ind)
      tmp_pf  = pf(ind) 
     
     ENDIF
               
     tmps = tmp
     tmpp = tmp_pf
      
 ENDIF

 IF KEYWORD_SET(inst) THEN BEGIN

   fp = fpos(field)
   fl = flen(field)
   
     tmp = ''
     n = n_elements(headls)
     IF n EQ 0 THEN RETURN," "
     sorted = STRARR(n)
     for i=0,n-1 do begin
       line = headls(i)
       fn = STRPOS(line,' ')
       fp = fpos(field)
       IF fn NE 12 THEN fp = fpos(field)  + (fn-12); (fn-12) ????
       tmp = STRMID(line,fp,fl)

       sorted(i) = STRCOMPRESS(STRING(tmp),/REMOVE_ALL)
     endfor
     ind = WHERE(sorted EQ inst )
     tmp = ''
     tmp_pf= ''
     IF ind(0) GT -1 THEN BEGIN
   
      tmp = headls(ind)
      tmp_pf  = pf(ind) 
     
     ENDIF
               
     tmps = tmp
     tmpp = tmp_pf
   
 ENDIF 

 IF KEYWORD_SET(wave) THEN BEGIN

   field = 12
   fp = fpos(field)
   fl = flen(field)
   
     m = n_elements(wave) - 1

     tmp = ''
     n = n_elements(headls)
     IF n EQ 0 THEN RETURN," "
     sorted = STRARR(n)
     for i=0,n-1 do begin
       line = headls(i)
       fn = STRPOS(line,' ')
       fp = fpos(field)
       IF fn NE 12 THEN fp = fpos(field) + (fn-12) ; (fn-12) ????     
       tmp = STRMID(line,fp,fl)

       sorted(i) = STRMID( STRCOMPRESS(tmp,/REMOVE_ALL),0,6)
     endfor
     ;ind = WHERE(sorted EQ wave )
      CASE m OF
       0: ind = WHERE( sorted EQ wave(0) )
       1: ind = WHERE((sorted EQ wave(0)) OR (sorted EQ wave(1)) )
       2: ind = WHERE((sorted EQ wave(0)) OR (sorted EQ wave(1)) OR (sorted EQ wave(2)) )
       ELSE: donothing = 0
      ENDCASE       

     tmp = ''
     tmp_pf= ''
     IF ind(0) GT -1 THEN BEGIN
   
      tmp = headls(ind)
      tmp_pf  = pf(ind) 
     
     ENDIF
               
     tmps = tmp
     tmpp = tmp_pf   
 ENDIF

 IF KEYWORD_SET(block) THEN BEGIN

   block = 73728

   field = 13
   fp = fpos(field)
   fl = flen(field)

     tmp = ''
     n = n_elements(headls)
     IF n EQ 0 THEN RETURN," "
     sorted = STRARR(n)
     for i=0,n-1 do begin
       line = headls(i)
       fn = STRPOS(line,' ')
       fp = fpos(field)
       IF fn NE 12 THEN fp = fpos(field) + (fn-12) ; (fn-12) ????     
       tmp = STRMID(line,fp,fl)
       sorted(i) = STRMID( STRCOMPRESS(tmp,/REMOVE_ALL),0,6)
     endfor

     ind = WHERE(sorted LE block )
      
     tmp = ''
     tmp_pf= ''
     IF ind(0) GT -1 THEN BEGIN
   
      tmp = headls(ind)
      tmp_pf  = pf(ind) 
     
     ENDIF               
     tmps = tmp
     tmpp = tmp_pf  
   
 ENDIF
 
  
  IF KEYWORD_SET(dt) THEN BEGIN

     tmp = ''
     n = n_elements(headls)
     IF n EQ 0 THEN RETURN," "
     sorted = DBLARR(n)
     for i=0,n-1 do begin
       line = headls(i)
       tmp = STR_SEP(line,' ')
       ii = WHERE(tmp GT '')
       tmp = tmp(ii)
       tmp = tmp(field) + " "  + tmp(field+1)
   
       IF FIX(tmp) EQ 0 THEN BEGIN
            sorted(i) = 0
       ENDIF ELSE BEGIN
            sorted(i) = utc2tai(anytim2utc(tmp))
       ENDELSE
     endfor

     
     IF dt EQ 1 THEN ind = SORT(sorted) ELSE ind = REVERSE(SORT(sorted))
;     tmp = ''
;     IF ind(0) GT -1 THEN  tmp = headls(ind)
;               
;     tmps = tmp  
     tmp = ''
     tmp_pf= ''
     IF ind(0) GT -1 THEN BEGIN
   
      tmp = headls(ind)
      tmp_pf  = pf(ind) 
     
     ENDIF
               
     tmps = tmp
     tmpp = tmp_pf
      
 ENDIF
 
RETURN,{tmps:tmps,tmpp:tmpp}
END
