# Make a frequency from a DME channel
sub make_freq {
my ($type, $channel) = (@_);
- my $freq;
+ my $offset = 0;
+ $offset = 0.05 if ($channel =~ /Y$/);
if ($channel < 67) {
- $freq = 108 + (($channel - 17)/10.0);
+ return 108 + (($channel - 17)/10.0) + $offset;
} else {
- $freq = 112 + (($channel - 67)/10.0);
+ return 112 + (($channel - 67)/10.0) + $offset;
}
- if ($type == 9) {
- $freq += 0.05;
- }
- return $freq;
}
# Make a range based on navaid type and purpose
$magvar, $name, $TYPE_NAMES[$type]);
}
+sub make_dmagvar {
+ my($coord) = shift;
+ my( $value );
+ my( $dir, $deg, $date ) = $coord =~ m/^([EW])(\d\d\d\d)(\d\d\d\d)/;
+ $value = $deg / 10.0;
+ if ( $dir eq "W" ) {
+ $value = -$value;
+ }
+
+ return $value;
+}
+
<>; # skip header line
my $elev = $F[23];
my $freq = $F[8]/1000;
if ($type == 3 || $type == 9) {
- $freq = make_freq($type, 0 + $F[10]);
+ $freq = make_freq($type, $F[10]);
}
my $range = 0 + $F[14];
if ($range == 0) {
if ($magvar eq '') {
$magvar = 'XXX';
} else {
- $magvar =~ /^([EW])([0-9.]+)( .*)?/;
- $magvar = sprintf("%02d%s", $2/100000, $1);
+ my $tmp = make_dmagvar( $magvar );
+ # print "$magvar $tmp\n";
+ if ( $tmp <= 0 ) {
+ $magvar = sprintf("%02.0fW", -$tmp );
+ } else {
+ $magvar = sprintf("%02.0fE", $tmp );
+ }
}
my $name = $F[5];