+# get a zulu time in cluster format (2300Z)
+sub ztime
+{
+ my $t = shift;
+ my ($sec,$min,$hour) = gmtime((defined $t) ? $t : time);
+ $year += 1900;
+ my $buf = sprintf "%02d%02dZ", $hour, $min;
+ return $buf;
+
+}
+
+# get a cluster format date (23-Jun-1998)
+sub cldate
+{
+ my $t = shift;
+ my ($sec,$min,$hour,$mday,$mon,$year) = gmtime((defined $t) ? $t : time);
+ $year += 1900;
+ my $buf = sprintf "%02d-%s-%04d", $mday, $month[$mon], $year;
+ return $buf;
+}
+
+# return a cluster style date time
+sub cldatetime
+{
+ my $t = shift;
+ my $date = cldate($t);
+ my $time = ztime($t);
+ return "$date $time";
+}
+
+# turn a latitude in degrees into a string
+sub slat
+{
+ my $n = shift;
+ my ($deg, $min, $let);
+ $let = $n >= 0 ? 'N' : 'S';
+ $n = abs $n;
+ $deg = int $n;
+ $min = int (($n - $deg) * 60);
+ return "$deg $min $let";
+}
+
+# turn a longitude in degrees into a string
+sub slong
+{
+ my $n = shift;
+ my ($deg, $min, $let);
+ $let = $n >= 0 ? 'E' : 'W';
+ $n = abs $n;
+ $deg = int $n;
+ $min = int (($n - $deg) * 60);
+ return "$deg $min $let";
+}
+
+# turn a true into 'yes' and false into 'no'
+sub yesno
+{
+ my $n = shift;
+ return $n ? $main::yes : $main::no;
+}