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

  1. *:*********************************************************************
  2. *:
  3. *:        Program: LOGFUNCT.PRG
  4. *:
  5. *:         System: PC-HAM Logbook
  6. *:         Author: Joe Kasser G3ZCZ
  7. *:      Copyright (c) 1990, Joe Kasser
  8. *:  Last modified: 05/04/90     13:19
  9. *:
  10. *:      Called by: LOGBOOK.PRG                   
  11. *:
  12. *:          Calls: LOGCHNGE.PRG
  13. *:               : LOGSTAT.PRG
  14. *:               : LOGPRINT.PRG
  15. *:               : LOGSRCH.PRG
  16. *:               : LOGADD.PRG
  17. *:               : LOGQSL.PRG
  18. *:               : LOGQSL1.PRG
  19. *:               : LOGCALL.PRG
  20. *:               : LOGDATE.PRG
  21. *:
  22. *:           Uses: LOG.DBF        
  23. *:               : &LOGBOOK.DBF   
  24. *:               : &TARGET.DBF    
  25. *:
  26. *:        Indexes: &LOGNDX
  27. *:               : &TARGET
  28. *:
  29. *:      Documented 05/04/90 at 13:49                SNAP!  version 3.12f
  30. *:*********************************************************************
  31. * COPYRIGHT JOE KASSER G3ZCZ 1985,1986,1987,1988,1989
  32.  
  33. DO WHILE task <> '*'
  34.    CLEAR
  35.    SET COLOR TO W+/R,W+/RB,BG+
  36.    @ 2,10 SAY 'G3ZCZ LOGBOOK FUNCTIONS PACKAGE VERSION 3.4'
  37.    SET COLOR TO GR+/B,W+/RB,BG+
  38.    @ 4,10 SAY 'Default LOG database is'
  39.    SET COLOR TO W+/R,W+/RB,BG+
  40.    @ 4,35 SAY TRIM(logbook)
  41.    SET COLOR TO GR+/B,W+/RB,BG+
  42.    
  43.    
  44.    *@ 4,1  SAY 'CURRENT LOGBOOK IS'
  45.    *@ 4,21 SAY logbook
  46.    @ 6,1  SAY 'CHANGE LOG FILE                             L'
  47.    @ 7,1  SAY 'PRINT LOG PAGES                             P'
  48.    @ 8,1  SAY 'PRINT LOG INDEXED BY CALL SIGN              C'
  49.    @ 9,1  SAY 'APPEND ENTRIES                              A'
  50.    @ 10,1 SAY 'CREATE NEW LOGBOOK DATABASE                 N'
  51.    @ 11,1 SAY 'HUNT FOR PREFIX/CALL IN LOG                 H'
  52.    @ 12,1 SAY 'SUMMARISE LOG                               S'
  53.    @ 13,1 SAY 'UPDATE QSL STATUS                           Q'
  54.    @ 14,1 SAY 'DISPLAY ENTRIES FOR ONE DAY                 1'
  55.    @ 15,1 SAY 'DISPLAY LAST 20 ENTRIES IN THE LOG          E'
  56.    @ 16,1 SAY 'DISPLAY BLOCK OF 20 ENTRIES                 B'
  57.    @ 17,1 SAY 'DETERMINE UNIQUE CONTACTS                   U'
  58.    @ 18,1 SAY 'TRANSFER SINGLE PX TO NEW DATABASE          X'
  59.    @ 19,1 SAY 'DISPLAY FILES ON DISK DRIVE                 F'
  60.    @ 20,1 SAY 'QUIT THIS MENU                              *'
  61.    @ 22,1 SAY 'QRU'
  62.    @ 22,5 GET task
  63.    READ
  64.    
  65.    IF task = 'F'
  66.       CLEAR
  67.       ACCEPT 'WHICH DRIVE ? ' TO diskdrive
  68.       diskdrive = SUBSTR(diskdrive,1,1)
  69.       STORE diskdrive + ':' TO diskdrive
  70.       DISPLAY Files ON &diskdrive
  71.       RELEASE diskdrive
  72.       WAIT
  73.    ENDIF
  74.    
  75.    IF task = 'N'
  76.       STORE 'LOG' TO LOG
  77.       IF FILE (LOG+'.DBF')
  78.          @ 22,1 SAY 'What is the name of the new Log file '
  79.          STORE SUBSTR(logbook +'          ',1,10) TO logbook
  80.          @ 22,40 GET logbook
  81.          READ
  82.          IF FILE (logbook+'.DBF')
  83.             @ 22,1 SAY ' '
  84.             ? 'ERROR, ',logbook,' ALREADY EXISTS ON DRIVE'
  85.             WAIT
  86.          ELSE
  87.             @ 22,1 SAY '                                             '
  88.             USE LOG
  89.             COPY STRUCTURE TO &logbook
  90.             USE &logbook
  91.             SET TALK ON
  92.             INDEX ON CALL+band TO &logndx
  93.             SET TALK OFF
  94.          ENDIF
  95.       ELSE
  96.          @ 22,1 SAY ' '
  97.          ? 'ERROR, BLANK LOG FILE (log>dbf IS NOT PRESENT ON DRIVE'
  98.          WAIT
  99.       ENDIF
  100.       RELEASE LOG
  101.    ENDIF
  102.    
  103.    IF task = 'L'
  104.       DO logchnge
  105.    ENDIF
  106.    IF FILE (logbook+'.DBF')
  107.       IF logbook = '      '
  108.          @ 23,1  SAY 'OPEN A LOGBOOK FIRST'
  109.          WAIT
  110.          STORE 'L' TO task
  111.       ELSE
  112.          DO CASE
  113.          CASE task = 'S'
  114.             DO logstat
  115.          CASE task = 'P'
  116.             DO logprint
  117.          CASE task = 'H'
  118.             DO logsrch
  119.          CASE task = 'A'
  120.             DO logadd
  121.          CASE task = 'Q'
  122.             ACCEPT 'PRINT DIRECTLY OR TO FILE (D or F) ? ' TO qtype
  123.             IF SUBSTR(qtype,1,1) = 'D'
  124.                DO logqsl
  125.             ELSE
  126.                IF SUBSTR(qtype,1,1) = 'F'
  127.                   DO logqsl1
  128.                ENDIF
  129.             ENDIF
  130.          CASE task = 'C'
  131.             DO logcall
  132.          CASE task = '1'
  133.             DO logdate
  134.          CASE task = 'E'
  135.             USE &logbook
  136.             GOTO BOTTOM
  137.             IF RECNO() > 20
  138.                SKIP -20
  139.             ELSE
  140.                GOTO TOP
  141.             ENDIF
  142.             CLEAR
  143.             @ 2,1  SAY "    ENTRY  DATE    TIME    CALL   BAND  PWR MODE  RX  TX "
  144.             @ 2,58 SAY "S R  COMMENTS"
  145.             SET COLOR TO GR+/B,W+/RB,BG+
  146.             SET COLOR TO W+/R,W+/RB,BG+
  147.             DO WHILE .not. EOF()
  148.                ? RECNO(),DATE,TIME,CALL,band,Power,mode,rx,tx,qslsent,qslrx,comments
  149.                SKIP
  150.             ENDDO
  151.             SET COLOR TO GR+/B,W+/RB,BG+
  152.             USE
  153.             WAIT
  154.             
  155.          CASE task = 'B'
  156.             USE &logbook
  157.             ACCEPT 'WHAT ENTRY NUMBER ? ' TO sdate
  158.             GOTO BOTTOM
  159.             STORE RECNO() TO lastone
  160.             IF &sdate >= lastone
  161.                ?
  162.                ? 'There are only ',lastone,' QSOs in the log'
  163.                WAIT
  164.             ELSE
  165.                GOTO &sdate
  166.                STORE '+' TO stask
  167.                DO WHILE stask <> '*'
  168.                   CLEAR
  169.                   STORE 0  TO lcount
  170.                   @ 2,1  SAY "    ENTRY  DATE    TIME    CALL   BAND  PWR MODE  RX  TX "
  171.                   @ 2,58 SAY "S R  COMMENTS"
  172.                   
  173.                   SET COLOR TO W+/R,W+/RB,BG+
  174.                   DO WHILE lcount < 20 .and. .not. EOF()
  175.                      ? RECNO(),DATE,TIME,CALL,band,Power,mode,rx,tx,qslsent,qslrx,comments
  176.                      
  177.                      STORE lcount + 1 TO lcount
  178.                      SKIP
  179.                   ENDDO
  180.                   SET COLOR TO GR+/B,W+/RB,BG+
  181.                   @ 24,1 SAY 'QRU (+ - *)'
  182.                   @ 24,15 GET stask
  183.                   READ
  184.                   IF stask = '-'
  185.                      STORE RECNO() - 40 TO sdate
  186.                      IF sdate < 1
  187.                         STORE 1 TO sdate
  188.                      ENDIF
  189.                      GOTO sdate
  190.                   ENDIF
  191.                ENDDO
  192.             CASE task = 'U'
  193.                *  UNIQUE TESTS AND COUNTS UNIQUE LOG ENTRIES
  194.                USE &logbook INDEX &logndx
  195.                STORE 0 TO dup
  196.                STORE 0 TO qsos
  197.                STORE 0 TO dummy
  198.                DO WHILE .not. EOF()
  199.                   IF CALL = '-' .or. CALL = '.'
  200.                      STORE dummy + 1 TO dummy
  201.                      SKIP
  202.                   ELSE
  203.                      ? CALL
  204.                      STORE qsos + 1 TO qsos
  205.                      STORE CALL TO tcall
  206.                      SKIP
  207.                      DO WHILE CALL = tcall .and. .not. EOF()
  208.                         SKIP
  209.                         STORE dup + 1 TO dup
  210.                      ENDDO
  211.                      ?? qsos, dup, dummy
  212.                   ENDIF
  213.                ENDDO
  214.                USE
  215.                ?
  216.                ?
  217.                ?
  218.                ? TRIM(STR(qsos,5)),' UNIQUE CALLS     ',TRIM(STR(dup,5)),'DUPLICATES, and '
  219.                ?? TRIM(STR(dummy,5)),'DUMMY ENTRIES'
  220.                ? 'IE. A TOTAL OF',dup + qsos + dummy,' ENTRIES IN THE LOGBOOK'
  221.                RELEASE qsos,dup,tcall,dummy
  222.                WAIT
  223.                
  224.             CASE task = 'X'
  225.                *GETS ALL PX'S AND PUTS THEM IN FILE
  226.                ACCEPT 'What Target Database File ? ' TO target
  227.                ACCEPT 'What Prefix ? ' TO prefix
  228.                SELECT 1
  229.                USE &logbook INDEX &logndx
  230.                IF FILE(target + '.DBF')
  231.                ELSE
  232.                   * CREATE IT
  233.                   SELECT 1
  234.                   ? 'Creating Target File Now'
  235.                   ?
  236.                   COPY STRUCTURE TO &target
  237.                ENDIF
  238.                SELECT 2
  239.                USE &target
  240.                SELECT 1
  241.                FIND &prefix
  242.                DO WHILE CALL = prefix .and. .not. EOF()
  243.                   ? CALL,DATE,TIME,band
  244.                   STORE DATE TO tdate
  245.                   STORE TIME TO ttime
  246.                   STORE CALL TO tcall
  247.                   STORE band TO tband
  248.                   STORE mode TO tmode
  249.                   STORE rx TO trx
  250.                   STORE tx TO ttx
  251.                   STORE Power TO tpower
  252.                   STORE qslsent TO tqslsent
  253.                   STORE qslrx TO tqslrx
  254.                   STORE comments TO tcomments
  255.                   SELECT 2
  256.                   APPEND BLANK
  257.                   REPLACE DATE WITH tdate
  258.                   REPLACE TIME WITH ttime
  259.                   REPLACE CALL WITH tcall
  260.                   REPLACE band WITH tband
  261.                   REPLACE mode WITH tmode
  262.                   REPLACE rx WITH trx
  263.                   REPLACE tx WITH ttx
  264.                   REPLACE Power WITH tpower
  265.                   REPLACE qslsent WITH tqslsent
  266.                   REPLACE qslrx WITH tqslrx
  267.                   REPLACE comments WITH tcomments
  268.                   SELECT 1
  269.                   SKIP
  270.                ENDDO
  271.                USE
  272.                SELECT 2
  273.                ? 'Stand by while database is indexed'
  274.                SET TALK ON
  275.                INDEX ON CALL+ band TO &target
  276.                SET TALK OFF
  277.                USE
  278.                RELEASE tdate,ttime,tcall,tband,tmode,trx,ttx
  279.                RELEASE tpower,tqslsent,tqslrx,tcomments,target,prefix
  280.                
  281.             ENDIF
  282.             RELEASE lastone,stask,sdate,lcount
  283.             USE
  284.             
  285.          ENDCASE
  286.       ENDIF
  287.    ELSE
  288.       @ 22,1 SAY ' '
  289.       ? 'ERROR, ',logbook, 'IS NOT PRESENT ON DRIVE'
  290.       WAIT
  291.    ENDIF
  292. ENDDO
  293. USE
  294. STORE ' ' TO task
  295. RETURN
  296. *: EOF: LOGFUNCT.PRG
  297.