'July 18, 1990: ARRLDXPrt was prepared by George R. Leone, K6SG, a member of
'the River City Contesters, an Amateur Radio Club, and of the Sacramento Amiga
'Computer Club. He assumes no responsibility for any losses incurred by its
'use nor does he assume any responsibility for its upkeep. It is in the
'public domain and may be freely copied and distributed but may NOT be sold.
'This program will print all American Radio Relay League (ARRL) DX Contest
'reports and permits log corrections to be made. Use ARRLDXScrn for reviewing
'reports on screen.
DEFINT a-Z
CLEAR ,75000
WIDTH 80
WIDTH LPRINT 80
DIM q$(1,13) ,qc$(1,13),a$(3000)
PRINT "Before proceeding I need some information: ":PRINT
LOCATE 3,10:INPUT "Your first name ";my.nam$ 'entries personalize reports
my.nam$=UCASE$(my.nam$)
LOCATE 5,10:INPUT "Your call ";my.cal$
my.cal$=UCASE$(my.cal$)
LOCATE 7,10:INPUT "ARRL Section ";my.sect$
my.sect$=UCASE$(my.sect$)
LOCATE 9,10:INPUT "State ";stat$
stat$=UCASE$(stat$)
yrin:
LOCATE 11,10:INPUT "Enter last two digits of contest year";yr$
IF yr$="" THEN GOTO yrin:
mode: LOCATE 9,24:PRINT " "
LOCATE 13,10:INPUT "Enter mode - SSB or CW ";mode$
mode$=UCASE$(mode$)
IF mode$ <> "SSB" AND mode$ <> "CW" THEN GOTO mode
LOCATE 15,10:INPUT "Transmitter power in watts ";pwr%
OPEN "ARRLDX"+yr$+mode$ AS #1 LEN = 70
FIELD #1,11 AS his.cal$,3 AS bnd$,8 AS dayt$,5 AS tyme$,6 AS my.nr$,6 AS his.nr$,5 AS time.prev$,5 AS time.on$,5 AS sign.in$,5 AS sign.out$,5 AS nu.mult$,1 AS poynt$,5 AS nat$
GOSUB clr.ctrs
menu.selection:
CLS
PRINT:PRINT TAB(28);"PRINTING MENU SELECTION"
PRINT:PRINT:PRINT TAB(15);"1. Print Log "
PRINT:PRINT TAB(15);"2. Print Summary Sheet"
PRINT:PRINT TAB(15);"3. Print Dupesheet "
PRINT:PRINT TAB(15);"4. Print Multiplier List"
PRINT:PRINT TAB(15);"5. Print Labels "
PRINT:PRINT TAB(15);"6. Make Log Corrections "
PRINT:PRINT TAB(15);"7. Main Menu "
PRINT:PRINT:INPUT "Pick a number ";pn$
IF pn$ <> "1" AND pn$ <> "2" AND pn$ <> "3" AND pn$ <> "4" AND pn$ <> "5" AND pn$ <> "6" AND pn$ <> "7" THEN GOTO menu.selection
IF pn$="1" THEN GOSUB clr.ctrs:GOTO prints.log.title
IF pn$="2" THEN GOTO Prints.summary.sheet
IF pn$="3" THEN GOSUB menu.first:GOTO prints.dupe.sheet
IF pn$="4" THEN GOSUB menu.first:GOTO prints.mult.list
IF pn$="5" THEN GOTO prints.labels
IF pn$="6" THEN GOTO correct.log
IF pn$="7" THEN CLOSE:CLS:CLEAR:CHAIN "ARRLDXBoot1.0"
prints.log.title:
CLS
LPRINT:LPRINT SPC(23);"ARRL INTERNATIONAL DX COMPETITION"
FIELD #1,11 AS his.cal$,3 AS bnd$,8 AS dayt$,5 AS tyme$,6 AS my.nr$,6 AS his.nr$,5 AS time.prev$,5 AS time.on$,5 AS sign.in$,5 AS sign.out$,5 AS nu.mult$,1 AS poynt$,5 AS nat$
i=0
LOCATE 3,10:INPUT "Do you want to print (I)ndividual or (A)ll labels?"; an$
an$=UCASE$(an$) 'makes entries case blind
IF an$ <> "I" AND an$ <> "A" THEN GOTO prints.labels 'accepts only i or a
IF an$ = "I" THEN GOTO retrieve
IF an$ = "A" THEN GOTO git.by.call
make.labels:
LPRINT
LPRINT "Confirming QSO with ";q$(1,1) 'prints all labels
LPRINT "DATE ";q$(1,3);": UTC ";q$(1,4)
LPRINT "BAND ";q$(1,2);" M ";mo$;":MY NR ";q$(1,5)
LPRINT "TNX UR ARRL DX NR ";q$(1,6)
LPRINT "73, CU NEXT YR. -- ";my.nam$
LPRINT
RETURN
menu.first:
pg=0:x=0 'sets page and qso ctrs to 0
RETURN
make.a.label:
LPRINT 'prints one label
LPRINT "Confirming QSO with ";qc$(1,1)
LPRINT "DATE ";qc$(1,3);": UTC ";qc$(1,4)
LPRINT "BAND ";qc$(1,2);" M ";mo$;":MY NR ";qc$(1,5)
LPRINT "TNX UR ARRL DX NR ";qc$(1,6)
LPRINT "73, CU NEXT YR. -- ";my.nam$
LPRINT
GOTO retrieve
correct.log:
CLS
CLOSE
OPEN "ARRLDX"+yr$+mode$ AS #1 LEN = 70
FIELD #1,11 AS his.cal$,3 AS bnd$,8 AS dayt$,5 AS tyme$,6 AS my.nr$,6 AS his.nr$,5 AS time.prev$,5 AS time.on$,5 AS sign.in$,5 AS sign.out$,5 AS nu.mult$,1 AS poynt$,5 AS nat$
qso.ptr = 0
retrieve:
PRINT SPC(5):INPUT "Enter band or Press (M) for Menu";ans$
ans$=UCASE$(ans$)
IF ans$="M" THEN GOTO menu.selection :ELSE band$=ans$
IF band$ <> "160" THEN band$=band$+" " 'adds space to other bands for matching
INPUT "Retrieve by (C)all or (S)erial Number ";rt$
rt$=UCASE$(rt$)
IF rt$="S" THEN INPUT "Enter serial nr. ";i: GOTO git.by.ptr
INPUT "Enter Call "; cal$
cal$=UCASE$(cal$)
GOTO get.call
git.by.call: 'This array used for getting info
FOR qso.ptr = 1 TO LOF(1)/70 'for printing (A)ll labels
GET #1, qso.ptr
q$(1,1)=his.cal$
q$(1,2)=bnd$
q$(1,3)=dayt$
q$(1,4)=tyme$
q$(1,5)=my.nr$
q$(1,6)=his.nr$
q$(1,11)=nu.mult$
q$(1,12)=poynt$
PTS= PTS+VAL(poynt$) 'adds points of each qso
q$(1,13)=nat$
GOSUB make.labels
IF qso.ptr <> LOF(1)/70 THEN NEXT :ELSE GOSUB finish:GOTO menu.selection
get.call: i=0 :ctr=0
goagn:
FOR i = 1 TO LOF(1)/70
GET #1, i
ctr = INSTR(his.cal$+" "," ") 'eliminates trailing blanks in
q$(1,1) = LEFT$(his.cal$,ctr-1) 'array to permit proper call sign match.
q$(1,2)=bnd$
IF q$(1,2) = band$ AND cal$ = q$(1,1) THEN GOTO git.by.ptr
NEXT
PRINT "Call not found!":BEEP:BEEP:GOTO retrieve
git.by.ptr:
CLS 'This array used for correcting log entry
GET #1, i 'and getting info for printing single labels
qc$(1,1)=his.cal$
qc$(1,2)=bnd$
qc$(1,3)=dayt$
qc$(1,4)=tyme$
qc$(1,5)=my.nr$
qc$(1,6)=his.nr$
qc$(1,7)=time.prev$
qc$(1,8)=time.om$
qc$(1,9)=sign.in$
qc$(1,10) =sign.out$
qc$(1,11)=nu.mult$
IF nu.mult$ = " " THEN multctr=multctr-1
qc$(1,12)=poynt$
PTS= PTS+VAL(poynt$)
qc$(1,13)=nat$
IF an$ = "I" THEN GOTO make.a.label
Correct.entry:
PRINT "Band Date Time Station SENT RCVD NEW Mult PTS"