070 Award Checker

This is a log checker for endorsements for 070 Club Members. The intent is provide an easy guide for which endorsements are close to or have been earned.
This is not an official checker, and may not be accurate; Please consult the award rules and the award manager.

Instructions

  1. Upload a ADIF (.adi) file (faster if only PSK31 qsos).
  2. Hit "Refresh" every minute or so ... Depending on the log it make take a few minutes to process (my 500 qso log takes ~30 sec).
    A "View Report" link will appear when it's done.
  3. Check out the report!

Please email David Westbrook - KJ4IZW with any comments/questions/issues. Thanks for giving this a try, and good luck on your 070 endorsements!

Callsign:     
ADIF File:




ADIF FIELDS
FieldUsageAlternative Fields
call Required
band Required freq
mode Required
qso_date Required
time_on Required
dxcc All Country-specific awards app_dxkeeper_dxccprefix
state All state/provice/territory-specific awards arrl_sect, ve_prov
cont WAC
gridsquare PSK Golf
tx_pwr QRP Tri-Band
rx_pwr QRP Tri-Band
time_off Ragchewers


Note: The QCWA and 88 Tri-Band checks are also approximations, and don't take into account membership dates (and the QCWA and YL callsign lists I have may be outdated).

Note: For LONP, please use the excellent LONP Checker.
LONP Checker.

Note: I will do nothing else with the uploaded files other than generate the report. For the moment I am retaining a copy solely for debugging purposes, so I have examples of different types of files/qsos. I will delete them when finished.


CHANGELOG
2010-07-21
	* Much improved support for incremental endorsements
	  (Golf, SouthAmerica)

2010-06-29
	* Added new South American PSK31 endorsement

2010-06-25
	* Fixed WARC checks for unique calls 

2010-06-23
	* Benelux -- added 12/31/2010 expiration
	* Added new Baltic States endorsement

2010-04-19
	* Added Statistics page
	* Added Trophy room
	* Added links to trophies, statistics, standings
	* autocommit when adding to db

2010-04-13
	* Show endorsements as confirmed even if qso's aren't met.
	  For case of missing adif cols (e.g. state in DigiPan)
	* Updated standings to 4/13
	* On standings page, ignore portable call area
	  (e.g. count N6YIH and N6YIH/7 as the same)
	* Report layout -- now 3 cols for:
	    completed, in-progress, not started

2010-04-09
	* Support for the Standings page -- now indicates which
	  endorsements are confirmed (i.e. are posted on the
	  Standings page).
	* Added QRP endorsement.
	* Added W0PE, AG4CZ to list of valid QCWA contacts.
	* Added PB7XYL, PS7YL to list of valid YL contacts.

2010-03-27
	* Support for hide_reqs_for_not_started ... to clean
	  up display of the "red" awards (no qsos yet).

2010-03-25
	* Report layout change -- show partial-progress awards
	  in separate column from completed/not-started ones.

2010-03-24
	* More memory/perforance updates. Tested w/large (8000+) logs.

2010-03-18
	* REFACTORED for performance and memory footprint.
		==> Should be ~10x faster.
		Now uses sqlite (with indexes) instead of un-indexed
		in-memory tables.
	* support for 'BPSK31' and 'QPSK31' modes.
	* Added 'Ragchewers 3/30' award.
		Needs 'time_off' ADIF column. (calculate length_min)
	* Added grid to log info for PSK Golf.

2010-03-10
	* Ability to toggle on/off the list of QSO log info for each award.

2010-03-09
	* In data file (070.inc), add group attributes to data structure,
	  including first-pass filter to apply to all checks.
	* Removed 2009DX-SP, 2009DX-CT, and IOTA20_2009 award checks
	* Removed BARTG check
	* Added QRP Tri-Band check
	* Updated lables (e.g. country names)
	* Show only columns needed for submission.
		Default is: date, time, station worked and band.
		e.g. WAC now also shows continent.
	* qsodate sort order bugfix
	* award order now by last update (instead of completed ones first)
	* show qso info of incomplete awards in certain cases (e.g. QCWA)
	* No longer fatal error if DXCC is missing.
		just won't get progress for most awards.
		e.g. log from ADIFMaster can still see WARC progress.
	* Calculate band from freq if band is missing (e.g. from ADIFMaster)
	* Updated text/info.
	* state sort order  (by abrev instead of name)

2010-01-19
	* Updated WALC requirements to enforce >= 3/19/2009
	* If state (and ve_prov for VE) is missing,
		use arrl_sect for state (needed for HRD).

2010-01-13
	* Initial release


