#!/usr/bin/perl # Routine to convert the ancient ephemeris tables into a format similar to # the modern ephemeris tables. # # Format: % oldtab in_file out_file # # 27 Apr 2006, acr. # #========================================================================== if (@ARGV != 3) { die "Usage: % oldtab in_file records out_file\n"; } open(OLD,$ARGV[0]) || die "Could not open $ARGV[0] for reading ($!)"; open(NEW,">$ARGV[2]") || die "Could not open $ARGV[1] for writing ($!)"; for ($i=0; $i<$ARGV[1]; $i++) { read OLD, $line, 360; # UTC Time: $y = substr($line,0,4); $m = substr($line,4,2); $d = substr($line,6,2); $f = substr($line,8,6); $f = $f * 24.0; $hh = int($f); $f = ($f - ($hh*1.0)) * 60.0; $mm = int($f); $f = ($f - ($mm*1.0)) * 60.0; $ss = int ($f + 0.5); $utc = sprintf "%4d-%02d-%02dT%02d:%02d:%02d",$y,$m,$d,$hh,$mm,$ss; # Julian Date & ET-UTC Correction $julian = substr($line,15,13); $et_utc = substr($line,29,4); # Right ascension and declination: $hh = substr($line,34,2); $mm = substr($line,36,2); $ss = substr($line,38,5); $ra = sprintf "%9.5f", ($hh + ($mm/60.0) + ($ss/3600.0)) * 15.0; $s = substr($line,44,1); $dd = substr($line,45,2); $mm = substr($line,47,2); $ss = substr($line,49,4); $dec = sprintf "%s%08.5f", $s, ($dd + ($mm/60.0) + ($ss/3600.0)); # Coordinate RMS: $ra_rms = substr($line,54,4); $dec_rms = substr($line,59,4); # Observatory info: $obs_code = substr($line,64,3); $observatory = substr($line,69,36); $dd = substr($line,108,3); $mm = substr($line,112,2); $ss = substr($line,115,2); $obs_long = sprintf "%8.4f", ($dd + ($mm/60.0) + ($ss/3600.0)); $s = substr($line,120,1); $dd = substr($line,121,2); $mm = substr($line,124,2); $ss = substr($line,127,2); $obs_lat = sprintf "%s%07.4f", $s, ($dd + ($mm/60.0) + ($ss/3600.0)); $dxy = substr($line,131,4); $dz = substr($line,136,4); # Acceptance code and observer: $accept = substr($line,142,1); $observer = substr($line,146,24); # Notes: $note1 = substr($line,173,78); $note2 = substr($line,254,78); # Now we write these out: printf NEW "$utc $julian $ra $dec $ra_rms $dec_rms "; printf NEW "$obs_code $observatory $obs_long $obs_lat $dxy $dz "; printf NEW "$accept $observer $note1 $note2\r\n"; # Next record: } # Done. close(OLD); close(NEW);