libWOCE.pl
changeset 0 a5233793bf69
new file mode 100644
--- /dev/null
+++ b/libWOCE.pl
@@ -0,0 +1,71 @@
+#======================================================================
+#                    L I B W O C E . P L 
+#                    doc: Mon Aug 28 11:07:47 2000
+#                    dlm: Thu Dec 10 13:43:44 2009
+#                    (c) 2000 A.M. Thurnherr
+#                    uE-Info: 31 33 NIL 0 0 72 2 2 4 NIL ofnI
+#======================================================================
+
+# HISTORY:
+#	Sep 04, 2000: - created from [libNODC.pl]
+#	Sep 19, 2000: - added &q_OK()
+#	Jan  2, 2002: - added optional length argument to &q_OK()
+#				  - allowed NaN observations in &q_OK()
+#	Aug 14, 2002: - added &csv_q_OK()
+#	Jun 19, 2004: - made Y2K compatible
+#	Apr  4, 2006: - added flt_qual(), flt_src()
+#   Jul  1, 2006: - Version 3.3 [HISTORY]
+#	Dec 10, 2009: - adapted to netCDF processing
+
+require "$ANTS/libconv.pl";		# imply lat/lon conversions
+
+#----------------------------------------------------------------------
+# date/time
+#----------------------------------------------------------------------
+
+sub YYYYMMDD(@)		# 8 digit date
+{
+	my($YYYYMMDD) = &antsFunUsage(1,"8","YYYYMMDD",@_);
+	return substr($YYYYMMDD,4,2) . '/' .
+		   substr($YYYYMMDD,6,2) . '/' .
+		   substr($YYYYMMDD,0,4);
+}
+
+sub HHMM(@)			# 4 digits
+{
+	$_[0] = sprintf('%04d',$_[0]) if (@_ > 0);		# pre-pad with 0es
+	my($HHMM) = &antsFunUsage(1,"4","HHMM",@_);
+	return substr($HHMM,0,2) . ":" . substr($HHMM,2,2);
+}
+
+#----------------------------------------------------------------------
+# CTD quality flags
+#----------------------------------------------------------------------
+
+sub q_OK(@)			# exchange-format version (single flags)
+{
+	return $_[1] == 2 ? $_[0] : nan;
+}
+
+#----------------------------------------------------------------------
+# Float Quality/Source Flags [/Data/Floats/DBE/WFDAC/WDBE/quality.doc]
+#	- 2-digit decimal number
+#	- 10s: quality (0-9, with 9 being best)
+#	-  1s: source:
+#			0	missing
+#			1	interpolated 	(backward diff for u/v)
+#			2					(forward diff for u/v)
+#			3	splined
+#			4	manually edited
+#			5	filtered/averaged
+#			9	original value
+#	- should accept source values >= 4
+#----------------------------------------------------------------------
+
+sub flt_qual($)
+{ return int($_[0] / 10); }
+
+sub flt_src($)
+{ return $_[0] % 10; }
+
+1;