Get WAE ready: the score split, the Cabrillo layouts and the QTC list

The score summary now splits the way N1MM's does. `ContestLog` keeps a tally
per band, and per kind of row where the contest has kinds, and the score window
reads those instead of adding the rows up itself. Three things were wrong with
the old sum:

- The band rows counted a multiplier as one whatever the band. WAE weights it
  by band — `ScoreRow.AddContact` adds four on 3.5, three on 7 and two on 14,
  21 and 28 — so the band rows did not add up to the total.
- The band rows counted contacts left out of the claimed score.
- There was no split by kind. `CWAE.LogInfo` and `ScoreClass.Description` give
  WAE a `Q/QTC` column and a row per band and kind, so contacts, traffic sent
  and traffic received are read apart.

The Cabrillo writer now pads the record name to seven characters, which is what
`ConvertCabrilloStructStdToString` does and why: `X-QSO:` is six characters and
a space, so every record name puts the frequency in the same column. Nonemm
wrote five, and the `X-QSO:` lines added last commit did not line up with the
rest.

WAE's own layouts follow `CWAE.CabrilloString`: three spaces after the sent
serial rather than the one every other column gets, and the transmitter column
only for a multi-operator entry.

`QtcTraffic.ToSend` no longer offers a contact marked as a dupe, which is what
`DBSupport.QTCRecordsetCount` leaves out with `Trim(ContactType) = ''`.

Checked by running the program against a WAE SSB log of six contacts and a
series of ten received: the band rows read 4, 3, 2 and 2 and add up to the 11
in the total row.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015NZkFxHde1iifAQemFTHxf
This commit is contained in:
2026-09-09 20:25:45 +00:00
co-authored by Claude Opus 5
parent de8edafa0c
commit d4d0375f1f
11 changed files with 181 additions and 37 deletions
+20 -3
View File
@@ -502,6 +502,11 @@ or the same multiplier counts in full. It still goes into the Cabrillo file,
under `X-QSO:` rather than `QSO:` — that is what N1MM writes, and the sponsors
read it as a contact the entrant is not claiming.
Every Cabrillo line starts with its record name padded to seven characters, so
`QSO:`, `QTC:` and `X-QSO:` all put the frequency in the same column. That is
the width N1MM pads it to, and `X-QSO:` is the reason: six characters and one
space.
Correcting the country prefix by hand changes the score. The country file is a
best guess for calls it has no rule for, so what the contact says now wins over
what the file says.
@@ -768,11 +773,23 @@ voice keyer and no digital window, so on those two modes the buttons move the
cursor as they did before. N1MM's RTTY window also has a Send All button that
keys the whole series at once; there is nothing to send it with here.
In a WAE contest the log window has N1MM's **QTC?** column, which holds the
series a QTC row belongs to and is empty for an ordinary contact.
In a WAE contest the log window has N1MM's two columns, whose names do not read
the way they sound: **Series** says whether the row is a contact or traffic —
`QSO`, `SQTC` or `RQTC` — and **QTC?** holds the series a QTC row belongs to,
such as `3/10`.
The score summary splits the same way N1MM's does: contacts, traffic sent and
traffic received get a row each on every band, under a **Q/QTC** column, and a
band row carries that band's weight, so 80 metres reads 4 for one multiplier.
The band rows add up to the total.
The scoring was checked against six real WAE logs, and agrees with N1MM on
points and on weighted multipliers to the contact.
points and on weighted multipliers to the contact. The Cabrillo layouts are
N1MM's, from `CWAE.CabrilloString`: a contact leaves three spaces after the sent
serial rather than the one every other column gets, a QTC line is written as a
`QTC:` record carrying the receiver, the series, the sender and then the time,
callsign and serial number being reported, and the transmitter column is written
only for a multi-operator entry.
### Band edges