Methodology
  • Input a ADIF file. I wanted to use the standard format, to support as many logging programs as possible.
  • Parse the ADIF into data structures in memory. Currently doing this w/regular expressions in perl. (eventually i'll break that out to a ADIF-parsing perl module)
  • Create a database table of the data, so that SQL can be used to query it. Currenty using DBD::AnyData to create an in-memory table. The table schema includes these ADIF columns:
    	call
    	band
    	freq
    	mode
    	qso_date
    	time_on
    
    	dxcc
    	state
    	iota
    	cont
    	gridsquare
    	pfx
    	ve_prov
    
    And these columns are calculated:
    	grid2
    	grid4
    	dxccprefix
    	spc
    	sfx
    
  • Read in config file that includes SQL::Abstract filter 'where clause' definitions. For example:
      {
        award => 'WALC-NA',
        filter => { mode => 'PSK31' },
        checks => [
            { ct => 1, label => 'CA', where => { dxccprefix => 'K', state => 'CA' } },
            { ct => 1, label => 'OR', where => { dxccprefix => 'K', state => 'OR' } },
            { ct => 1, label => 'WA', where => { dxccprefix => 'K', state => 'WA' } },
            { ct => 1, label => 'BC', where => { dxccprefix => 'VE', state => 'BC' } },
            { ct => 1, label => 'AK', where => { dxccprefix => 'KL7' } },
        ],
      },
    
  • Create & execute SQL statements that check the requirements.
  • Report the results in HTML format.
Source code available on request (i'll post it all when it's more stable).

Available Reports

Trophy Room | Statistics | Standings



Callsign QSOs Timestamp ADIF Logger
VE3OIJ 2900 Thu Sep 2 22:06:09 EDT 2010 2 eQSL.cc DownloadADIF
KF5ATN 355 Wed Sep 1 09:47:19 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2636
N3PPH 2032 Tue Aug 31 22:12:39 EDT 2010 2.00 DXKeeper 8.8.9
N8MNI 8674 Tue Aug 31 21:08:01 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2636
W6QE 8306 Tue Aug 31 15:10:24 EDT 2010 Amateur Contact Log 3.0
W0GLB 6059 Tue Aug 31 08:49:26 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2636
N9VEL 832 Tue Aug 31 08:13:30 EDT 2010 2.00 DXKeeper 8.8.9
W5KAM 65 Mon Aug 30 12:07:01 EDT 2010 MixW v 2.0
N8MNI_2 3 Mon Aug 30 11:11:51 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2636
CO8CML 1178 Mon Aug 30 09:49:15 EDT 2010 All records. Generated with VQLog 3.0B by EA6VQ (WWW.VQLOG.COM)
VA7HZ 1653 Sun Aug 29 20:19:55 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2636
K7PWL 5238 Sun Aug 29 16:58:01 EDT 2010 2.00 DXKeeper 8.7.9
KI3F 797 Sat Aug 28 21:48:43 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2636
AG4QX 2400 Sat Aug 28 15:28:40 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2636
EB3JT 16110 Sat Aug 28 02:10:22 EDT 2010 Summary of QSO. Generated with VQLog 3.1 by EA6VQ (WWW.VQLOG.COM)
WA3WZR 1667 Fri Aug 27 07:27:20 EDT 2010 Amateur Contact Log 3.0
N4ST 1124 Thu Aug 26 22:03:18 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2636
AD5ZA 4512 Tue Aug 24 21:15:33 EDT 2010 Amateur Contact Log 3.0
K0ABC 4072 Tue Aug 24 14:57:42 EDT 2010 2.00 DXKeeper 8.8.8
M5PLY 6669 Tue Aug 24 14:50:46 EDT 2010 MixW v 2.0
WT6X 6113 Tue Aug 24 04:32:11 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2636
AB3S 3113 Mon Aug 23 23:33:22 EDT 2010 2.2.3 fldigi 3.20.20
KJ4IZW 890 Mon Aug 23 18:04:14 EDT 2010 2.00 DXKeeper 8.8.8
K7EV 4229 Mon Aug 23 14:07:35 EDT 2010 2.00 DXKeeper 8.8.8
AG4CZ 2060 Sun Aug 22 19:00:19 EDT 2010 XMLog 6.19
KI4BIY 3904 Fri Aug 20 22:51:35 EDT 2010 Amateur Contact Log 3.0
W4MPS 1663 Fri Aug 20 09:55:58 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2494
KC7VLO 286 Thu Aug 12 03:58:12 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2614
K4OP 2309 Tue Aug 10 23:11:39 EDT 2010 Amateur Contact Log 3.0
K8TOM 2493 Tue Aug 10 17:34:35 EDT 2010 Amateur Contact Log 3.0
ON3AD 4366 Sun Aug 8 09:41:03 EDT 2010 2.00 DXKeeper 8.8.5
W3SW 415 Sun Aug 1 21:52:20 EDT 2010 DigiPan v 1.6 log file exported to ADIF
WS3SW 365 Sun Aug 1 21:38:20 EDT 2010 DigiPan v 1.6 log file exported to ADIF
N5PU 1890 Fri Jul 30 07:39:29 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2494
KJ7HQ 577 Wed Jul 28 00:24:42 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2636
HC6EP 197 Mon Jul 26 20:37:27 EDT 2010 2.2.3 fldigi 3.12.5
K2AFY 470 Sun Jul 25 22:59:40 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2321
W0PE error 1312 Sat Jul 24 09:29:07 EDT 2010
WB1W 1789 Wed Jul 14 19:26:05 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2630
G7OGX 3211 Tue Jul 13 10:12:13 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2494
WA4EEZ 4190 Tue Jul 13 09:48:29 EDT 2010 2.16 ProLogV7 (V7.04) September 19, 2009
KU1T 8060 Sun Jul 11 16:47:39 EDT 2010 DXKeeper 8.7.9
ND2K 1627 Thu Jul 8 20:42:09 EDT 2010 2.0 HamRadioDeluxe Version 4.1 build 2321
AB8XG 402 Thu Jul 8 01:54:46 EDT 2010 2.0 HamRadioDeluxe Version 4.0 SP4 build 1901
_W6QE 8144 Tue Jul 6 01:36:53 EDT 2010 Amateur Contact Log 3.0
AE7AB 403 Sun Jul 4 04:26:31 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2610
VE3YXO 3564 Sun Jul 4 01:00:40 EDT 2010 MixW v 2.0
W7PSK 3139 Sat Jul 3 10:38:59 EDT 2010 DXKeeper 8.7.9
SV2FLQ 12940 Fri Jul 2 17:39:31 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2494
WA5ZUJ 4313 Wed Jun 30 09:04:16 EDT 2010 Amateur Contact Log 3.0
SM7HZK 229 Tue Jun 29 16:35:21 EDT 2010 MixW v2 log file exported to ADIF
K1GMD 3620 Sun Jun 27 17:56:44 EDT 2010 Amateur Contact Log 3.0
KZ3T 100 Sat Jun 26 15:23:14 EDT 2010 ADIF Export from PSK Express Version 1.2.4.5
YO2LDK 1863 Fri Jun 25 12:19:23 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2494
KC2GIK Not ADIF 0 Wed Jun 23 17:32:03 EDT 2010
NO8R 18340 Wed Jun 23 14:39:25 EDT 2010 Amateur Contact Log 3.0
VE3MCF 368 Mon Jun 21 09:40:39 EDT 2010 DXKeeper
W1IPS 1073 Mon Jun 21 07:36:37 EDT 2010 DXKeeper 8.7.9
G6OKU 1294 Sun Jun 20 05:55:40 EDT 2010 MixW v 2.0
WD8KRV 793 Fri Jun 18 22:47:30 EDT 2010 fldigi 3.12.5
KC9IIS 686 Tue Jun 8 20:10:31 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2321
WF7T 583 Sun Jun 6 01:41:14 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2494
K6MKF 3606 Sat Jun 5 18:19:54 EDT 2010 Amateur Contact Log 3.0
KC8KCU 147 Sat Jun 5 10:35:16 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2494
KE9PH 4361 Fri Jun 4 20:11:11 EDT 2010 MixW v 2.0
KC0DEB 11751 Thu Jun 3 17:52:11 EDT 2010 ID_WINLOG32
N7UVH 10565 Tue Jun 1 00:21:43 EDT 2010 MixW v 2.0
AI4ZL 755 Mon May 31 23:23:43 EDT 2010 2.0 HamRadioDeluxe Version 4.1 build 2321
K0SU 827 Mon May 31 11:59:40 EDT 2010 MixW v 2.0
KB1PSP 2307 Mon May 31 10:34:31 EDT 2010 MixW v2 log file exported to ADIF
N6PZ 315 Mon May 31 08:49:09 EDT 2010 DXKeeper
N2GWK 2934 Mon May 31 08:24:12 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2434
N7IYT 472 Mon May 31 00:29:09 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2494
K0ACP 473 Mon May 31 00:17:44 EDT 2010 MacLoggerDX 5.27
KG6MZS 3924 Sun May 30 23:50:44 EDT 2010 2.0 HamRadioDeluxe Version 4.1 build 2321
N0NM 2642 Sun May 30 23:02:38 EDT 2010 DXKeeper
KO4PU 2988 Sun May 30 21:31:32 EDT 2010 MixW v 2.0
KX8C 1768 Sun May 30 21:28:47 EDT 2010 Amateur Contact Log 3.0
VK3AMA 5683 Sun May 30 21:28:40 EDT 2010 DXKeeper
N3JWJ 1634 Sun May 30 11:06:57 EDT 2010 DXKeeper
SV4FFL 3551 Mon May 24 18:05:56 EDT 2010 MixW v2 log file exported to ADIF
AE5PW 7286 Sat May 15 17:06:36 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2494
OK1WCF 6409 Thu May 13 05:46:25 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2494
KE5AQD 7081 Thu May 6 09:38:24 EDT 2010 jLog
N9BUB 3536 Thu Apr 22 07:29:28 EDT 2010 MixW v2 log file exported to ADIF
WB4MNK 51 Tue Apr 20 16:25:04 EDT 2010 DXKeeper
AI4OF 1769 Tue Apr 20 08:53:56 EDT 2010 2.2 HamRadioDeluxe Version 5.0 build 2494
N7QU 5074 Tue Apr 20 07:29:43 EDT 2010 MixW v2 log file exported to ADIF
LU2VC 1127 Mon Apr 19 14:46:58 EDT 2010 MixW v 2.0
N6YIH 2232 Mon Apr 12 21:18:48 EDT 2010 DigiPan v 1.6 log file exported to ADIF