LADCPproc.loadCTD
changeset 17 343ba18738cf
parent 9 48b2d27aaebf
child 19 12aaf0962ee6
--- a/LADCPproc.loadCTD
+++ b/LADCPproc.loadCTD
@@ -1,9 +1,9 @@
 #======================================================================
 #                    L A D C P P R O C . L O A D C T D 
 #                    doc: Thu Dec  9 18:39:01 2010
-#                    dlm: Tue Apr 17 18:10:38 2012
+#                    dlm: Fri Oct 19 11:27:44 2012
 #                    (c) 2010 A.M. Thurnherr
-#                    uE-Info: 18 27 NIL 0 0 72 2 2 4 NIL ofnI
+#                    uE-Info: 76 46 NIL 0 0 72 2 2 4 NIL ofnI
 #======================================================================
 
 # HISTORY:
@@ -16,6 +16,10 @@
 #	Feb  5, 2012: - BUG: ASCII file did not deal with leading spaces correctly
 #	Apr 11, 2012: - BUG: ASCII file did not handle nan latlons correctly
 #	Apr 17, 2012: - fiddled
+#	Oct 19, 2012: - BUG: support for $CTD{first_elapsed} had not been implemented
+#						 for binary files
+#				  - BUG: CTD_badval had not been considered when setting $CTD{first_elapsed}
+#				  - BUG: CNV format error was not detected correctly any more
 
 sub readCTD_ASCII($$)
 {
@@ -69,8 +73,8 @@
 	while (1) { 														# parse header
 		my($hdr);
 		chomp($hdr = <F>);
+		croak(" unexpected EOF (format error)!\n") unless defined($hdr);
 		$hdr =~ s/\r*$//;
-		croak("$0: unexpected EOF (format error)\n") unless defined($hdr);
 		last if ($hdr eq '*END*');
 	    
 		$CTD_nfields = $',next if ($hdr =~ /nquan = /); 				# Layout
@@ -140,7 +144,7 @@
 		while (1) {
 			last unless (my(@rec) = &antsFileIn(F));
 			$dtaR->{first_elapsed} = $rec[$elapsedF]
-				if defined($elapsedF) && !defined($dtaR->{first_elapsed});
+				if !defined($dtaR->{first_elapsed}) && defined($elapsedF) &&  $rec[$elapsedF]!=$CTD_badval;
 			push(@{$dtaR->{press}},($rec[$pressF] == $CTD_badval) ? nan : $rec[$pressF]);
 			push(@{$dtaR->{temp}}, ($rec[$tempF]  == $CTD_badval) ? nan : $rec[$tempF]);
 			push(@{$dtaR->{salin}},($rec[$salinF] == $CTD_badval) ? nan : $rec[$salinF]);
@@ -161,6 +165,8 @@
 		my(@dta) = unpack("f*",$dta);
 	
 		for (my($r)=0; $r<$CTD_nrecs; $r++) {
+			$dtaR->{first_elapsed} = $dta[$r*$CTD_nfields+$elapsedF]
+                if !defined($dtaR->{first_elapsed}) && defined($elapsedF) && $dta[$r*$CTD_nfields+$elapsedF]!=$CTD_badval;
 			push(@{$dtaR->{press}},($dta[$r*$CTD_nfields+$pressF] == $CTD_badval) ? nan : $dta[$r*$CTD_nfields+$pressF]);
 			push(@{$dtaR->{temp}}, ($dta[$r*$CTD_nfields+$tempF]  == $CTD_badval) ? nan : $dta[$r*$CTD_nfields+$tempF]);
 			push(@{$dtaR->{salin}},($dta[$r*$CTD_nfields+$salinF] == $CTD_badval) ? nan : $dta[$r*$CTD_nfields+$salinF]);