home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 3 / hamradioversion3.0examsandprograms1992.iso / log / log3_52a / logstat.prg < prev    next >
Text File  |  1990-05-04  |  12KB  |  463 lines

  1. *:*********************************************************************
  2. *:
  3. *:        Program: LOGSTAT.PRG
  4. *:
  5. *:         System: PC-HAM Logbook
  6. *:         Author: Joe Kasser G3ZCZ
  7. *:      Copyright (c) 1990, Joe Kasser
  8. *:  Last modified: 11/20/87      1:08
  9. *:
  10. *:      Called by: LOGFUNCT.PRG                  
  11. *:
  12. *:           Uses: &LOGBOOK.DBF
  13. *:
  14. *:      Documented 05/04/90 at 13:49                SNAP!  version 3.12f
  15. *:*********************************************************************
  16. * GENERATES STATISTICS ABOUT CONTACTS
  17.  
  18. STORE 0 TO qslex
  19. STORE 0 TO qslrxcount
  20. STORE 0 TO qsltxcount
  21. STORE 0 TO qslowed
  22. STORE 0 TO qsldirect
  23. STORE 0 TO qslbureau
  24. STORE 0 TO qslmngr
  25. STORE 0 TO qsonumber
  26. STORE 0 TO six
  27. STORE 0 TO ten
  28. STORE 0 TO fifteen
  29. STORE 0 TO twenty
  30. STORE 0 TO forty
  31. STORE 0 TO eighty
  32. STORE 0 TO onesixty
  33. STORE 0 TO thirty
  34. STORE 0 TO twentyfour
  35. STORE 0 TO seventeen
  36. STORE 0 TO modesstv
  37. STORE 0 TO two
  38. STORE 0 TO whatisit
  39. STORE 0 TO modessb
  40. STORE 0 TO modecw
  41. STORE 0 TO modertty
  42. STORE 0 TO modefm
  43. STORE 0 TO modea
  44. STORE 0 TO modeb
  45. STORE 0 TO modej
  46. STORE .t. TO joe
  47. STORE 0 TO modeamtor
  48. STORE 0 TO modepacket
  49.  
  50. DO WHILE joe
  51.    IF joe
  52.       USE &logbook
  53.       GOTO BOTTOM
  54.       STORE RECNO() TO lastqso
  55.       CLEAR
  56.       SET COLOR TO W+/R,W+/RB,BG+
  57.       @ 1,20 SAY 'G3ZCZ LOG SUMMARY PROGRAM Version 1.3'
  58.       SET COLOR TO GR+/B,W+/RB,BG+
  59.       @ 4,1 SAY 'QSL SUMMARY'
  60.       @ 5,1 SAY '--------------------------------'
  61.       @ 6,1 SAY 'TOTAL NUMBER OF CONTACTS'
  62.       SET COLOR TO W+/R,W+/RB,BG+
  63.       @ 2,30 SAY lastqso
  64.       SET COLOR TO GR+/B,W+/RB,BG+
  65.  
  66.       @ 2,41 SAY 'ENTRIES IN LOG FILE '
  67.       SET COLOR TO W+/R,W+/RB,BG+
  68.  
  69.       ?? TRIM(logbook)
  70.       SET COLOR TO GR+/B,W+/RB,BG+
  71.       @ 7,1 SAY 'QSL CARDS SENT DIRECT'
  72.       @ 8,1 SAY 'QSL CARDS SENT VIA BUREAU'
  73.       @ 9,1 SAY 'QSL CARDS SENT VIA MANAGERS '
  74.       @ 10,1 SAY 'QSL CARDS SENT '
  75.       @ 11,1 SAY 'QSL CARDS RECEIVED'
  76.       @ 12,1 SAY 'QSL CARDS OWED'
  77.       @ 13,1 SAY 'QSL CARDS EXCHANGED'
  78.       @ 4,40 SAY 'SUMMARY OF ENTRIES BY BAND'
  79.       @ 5,40 SAY '----------------------------------------'
  80.       @ 6,40 SAY '10  METERS'
  81.       @ 7,40 SAY '12  METERS'
  82.       @ 8,40 SAY '15  METERS'
  83.       @ 9,40 SAY '17  METERS'
  84.       @ 10,40 SAY '20  METERS'
  85.       @ 11,40 SAY '30  METERS'
  86.       @ 12,40 SAY '40  METERS'
  87.       @ 13,40 SAY '80  METERS'
  88.       @ 14,40 SAY '160 METERS'
  89.       @ 15,40 SAY ' 6  METERS'
  90.       @ 16,40 SAY ' 2  METERS'
  91.       @ 17,40 SAY 'OSCAR MODE A'
  92.       @ 18,40 SAY 'OSCAR MODE B '
  93.       @ 19,40 SAY 'OSCAR MODE J'
  94.       @ 20,40 SAY 'OTHERS'
  95.  
  96.       @ 15,1 SAY 'REPORT BY MODES'
  97.       @ 16,1 SAY '----------------------------'
  98.       @ 17,1 SAY 'SSB CONTACTS'
  99.       @ 18,1 SAY 'CW CONTACTS'
  100.       @ 19,1 SAY 'RTTY CONTACTS'
  101.       @ 20,1 SAY 'FM CONTACTS'
  102.       @ 21,1 SAY 'SSTV CONTACTS'
  103.       @ 22,1 SAY 'AMTOR CONTACTS'
  104.       @ 23,1 SAY 'PACKET CONTACTS'
  105.  
  106.       SET COLOR TO W+/R,W+/RB,BG+
  107.       IF qsltxcount = 0
  108.       ELSE
  109.          @ 10,27 SAY qsltxcount
  110.       ENDIF
  111.       IF qslbureau = 0
  112.       ELSE
  113.          @ 8,27 SAY qslbureau
  114.       ENDIF
  115.       IF qsldirect = 0
  116.       ELSE
  117.          @ 7,27 SAY qsldirect
  118.       ENDIF
  119.       IF qslmngr = 0
  120.       ELSE
  121.          @ 9,27 SAY qslmngr
  122.       ENDIF
  123.       IF qslrxcount = 0
  124.       ELSE
  125.          @ 11,27 SAY qslrxcount
  126.       ENDIF
  127.       IF qslowed = 0
  128.       ELSE
  129.          @ 12,27 SAY qslowed
  130.       ENDIF
  131.       IF qslex = 0
  132.       ELSE
  133.          @ 13,27 SAY qslex
  134.       ENDIF
  135.       IF ten = 0
  136.       ELSE
  137.          @ 6,60 SAY ten
  138.       ENDIF
  139.       IF fifteen = 0
  140.       ELSE
  141.          @ 8,60 SAY fifteen
  142.       ENDIF
  143.       IF twenty = 0
  144.       ELSE
  145.          @ 10,60 SAY twenty
  146.       ENDIF
  147.       IF forty = 0
  148.       ELSE
  149.          @ 12,60 SAY forty
  150.       ENDIF
  151.       IF eighty = 0
  152.       ELSE
  153.          @ 13,60 SAY eighty
  154.       ENDIF
  155.       IF onesixty = 0
  156.       ELSE
  157.          @ 14,60 SAY onesixty
  158.       ENDIF
  159.       IF two = 0
  160.       ELSE
  161.          @ 16,60 SAY two
  162.       ENDIF
  163.       IF six = 0
  164.       ELSE
  165.          @ 15,60 SAY six
  166.       ENDIF
  167.       IF twentyfour = 0
  168.       ELSE
  169.          @  7,60 SAY twentyfour
  170.       ENDIF
  171.       IF seventeen = 0
  172.       ELSE
  173.          @ 9,60 SAY seventeen
  174.       ENDIF
  175.       IF thirty = 0
  176.       ELSE
  177.          @ 11,60 SAY thirty
  178.       ENDIF
  179.       IF modea = 0
  180.       ELSE
  181.          @ 17,60 SAY modea
  182.       ENDIF
  183.       IF modeb = 0
  184.       ELSE
  185.          @ 18,60 SAY modeb
  186.       ENDIF
  187.       IF modej = 0
  188.       ELSE
  189.          @ 19,60 SAY modej
  190.       ENDIF
  191.       IF whatisit  = 0
  192.       ELSE
  193.          @ 20,60 SAY whatisit
  194.       ENDIF
  195.       IF modessb = 0
  196.       ELSE
  197.          @ 17,21 SAY modessb
  198.       ENDIF
  199.       IF modecw = 0
  200.       ELSE
  201.          @ 18,21 SAY modecw
  202.       ENDIF
  203.       IF modertty = 0
  204.       ELSE
  205.          @ 19,21 SAY modertty
  206.       ENDIF
  207.       IF modefm = 0
  208.       ELSE
  209.          @ 20,21 SAY modefm
  210.       ENDIF
  211.       IF modesstv = 0
  212.       ELSE
  213.          @ 21,21 SAY modesstv
  214.       ENDIF
  215.       IF modeamtor = 0
  216.       ELSE
  217.          @ 22,21 SAY modemtor
  218.       ENDIF
  219.       IF modepacket = 0
  220.       ELSE
  221.          @ 23,21 SAY modepacket
  222.       ENDIF
  223.       GOTO TOP
  224.       DO WHILE .not. EOF()
  225.       SET COLOR TO RG+/R,W+/RB,BG+
  226.  
  227.          @ 2,1  SAY CALL
  228.          @ 2,12 SAY DATE
  229.          @ 2,22 SAY TIME
  230.       SET COLOR TO W+/R,W+/RB,BG+
  231.  
  232.          * don't count contest title entries
  233.          IF SUBSTR(CALL,1,1) = '-'
  234.          ELSE
  235.             STORE qsonumber + 1 TO qsonumber
  236.             @ 6,27 SAY qsonumber
  237.             IF qslsent = '-'  .or. qslsent = 'X' .or. qslsent =  'N'
  238.             ELSE
  239.                STORE qsltxcount + 1 TO qsltxcount
  240.                @ 10,27 SAY qsltxcount
  241.             ENDIF
  242.             
  243.             IF qslrx = '-'
  244.                * sum cards owed only
  245.                IF qslsent = 'B'
  246.                   STORE qslbureau + 1 TO qslbureau
  247.                   @ 8,27 SAY qslbureau
  248.                ENDIF
  249.                IF qslsent = 'D'
  250.                   STORE qsldirect + 1 TO qsldirect
  251.                   @ 7,27 SAY qsldirect
  252.                ENDIF
  253.                IF qslsent = 'M'
  254.                   STORE qslmngr + 1 TO qslmngr
  255.                   @ 9,27 SAY qslmngr
  256.                ENDIF
  257.             ELSE
  258.                STORE qslrxcount + 1 TO qslrxcount
  259.                @ 11,27 SAY qslrxcount
  260.                IF qslsent = '-'
  261.                   STORE qslowed + 1 TO qslowed
  262.                   @ 12,27 SAY qslowed
  263.                ELSE
  264.                   STORE qslex + 1 TO qslex
  265.                   @ 13,27 SAY qslex
  266.                ENDIF
  267.             ENDIF
  268.             
  269.             DO CASE
  270.                
  271.             CASE band = '10'
  272.                STORE ten + 1 TO ten
  273.                @ 6,60 SAY ten
  274.                
  275.             CASE band = '15'
  276.                STORE fifteen + 1 TO fifteen
  277.                @ 8,60 SAY fifteen
  278.                
  279.             CASE band = '20'
  280.                STORE twenty + 1 TO twenty
  281.                @ 10,60 SAY twenty
  282.                
  283.             CASE band = '40'
  284.                STORE forty + 1 TO forty
  285.                @ 12,60 SAY forty
  286.                
  287.             CASE band = '75'
  288.                STORE eighty + 1 TO eighty
  289.                @ 13,60 SAY eighty
  290.                * 75 and 80 Meters are part of same band
  291.                
  292.             CASE band = '80'
  293.                STORE eighty + 1 TO eighty
  294.                @ 13,60 SAY eighty
  295.                
  296.             CASE band = '160'
  297.                STORE onesixty + 1 TO onesixty
  298.                @ 14,60 SAY onesixty
  299.  
  300.             CASE band = '2'
  301.                STORE two + 1 TO two
  302.                @ 16,60 SAY two
  303.                
  304.             CASE band = '6'
  305.                STORE six + 1 TO six
  306.                @ 15,60 SAY six
  307.                
  308.             CASE band = '12'
  309.                STORE twentyfour + 1 TO twentyfour
  310.                @  7,60 SAY twentyfour
  311.                
  312.             CASE band = '17'
  313.                STORE seventeen + 1 TO seventeen
  314.                @ 9,60 SAY seventeen
  315.                
  316.             CASE band = '30'
  317.                STORE thirty + 1 TO thirty
  318.                @ 11,60 SAY thirty
  319.                
  320.             CASE band = 'A'
  321.                STORE modea + 1 TO modea
  322.                @ 17,60 SAY modea
  323.                
  324.             CASE band = 'B'
  325.                STORE modeb + 1 TO modeb
  326.                @ 18,60 SAY modeb
  327.                
  328.             CASE band = 'J'
  329.                STORE modej + 1 TO modej
  330.                @ 19,60 SAY modej
  331.                
  332.             OTHERWISE
  333.                IF SUBSTR(CALL,1,1) = '-'
  334.                ELSE
  335.                   STORE whatisit  + 1 TO whatisit
  336.                   @ 20,60 SAY whatisit
  337.                ENDIF
  338.                
  339.             ENDCASE
  340.             
  341.             DO CASE
  342.                
  343.             CASE mode = 'SSB'
  344.                STORE modessb + 1 TO modessb
  345.                @ 17,21 SAY modessb
  346.                
  347.             CASE mode = 'CW'
  348.                STORE modecw + 1 TO modecw
  349.                @ 18,21 SAY modecw
  350.                
  351.             CASE mode = 'RTTY'
  352.                STORE modertty + 1 TO modertty
  353.                @ 19,21 SAY modertty
  354.  
  355.             CASE mode = 'FM'
  356.                STORE modefm + 1 TO modefm
  357.                @ 20,21 SAY modefm
  358.                
  359.             CASE mode = 'SSTV'
  360.                STORE modesstv + 1 TO modesstv
  361.                @ 21,21 SAY modesstv
  362.                
  363.             CASE mode = 'AMTR'
  364.                STORE modeamtor +1 TO modeamtor
  365.                @ 22,21 SAY modeamtor
  366.                
  367.             CASE mode = 'PCKT'
  368.                STORE modepacket +1 TO modepacket
  369.                @ 23,21 SAY modepacket
  370.             ENDCASE
  371.          ENDIF
  372.          SKIP
  373.       ENDDO
  374.       SET COLOR TO GR+/B,W+/RB,BG+
  375.       @ 23,1 SAY ' '
  376.       ACCEPT 'Do you want to add another log file (Y/N) ? ' TO df
  377.       IF SUBSTR(df,1,1) = 'Y'
  378.          @ 23,1 SAY ' '
  379.          ACCEPT 'What is the name of the new logbook (D:NAME) ? ' TO logbook
  380.          IF FILE(logbook)
  381.          ELSE
  382.             STORE .F. TO joe
  383.             ? 'ERROR LOG FILE DOES NOT EXIST'
  384.             WAIT
  385.          ENDIF
  386.       ELSE
  387.          STORE .F. TO joe
  388.       ENDIF
  389.    ENDIF
  390. ENDDO
  391. CLEAR
  392.  
  393. * print summary
  394. STORE ' ' TO df
  395. ACCEPT ' Do you want hard copy of summary (Y/N) ? ' TO df
  396. IF SUBSTR(df,1,1) = 'Y'
  397.    SET PRINT ON
  398. ENDIF
  399.  
  400. ? 'QSL SUMMARY'
  401. ?
  402. ? 'TOTAL NUMBER OF CONTACTS    '
  403. ?? qsonumber
  404. ? 'QSL CARDS SENT DIRECT       '
  405. ?? qsldirect
  406. ? 'QSL CARDS SENT VIA BUREAU   '
  407. ?? qslbureau
  408. ? 'QSL CARDS SENT VIA MANAGERS '
  409. ?? qslmngr
  410. ? 'QSL CARDS SENT              '
  411. ?? qsltxcount
  412. ? 'QSL CARDS RECEIVED          '
  413. ?? qslrxcount
  414. ? 'QSL CARDS OWED              '
  415. ?? qslowed
  416. ? 'QSL CARDS EXCHANGED         ',qslex
  417. ?
  418. ?
  419. ? 'SUMMARY OF ENTRIES BY BAND'
  420. ?
  421. ? '10 METERS                  ',ten
  422. ? '12 METERS                  ',twentyfour
  423. ? '15 METERS                  ',fifteen
  424. ? '17 METERS                  ',seventeen
  425. ? '20 METERS                  ',twenty
  426. ? '30 METERS                  ',thirty
  427. ? '40 METERS                  ',forty
  428. ? '80 METERS                  ',eighty
  429. ? '160 METERS                 ',onesixty
  430. ? ' 6 METERS                  ',six
  431. ? ' 2 METERS                  ',two
  432. ? 'OSCAR MODE A               ',modea
  433. ? 'OSCAR MODE B               ',modeb
  434. ? 'OSCAR MODE J               ',modej
  435. ? 'OTHERS                     ',whatisit
  436. ?
  437. ?
  438. ? 'REPORT BY MODES'
  439. ?
  440. ? 'SSB          ',modessb
  441. ? 'CW           ',modecw
  442. ? 'RTTY         ',modertty
  443. ? 'FM           ',modefm
  444. ? 'SSTV         ',modesstv
  445. ? 'AMTOR        ',modeamtor
  446. ? 'PACKET       ',modepacket
  447.  
  448. IF SUBSTR(df,1,1) = 'Y'
  449.    EJECT
  450.    SET PRINT OFF
  451. ENDIF
  452. USE
  453. ?
  454. ?
  455. WAIT
  456. RELEASE modeamtor,modepacket
  457. RELEASE qslrxcount,qsltxcount,qslowed,qsldirect,qslbureau,qslmngr
  458. RELEASE df,qsonumber,ten,fifteen,twenty,forty,eighty,two,whatisit
  459. RELEASE modessb,modecw,modertty,modefm,onesixty,modea,modeb,modej
  460. RELEASE joe,lastqso,qslex,six,modesstv,thirty,seventeen,twentyfour
  461. RETURN
  462. *: EOF: LOGSTAT.PRG
  463.