[CCF] TR-to-Cabrillo QSO-datakonvertteri

Jari Perkiömäki jpe@UWasa.Fi
Sun, 5 Jan 2003 11:21:13 +0200 (EET)


Terve,

alla GAWK (GNU Awk)-ohjelmalla toimiva QSO-datakonvertteri TR:n
NRAU-lokiformaatista ehdotettuun Cabrillo-QSO-dataformaattiin. Toimii myös
TR:llä lokattuihin Kalakukkoon ja Viitosten Syysotteluun.

GAWK löytyy ainakin Linuxista ja ehkä muistakin käyttöjärjestelmistä.

Käyttö on muotoa:

gawk -f nrau.awk mycall myprovince mylog

mycall     = kilpailussa käytetty kutsu
myprovince = kilpailussa annettu maakuntalyhenne
mylog      = TR-lokin nimi

eli esimerkiksi:

gawk -f nrau.awk oh6bg po log.dat

Esimerkki (HUOM! Ohjelma käsittelee todellakin vain QSO-DATAN!)
---------------------------------------------------------------

TR-LOKI

 80CW  05-Jan-03 10:39    4  OH6QU          599  599   90  Po       Po       2
 80SSB 05-Jan-03 10:40    5  OH7C           59   59   100  Km       Km       2
 40SSB 05-Jan-03 10:40    6  OH7C           59   59    99  Km       Km       2
 40SSB 05-Jan-03 10:40    7  OH3O           59   59   999  Pm       Pm       2
 40CW  05-Jan-03 10:41    8  OH3Y           599  599    0  Rk       Rk       2
 40CW  05-Jan-03 10:41    9  OH6GDX         599  599  111  Po       Po       2
 40CW  05-Jan-03 10:41   10  OH6QU          599  599  888  Po                2

MUUNNOKSEN JÄLKEEN

QSO: 3500 CW 2003-01-05 1039 OH6BG          599 004 PO OH6QU          599 090 PO
QSO: 3500 PH 2003-01-05 1040 OH6BG          59  005 PO OH7C           59  100 KM
QSO: 7000 PH 2003-01-05 1040 OH6BG          59  006 PO OH7C           59  099 KM
QSO: 7000 PH 2003-01-05 1040 OH6BG          59  007 PO OH3O           59  999 PM
QSO: 7000 CW 2003-01-05 1041 OH6BG          599 008 PO OH3Y           599 000 RK
QSO: 7000 CW 2003-01-05 1041 OH6BG          599 009 PO OH6GDX         599 111 PO
QSO: 7000 CW 2003-01-05 1041 OH6BG          599 010 PO OH6QU          599 888 PO


Ja tässä ohjelma. Kuten kaikki nykypäivän ohjelmat, tämä ohjelma ei
varmasti ole virheetön (tämä ei ole myöskään kovin esteettinen :)).
Käyttö on käyttäjän vastuulla. Mikäli löydätte isomman tai pienemmän
virheen ohjelmasta, ottanette yhteyttä.

Nyt kun joku vielä koodaisi hienon www-käyttöliittymän tähän päälle :)

# nrau.awk
#
# Quick-n-dirty TR to NRAU Cabrillo QSO data converter
# Suitable also for Kalakukko and Viitosten Syysottelu
#
# NOTE! At the moment, NRAU does not accept Cabrillo! See their rules.
#
# by Jari Perkiömäki OH6BG, oh6bg@sral.fi, 5 January 2003
#
# Usage: gawk -f nrau.awk mycall myprovince mylog
#   e.g. gawk -f nrau.awk oh6bg po log.dat
#

BEGIN {

# checking command line arguments

  if (ARGC > 1) {

    if (ARGC > 2) {

      CALL = ARGV[1]
      P    = ARGV[2]
      FILE = ARGV[3]
      delete ARGV[1]
      delete ARGV[2]

        }

    else {
      print "Usage: gawk -f nrau.awk mycall myprovince mylog"
      exit 1
    }

  }
}

{

  # 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 RST
  if (length($6) == 2) { $6 = $6 " " }
  if (length($7) == 2) { $7 = $7 " " }

  # processing sent and received serial numbers with preceding zeros
  if (length($4) == 1) { $4 = "00" $4 }
  if (length($4) == 2) { $4 = "0"  $4 }

  if (length($8) == 1) { $8 = "00" $8 }
  if (length($8) == 2) { $8 = "0"  $8 }

  $4 = " " $4
  $8 = " " $8

  # province sent and received
  p  = " " toupper(P)
  $9 = " " toupper($9)

  # print QSO lines
  print "QSO:" band mode $2 $3 mycall $6 $4 p ucall $7 $8 $9

}