[CCF] TR to Joulu ja K.S. Sainio
Jari Perkiömäki
jpe@UWasa.Fi
Sun, 5 Jan 2003 14:17:46 +0200 (EET)
Alla GAWK (GNU Awk)-ohjelmalla toimiva QSO-datakonvertteri TR:n
lokiformaatista ehdotettuun Cabrillo-QSO-dataformaattiin Joulukilpailun ja
K.S. Sainion osalta.
Mistä GAWK? Ks. esim. http://www.4awk.com/awk-pc.htm
En ole tarkistanut, kuinka hyvin GAWK toimii PC:ssä.
ESIMERKKI TR-LOKISTA (log.dat)
80CW 26-Dec-02 11:01 1 OH6QU 599 599 682 glögi 10
80CW 26-Dec-02 11:02 2 OH6GDX 599 599 682 dxhai 10
80SSB 26-Dec-02 11:02 3 OH3O 59 59 300 rytty 10
40CW 26-Dec-02 11:03 4 OH7I 599 599 700 röppö 10
Komentorivi on muotoa:
gawk -f joulu.awk mycall mymsg myohc mylog
missä
mycall = kilpailussa käytetty kutsumerkki
mymsg = ensimmäisessä QSO:ssa annettu viisikirjaiminen kiertosana
myohc = kilpailussa annettu kuntanumero
mylog = TR-lokin nimi
Tehdään muunnos seuraavalla komentorivillä:
gawk -f joulu.awk oh6bg tuuli 682 log.dat
Ja tulokseksi saadaan seuraavaa Cabrillo-muotoista QSO-dataa:
MUUNNOKSEN JÄLKEINEN LOKI
QSO: 3500 CW 2002-12-26 1101 OH6BG 599 682 TUULI OH6QU 599 682 GLöGI
QSO: 3500 CW 2002-12-26 1102 OH6BG 599 682 GLöGI OH6GDX 599 682 DXHAI
QSO: 3500 PH 2002-12-26 1102 OH6BG 59 682 DXHAI OH3O 59 300 RYTTY
QSO: 7000 CW 2002-12-26 1103 OH6BG 599 682 RYTTY OH7I 599 700 RöPPö
Alla muunnosskripti. Käyttö käyttäjän omalla vastuulla.
# joulu.awk
#
# Quick-n-dirty TR to Joulukilpailu and K.S. Sainio
# Cabrillo QSO data converter
#
# by Jari Perkiömäki OH6BG, oh6bg@sral.fi, 5 January 2003
#
# Usage: gawk -f joulu.awk mycall mymsg myohc mylog
# e.g. gawk -f joulu.awk oh6bg vaasa 682 log.dat
#
BEGIN {
# checking command line
if (ARGC > 4) {
CALL = ARGV[1]
W = ARGV[2]
O = ARGV[3]
FILE = ARGV[4]
delete ARGV[1]
delete ARGV[2]
delete ARGV[3]
}
else {
print "Usage: gawk -f joulu.awk mycall mymsg myohc mylog"
exit 1
}
w = " " toupper(W)
}
{
# processing time from XX:YY to XXYY
gsub(/:/,"")
$3 = " " $3
# processing date: reorganising
d = substr($2,1,2)
m = substr($2,4,3)
y = substr($2,8)
if (m == "Jan") m = "01"
if (m == "Feb") m = "02"
if (m == "Mar") m = "03"
if (m == "Apr") m = "04"
if (m == "May") m = "05"
if (m == "Jun") m = "06"
if (m == "Jul") m = "07"
if (m == "Aug") m = "08"
if (m == "Sep") m = "09"
if (m == "Oct") m = "10"
if (m == "Nov") m = "11"
if (m == "Dec") m = "12"
$2 = " " "20" y "-" m "-" d
# processing right lengths for the callsigns
u = substr(" ",length($5))
m = substr(" ",length(CALL))
ucall = " " toupper($5) u " "
mycall = " " toupper(CALL) m " "
# translating bands to frequencies
band = substr($1,1,2)
mode = substr($1,3)
if (band == 80) { band = 3500 }
if (band == 40) { band = 7000 }
if (mode == "SSB") { mode = "PH"}
band = " " band
mode = " " mode
# processing signal report
if (length($6) == 2) { $6 = $6 " " }
if (length($7) == 2) { $7 = $7 " " }
# processing county numbers
$4 = " " O
$8 = " " $8
# msg received
$9 = " " toupper($9)
# print QSO lines
print "QSO:" band mode $2 $3 mycall $6 $4 w ucall $7 $8 $9
# assign last msg received to our next msg sent
w = $9
}