function read_fch,ant

   ; Make sure the call was made with a valid antenna
   whichant = where(ant eq [1,2,4,5,6],n)
   if (n eq 0) then return,-1   ; Invalid antenna, so return an error

   ; Find all of the history files in the !DEFAULTS.DBDIR directory
   ; for the given antenna.
   f = findfile(!defaults.dbdir+'*_'+string(ant,format='(i1)')+'.fch',count=nf)
   if (nf eq 0) then return,-1  ; There were no history files

   ; Some files were found, so order them according to date
   f = f(sort(f))

   ; Read the first file and use the third line as a
   ; guide to the structure of the file (this routine does not
   ; need to organize the data, just reads and returns it).
   hed = strarr(3)   ; Three header lines
   openr,/get_lun,lun,f(0)
   readf,lun,hed
   free_lun,lun
   ; The following statement returns the widths of the various columns.
   ; Columns separated by two blanks return a width of zero.
   colsizes = strlen(str_sep(hed(2),' '))
   ncol = n_elements(colsizes)
   colsizes = [0,colsizes]  ; Add a zero on the beginning of the array

   ; Loop through the files one at a time, skipping the header after
   ; the first one, since it should be the same for every file.
   line = ''
   j = -1
   data = strarr(ncol,120)
   for i = 0, nf-1 do begin
      openr,/get_lun,lun,f(i)
      readf,lun,hed
      while (not EOF(lun)) do begin
         readf,lun,line
         j = j + 1
         for n = 0,ncol-1 do begin
            data(n,j) = strmid(line,total(colsizes(0:n))+n,colsizes(n+1))
         endfor
      endwhile
      free_lun,lun
   endfor
   ; Eliminate columns where there were extra blanks, indicated by
   ; zero length colsizes entries (but skip the first zero in colsizes,
   ; which is the one we put there).
   good = where(colsizes ne 0,ngood)
   if (ngood ne 0) then begin
      data = data(good-1,0:j)
   endif
return,data
end