function rm_trailer, value split = strsplit(value, '[', /extract) clean = strtrim(split(0),2) return, clean end function single_missing, value split = strsplit(value, ',', /extract) missing = strtrim(split(0),2) return, missing end function loadhdrs, file line = '' unread = -2 openr, lun, /get_lun, file h = { $ investigators:'NA', $ affiliations:'NA', $ contact:'NA', $ experiment:'NA', $ cruise:'NA', $ station:'NA', $ documents:'NA', $ calibration_files:'NA', $ data_type:'NA', $ data_status:'NA', $ start_date:99999999, $ end_date:99999999, $ start_time:'99:99:99', $ end_time:'99:99:99', $ north_latitude:0.0, $ south_latitude:0.0, $ east_longitude:0.0, $ west_longitude:0.0, $ cloud_percent:-999.0, $ wind_speed:-999.0, $ wave_height:-999.0, $ water_depth:-999.0, $ measurement_depth:-999.0, $ secchi_depth:-999.0, $ delimiter:'NA', $ missing:-999.0, $ fields:'NA', $ units:'NA', $ comments:'', $ loc:fltarr(8) } repeat begin readf, lun, line split = strsplit(strlowcase(line), '=', /extract) first = strmid(line,0,1) case split(0) of '/investigators' : h.investigators = strtrim(split(1),2) '/affiliations' : h.affiliations = strtrim(split(1),2) '/contact' : h.contact = strtrim(split(1),2) '/experiment' : h.experiment = strtrim(split(1),2) '/cruise' : h.cruise = strtrim(split(1),2) '/station' : h.station = strtrim(split(1),2) '/documents' : h.documents = strtrim(split(1),2) '/calibration_files' : h.calibration_files = strtrim(split(1),2) '/data_type' : h.data_type = strtrim(split(1),2) '/data_status' : h.data_status = strtrim(split(1),2) '/start_date' : h.start_date = long(strtrim(split(1),2)) '/end_date' : h.end_date = long(strtrim(split(1),2)) '/start_time' : h.start_time = rm_trailer(split(1)) '/end_time' : h.end_time = rm_trailer(split(1)) '/north_latitude' : h.north_latitude = rm_trailer(split(1)) '/south_latitude' : h.south_latitude = rm_trailer(split(1)) '/east_longitude' : h.east_longitude = rm_trailer(split(1)) '/west_longitude' : h.west_longitude = rm_trailer(split(1)) '/delimiter' : h.delimiter = strtrim(split(1),2) '/missing' : h.missing = single_missing(split(1)) '/fields' : h.fields = strtrim(split(1),2) '/units' : h.units = strtrim(split(1),2) '/cloud_percent' : if strpos(split(1),'na') eq -1 then h.cloud_percent = float(strtrim(split(1),2)) '/wind_speed' : if strpos(split(1),'na') eq -1 then h.wind_speed = float(strtrim(split(1),2)) '/wave_height' : if strpos(split(1),'na') eq -1 then h.wave_height = float(strtrim(split(1),2)) '/secchi_depth' : if strpos(split(1),'na') eq -1 then h.secchi_depth = float(strtrim(split(1),2)) '/water_depth' : if strpos(split(1),'na') eq -1 then h.water_depth = float(strtrim(split(1),2)) '/measurement_depth' : if strpos(split(1),'na') eq -1 then h.measurement_depth = float(strtrim(split(1),2)) else: if first eq '!' then h.comments = h.comments + line else unread = unread + 1 endcase endrep until strmid(line,0,11) eq '/end_header' date = strtrim(string(h.start_date),2) h.loc = [ $ strmid(date,0,4),strmid(date,4,2),strmid(date,6,2), $ strmid(h.start_time,0,2),strmid(h.start_time,3,2),strmid(h.start_time,6,2), $ h.south_latitude, h.west_longitude] free_lun, lun return, h end