[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

}