Lay out a Cabrillo line the way a .udc file asks for it

`CabrilloString` names a field and a column width in turn. The line it makes
follows N1MM: the operator's callsign in the first 13 columns, then every
column padded to its width with one space after it, and a value longer than its
column cut rather than pushed sideways. The cut is new for every contest, not
just the user-defined ones — the columns are the sponsor's, not ours.

`CabrilloVersion` is read too, so a contest whose sponsor still asks for 2.0
gets it in the header.

A contest that lays out its own line can put the transmitter column where it
wants it, or leave it out, so the writer no longer adds one at the end.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RoGtneMQaz4M9w7Kk49AVD
This commit is contained in:
2026-08-31 10:38:39 +00:00
parent 5ab97251e1
commit cf5bdd6082
7 changed files with 187 additions and 18 deletions

View File

@@ -109,9 +109,17 @@ with the CW and SSB running of the contest.
which takes the value from the call history file. `BonusPoints2`, which reads
the bonus callsigns from a file. `MultiplierBands`, `MultWindowType` and
`QsoErrorString`, which are about the windows rather than the score.
`CabrilloString`, `CabrilloFormat` and `GenericPrintString`, so a contest whose
Cabrillo line is not callsign, report and one exchange value comes out in the
default shape. The session, off-time and band-change settings
`GenericPrintString`, which is the layout of a printed log rather than a
Cabrillo one.
`CabrilloString` and `CabrilloVersion` are read: a contest whose sponsor asks
for its own columns gets them, in N1MM's shape — the operator's callsign in the
first 13 columns, then every column padded to the width the file gives with one
space after it, and a value longer than its column cut rather than pushed. The
numbered `CabrilloFormat` layouts are not read: 2, 3, 4 and 5 name the NAQP,
NA Sprint, Sweepstakes and RFC lines, and a file asking for one of those gets
the default line instead. `CabrilloFormat = 0` means the sponsor takes no
Cabrillo log at all, and nothing here stops the operator writing one. The session, off-time and band-change settings
(`MultipleSessions`, `MinimumOffTime`, the `…BandChange…` family,
`DupeQSOMinutesAgo`) are read by nothing, so a contest with periods is logged
as one long session.