libWOCE_oldstyle.pl
author Andreas Thurnherr <ant@ldeo.columbia.edu>
Mon, 13 Apr 2020 11:06:22 -0400
changeset 40 c1803ae2540f
parent 0 a5233793bf69
permissions -rw-r--r--
.

#======================================================================
#                    L I B W O C E . P L 
#                    doc: Mon Aug 28 11:07:47 2000
#                    dlm: Sun Jul  2 00:16:46 2006
#                    (c) 2000 A.M. Thurnherr
#                    uE-Info: 53 35 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]

require "$ANTS/libconv.pl";		# imply lat/lon conversions

#----------------------------------------------------------------------
# date/time
#----------------------------------------------------------------------

sub MMDDYY(@)		# 6 digit date
{
	my($MMDDYY) = &antsFunUsage(1,"6","MMDDYY",@_);
	my($YY) = substr($MMDDYY,4,2);
	return substr($MMDDYY,0,2) . "/" .
		   substr($MMDDYY,2,2) . ($YY>50 ? "/19$YY" : "/20$YY");
}

sub HHMM(@)			# 4 digits
{
	my($HHMM) = &antsFunUsage(1,"4","HHMM",@_);
	return substr($HHMM,0,2) . ":" . substr($HHMM,2,2);
}

#----------------------------------------------------------------------
# CTD quality flags
#----------------------------------------------------------------------

sub q_OK(@)				# accept only perfect measurements (table 4.10)
{
	my($nflags) = (@_ == 3) ? 4 : $_[3];
	my($obs,$qf,$qi) =
		&antsFunUsage(-3,".${nflags}c","obs, quality flags, flag index[, nflags]",@_);
	return (substr($qf,$qi,1) == 2) ? $obs : nan;
}

sub csv_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;