libSBE.pl
author A.M. Thurnherr <athurnherr@yahoo.com>
Thu, 17 Mar 2016 12:26:02 -0400
changeset 27 abeaad5308ba
parent 23 a4fef65fd959
child 28 db6c3d13f8be
permissions -rwxr-xr-x
V6.5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     1
#======================================================================
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     2
#                    L I B S B E . P L 
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     3
#                    doc: Mon Nov  3 12:42:14 2014
23
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
     4
#                    dlm: Tue Sep 29 11:01:30 2015
10
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     5
#                    (c) 2014 A.M. Thurnherr
23
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
     6
#                    uE-Info: 45 54 NIL 0 0 72 2 2 4 NIL ofnI
10
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     7
#======================================================================
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     8
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     9
# HISTORY:
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    10
#	Nov  3, 2014: - exported from [importCNV]
21
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 10
diff changeset
    11
#	Jun 16, 2015: - cosmetics
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 10
diff changeset
    12
#	Jun 17, 2015: - ensured numeric retvals of SBE_parseheader are returned as numbers
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 10
diff changeset
    13
#	Jun 18, 2015: - BUG: binary code had several bugs
23
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    14
#	Sep 29, 2015: - added potemp and sigma standard field names
10
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    15
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    16
#----------------------------------------------------------------------
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    17
# fname_SBE2std($)
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    18
#	- standardize field names (also adds correct unit %PARAMs)
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    19
#----------------------------------------------------------------------
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    20
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    21
sub fname_SBE2std($)
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    22
{
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    23
	$_ = $_[0];
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    24
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    25
	return 'lat' 		if /^lat/;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    26
	return 'lon' 		if /^lon/;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    27
	return 'press'		if /^prDM/;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    28
	return 'depth'		if /^depSM/;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    29
	return 'O2' 		if /^sbeox0/;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    30
	return 'alt_O2' 	if /^sbeox1/;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    31
	return 'salin' 		if /^sal00/;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    32
	return 'alt_salin' 	if /^sal11/;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    33
	return 'elapsed'	if /^timeS/;
23
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    34
	return 'sigma0' 	if /^sigma.*00/;
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    35
	return 'alt_sigma0' if /^sigma.*11/;
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    36
	return 'rho0' 		if /^density00/;
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    37
	return 'alt_rho0'	if /^density11/;
10
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    38
	
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    39
	if (/^t090/) {											# temperatures with different scales
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    40
		croak("$0: inconsistent temperature scales\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    41
			if defined($P{ITS}) && ($P{ITS} != 90);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    42
		&antsAddParams('ITS',90); $P{ITS} = 90;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    43
		return 'temp';
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    44
	} elsif (/^t068/) {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    45
		croak("$0: inconsistent temperature scales\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    46
			if defined($P{ITS}) && ($P{ITS} != 68);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    47
		&antsAddParams('ITS',68); $P{ITS} = 68;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    48
		return 'temp';
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    49
	}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    50
		
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    51
	if (/^t190/) {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    52
		croak("$0: inconsistent temperature scales\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    53
			if defined($P{ITS}) && ($P{ITS} != 90);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    54
		&antsAddParams('ITS',90); $P{ITS} = 90;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    55
		return 'alt_temp';
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    56
	} elsif (/^t168/) {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    57
		croak("$0: inconsistent temperature scales\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    58
			if defined($P{ITS}) && ($P{ITS} != 68);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    59
		&antsAddParams('ITS',68); $P{ITS} = 68;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    60
		return 'alt_temp';
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    61
	}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    62
23
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    63
	if (/^potemp090/) {											# potential temperatures with different scales
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    64
		croak("$0: inconsistent temperature scales\n")
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    65
			if defined($P{ITS}) && ($P{ITS} != 90);
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    66
		&antsAddParams('ITS',90); $P{ITS} = 90;
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    67
		return 'theta0';
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    68
	} elsif (/^potemp068/) {
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    69
		croak("$0: inconsistent temperature scales\n")
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    70
			if defined($P{ITS}) && ($P{ITS} != 68);
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    71
		&antsAddParams('ITS',68); $P{ITS} = 68;
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    72
		return 'theta0';
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    73
	}
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    74
		
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    75
	if (/^potemp190/) {
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    76
		croak("$0: inconsistent temperature scales\n")
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    77
			if defined($P{ITS}) && ($P{ITS} != 90);
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    78
		&antsAddParams('ITS',90); $P{ITS} = 90;
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    79
		return 'alt_theta0';
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    80
	} elsif (/^potemp168/) {
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    81
		croak("$0: inconsistent temperature scales\n")
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    82
			if defined($P{ITS}) && ($P{ITS} != 68);
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    83
		&antsAddParams('ITS',68); $P{ITS} = 68;
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    84
		return 'alt_theta0';
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    85
	}
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
    86
10
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    87
	if (m{^c0S/m}) {										# conductivity with different units
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    88
		croak("$0: inconsistent conductivity units\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    89
			if defined($P{cond.unit}) && ($P{cond.unit} ne 'S/m');
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    90
		&antsAddParams('cond.unit','S/m'); $P{cond.unit} = 'S/m';
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    91
		return 'cond';
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    92
	} elsif (m{^c0mS/cm}) {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    93
		croak("$0: inconsistent conductivity units\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    94
			if defined($P{cond.unit}) && ($P{cond.unit} != 'mS/cm');
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    95
		&antsAddParams('cond.unit','mS/cm'); $P{cond.unit} = 'mS/cm';
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    96
		return 'cond';
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    97
	}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    98
		
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    99
	if (m{^c1S/m}) {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   100
		croak("$0: inconsistent conductivity units\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   101
			if defined($P{cond.unit}) && ($P{cond.unit} != 'S/m');
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   102
		&antsAddParams('cond.unit','S/m'); $P{cond.unit} = 'S/m';
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   103
		return 'alt_cond';
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   104
	} elsif (m{^c1mS/cm}) {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   105
		croak("$0: inconsistent conductivity units\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   106
			if defined($P{cond.unit}) && ($P{cond.unit} != 'mS/cm');
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   107
		&antsAddParams('cond.unit','mS/cm'); $P{cond.unit} = 'mS/cm';
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   108
		return 'alt_cond';
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   109
	}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   110
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   111
	return $_;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   112
}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   113
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   114
# same as above but leaving names in place (only setting %PARAMs)
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   115
sub fname_SBE($)
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   116
{
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   117
	$_ = $_[0];
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   118
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   119
	if (/^t090/) {											# temperatures with different scales
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   120
		croak("$0: inconsistent temperature scales\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   121
			if defined($P{ITS}) && ($P{ITS} != 90);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   122
		&antsAddParams('ITS',90); $P{ITS} = 90;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   123
	} elsif (/^t068/) {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   124
		croak("$0: inconsistent temperature scales\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   125
			if defined($P{ITS}) && ($P{ITS} != 68);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   126
		&antsAddParams('ITS',68); $P{ITS} = 68;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   127
	}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   128
		
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   129
	if (/^t190/) {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   130
		croak("$0: inconsistent temperature scales\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   131
			if defined($P{ITS}) && ($P{ITS} != 90);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   132
		&antsAddParams('ITS',90); $P{ITS} = 90;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   133
	} elsif (/^t168/) {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   134
		croak("$0: inconsistent temperature scales\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   135
			if defined($P{ITS}) && ($P{ITS} != 68);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   136
		&antsAddParams('ITS',68); $P{ITS} = 68;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   137
	}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   138
23
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
   139
	if (/^potemp090/) {
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
   140
		croak("$0: inconsistent temperature scales\n")
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
   141
			if defined($P{ITS}) && ($P{ITS} != 90);
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
   142
		&antsAddParams('ITS',90); $P{ITS} = 90;
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
   143
	} elsif (/^potemp068/) {
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
   144
		croak("$0: inconsistent temperature scales\n")
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
   145
			if defined($P{ITS}) && ($P{ITS} != 68);
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
   146
		&antsAddParams('ITS',68); $P{ITS} = 68;
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
   147
	}
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
   148
		
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
   149
	if (/^potemp190/) {
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
   150
		croak("$0: inconsistent temperature scales\n")
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
   151
			if defined($P{ITS}) && ($P{ITS} != 90);
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
   152
		&antsAddParams('ITS',90); $P{ITS} = 90;
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
   153
	} elsif (/^potemp168/) {
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
   154
		croak("$0: inconsistent temperature scales\n")
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
   155
			if defined($P{ITS}) && ($P{ITS} != 68);
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
   156
		&antsAddParams('ITS',68); $P{ITS} = 68;
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
   157
	}
a4fef65fd959 V6.2 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 21
diff changeset
   158
10
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   159
	if (m{^c0S/m}) {										# conductivity with different units
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   160
		croak("$0: inconsistent conductivity units\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   161
			if defined($P{cond.unit}) && ($P{cond.unit} ne 'S/m');
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   162
		&antsAddParams('cond.unit','S/m'); $P{cond.unit} = 'S/m';
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   163
	} elsif (m{^c0mS/cm}) {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   164
		croak("$0: inconsistent conductivity units\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   165
			if defined($P{cond.unit}) && ($P{cond.unit} != 'mS/cm');
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   166
		&antsAddParams('cond.unit','mS/cm'); $P{cond.unit} = 'mS/cm';
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   167
	}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   168
		
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   169
	if (m{^c1S/m}) {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   170
		croak("$0: inconsistent conductivity units\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   171
			if defined($P{cond.unit}) && ($P{cond.unit} != 'S/m');
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   172
		&antsAddParams('cond.unit','S/m'); $P{cond.unit} = 'S/m';
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   173
	} elsif (m{^c1mS/cm}) {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   174
		croak("$0: inconsistent conductivity units\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   175
			if defined($P{cond.unit}) && ($P{cond.unit} != 'mS/cm');
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   176
		&antsAddParams('cond.unit','mS/cm'); $P{cond.unit} = 'mS/cm';
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   177
	}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   178
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   179
	return $_;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   180
}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   181
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   182
#----------------------------------------------------------------------
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   183
# SBE_checkTime($$)
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   184
# 	- make sure all times are (roughly) the same
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   185
#----------------------------------------------------------------------
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   186
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   187
{ # static scope
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   188
	my($target_month,$target_day,$target_year,$target_time);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   189
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   190
sub SBE_checkTime($$)
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   191
{
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   192
	return unless $_[1];
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   193
	my($mo,$dy,$yr,$tm) = split('\s+',$_[0]);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   194
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   195
	unless (defined($target_month)) {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   196
		$target_month = $mo;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   197
		$target_day   = $dy;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   198
		$target_year  = $yr;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   199
		$target_time  = $tm;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   200
		return;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   201
	}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   202
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   203
	croak("$0: inconsistent dates in header ($target_month $target_day $target_year vs $mo $dy $yr)\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   204
		unless ($target_month eq $mo && $target_day == $dy && $target_year == $yr);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   205
	croak("$0: inconsistent times in header ($target_time vs $tm)\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   206
		unless (abs(frac_day(split(':',$target_time))-frac_day(split(':',$tm))) < 1/60/24);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   207
}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   208
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   209
} # static scope
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   210
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   211
#----------------------------------------------------------------------
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   212
# sub SBE_parseHeader(FP,std-field-names,time-check)
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   213
#	- parse header information
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   214
#----------------------------------------------------------------------
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   215
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   216
sub SBE_parseHeader($$$)
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   217
{
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   218
	my($FP,$sfn,$tc) = @_;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   219
	my($hdr,$nfields,$nrecs,$deg,$min,$NS,$EW,$lat,$lon,$sampint,$badval,$ftype);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   220
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   221
	while (1) { 										# parse header
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   222
		chomp($hdr = <$FP>);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   223
		$hdr =~ s/\r*$//;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   224
		die("$0: unexpected EOF (format error)\n") unless defined($hdr);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   225
		last if ($hdr eq '*END*');
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   226
	    
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   227
		$nfields = $',next if ($hdr =~ /nquan = /); 	# Layout
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   228
		$nrecs = $',next if ($hdr =~ /nvalues = /);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   229
		if ($hdr =~ /name (\d+) = ([^:]+):/) {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   230
			$antsNewLayout[$1] = $sfn ? fname_SBE2std($2) : fname_SBE($2);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   231
			next;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   232
		}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   233
		    
21
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 10
diff changeset
   234
		SBE_checkTime($1,$tc),next 						# sanity time check
10
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   235
			if ($hdr =~ /NMEA UTC \(Time\) = (.*)/);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   236
		SBE_checkTime($1,$tc),next
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   237
			if ($hdr =~ /System UpLoad Time = (.*)/);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   238
	
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   239
		&antsAddParams('CNV_File',$1),next				# selected metadata
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   240
			if ($hdr =~ /FileName = (.*)$/);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   241
		SBE_checkTime($1,$tc),&antsAddParams('start_time',$1),next
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   242
			if ($hdr =~ /start_time = (.*)/);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   243
	
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   244
		&antsAddParams('station',$1),next
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   245
			if ($hdr =~ /Station\s*:\s*(.*)/);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   246
		&antsAddParams('ship',$1),next
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   247
			if ($hdr =~ /Ship\s*:\s*(.*)/);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   248
		&antsAddParams('cruise',$1),next
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   249
			if ($hdr =~ /Cruise\s*:\s*(.*)/);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   250
		&antsAddParams('time',$1),next
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   251
			if ($hdr =~ /Time\s*:\s*(.*)/);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   252
		&antsAddParams('date',$1),next
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   253
			if ($hdr =~ /Date\s*:\s*(.*)/);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   254
	
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   255
		if (($hdr =~ /Latitude\s*[:=]\s*/) && !defined($lat)) {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   256
			($deg,$min,$NS) = split(/\s+/,$');
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   257
			croak("$0: cannot decode latitude ($')\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   258
				unless ($NS eq 'N' || $NS eq 'S');
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   259
			$lat = $deg + $min/60;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   260
			$lat *= -1 if ($NS eq 'S');
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   261
			&antsAddParams('lat',$lat);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   262
			next;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   263
		}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   264
		if (($hdr =~ /Longitude\s*[:=]\s*/) && !defined($lon)) {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   265
			($deg,$min,$EW) = split(/\s+/,$');
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   266
			croak("$0: cannot decode longitude ($')\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   267
				unless ($EW eq 'E' || $EW eq 'W');
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   268
			$lon = $deg + $min/60;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   269
			$lon *= -1 if ($EW eq 'W');
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   270
			&antsAddParams('lon',$lon);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   271
			next;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   272
		}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   273
	    
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   274
		if ($hdr =~ /interval = seconds: /) {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   275
			$sampint = 1*$';
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   276
			&antsAddParams('sampling_frequency',1/$sampint);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   277
			next;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   278
		}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   279
		if ($hdr =~ /interval = decibars: /) {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   280
			$sampint = 1*$';
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   281
			&antsAddParams('sampling_press_interval',$sampint);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   282
			next;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   283
		}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   284
	    
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   285
		$badval = $',next
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   286
			if ($hdr =~ /bad_flag = /); 
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   287
		$ftype = $',next
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   288
			if ($hdr =~ /file_type = /);    
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   289
	}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   290
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   291
	croak("$0: cannot determine file layout\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   292
		unless (@antsNewLayout && defined($nfields) && defined($nrecs));
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   293
	croak("$0: cannot determine missing value\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   294
	    unless defined($badval);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   295
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   296
	@antsLayout = @antsNewLayout;
21
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 10
diff changeset
   297
	return (1*$nfields,1*$nrecs,1*$sampint,1*$badval,$ftype,1*$lat,1*$lon);
10
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   298
}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   299
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   300
#----------------------------------------------------------------------
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   301
# SBEin($$)
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   302
#	- read SBE CTD data
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   303
#----------------------------------------------------------------------
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   304
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   305
{ my(@dta); my($nextR)=0;										# static scope
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   306
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   307
sub SBEin($$$$$)
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   308
{
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   309
	my($FP,$ftype,$nf,$nr,$bad) = @_;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   310
	my(@add);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   311
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   312
	splice(@ants_,0,$antsBufSkip);								# shift buffers
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   313
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   314
	if ($ftype eq 'ascii') {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   315
		until ($#ants_>=0 && &antsBufFull()) {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   316
			return undef unless (@add = &antsFileIn($FP));
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   317
			for (my($f)=0; $f<$nf; $f++) {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   318
				$add[$f] = nan if ($add[$f] == $bad);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   319
			}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   320
			push(@ants_,[@add]);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   321
		}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   322
	} elsif ($ftype eq 'binary') {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   323
		unless (@dta) {											# read binary data once
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   324
			my($fbits) = 8 * length(pack('f',0));
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   325
			croak(sprintf("$0: incompatible native CPU float representation (%d instead of 32bits)\n",fbits))
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   326
				unless ($fbits == 32);  
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   327
			my($dta);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   328
			croak("$0: can't read binary data\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   329
				unless (read($FP,$dta,4*$nf*$nr) == 4*$nf*$nr);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   330
			print(STDERR "WARNING: extraneous data at EOF\n")
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   331
				unless eof($FP);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   332
			$dta = pack('V*',unpack('N*',$dta)) 				# big-endian CPU
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   333
				if (unpack('h*', pack('s', 1)) =~ /01/);		# c.f. perlport(1)
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   334
			@dta = unpack("f*",$dta);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   335
			for ($r=0; $r<$nr; $r++) {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   336
				for ($f=0; $f<$nf; $f++) {
21
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 10
diff changeset
   337
					$dta[$r*$nf+$f] = nan if ($dta[$r*$nf+$f] == $bad);
10
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   338
				}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   339
	        }
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   340
	    }
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   341
		until ($#ants_>=0 && &antsBufFull()) {					# copy next out
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   342
			return undef unless ($nextR < $nr);
21
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 10
diff changeset
   343
			@add = @dta[$nextR*$nf..($nextR+1)*$nf-1];
10
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   344
			push(@ants_,[@add]);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   345
			$nextR++;
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   346
        }
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   347
    } else {
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   348
		croak("$0: unknown file type $ftype\n");
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   349
    }
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   350
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   351
	return $#ants_+1;											# ok
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   352
}
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   353
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   354
} # static scope
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   355
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   356
#----------------------------------------------------------------------
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   357
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   358
1;																# return true