home *** CD-ROM | disk | FTP | other *** search
/ The Best of the Best / _.img / 02192 / logbook.arc / LOGFUNCT.PRG < prev    next >
Text File  |  1987-12-25  |  8KB  |  251 lines

  1. * LOGFUNCT VERSION 860622 mod 871224
  2. * COPYRIGHT JOE KASSER G3ZCZ 1985
  3.  
  4. DO WHILE task <> '*'
  5.    CLEAR
  6.    @ 2,10 SAY 'G3ZCZ LOGBOOK FUNCTIONS PACKAGE VERSION 3.0'
  7.    @ 4,1  SAY 'CURRENT LOGBOOK IS'
  8.    @ 4,21 SAY logbook
  9.    @ 6,1  SAY 'CHANGE LOG FILE                             L'
  10.    @ 7,1  SAY 'PRINT LOG PAGES                             P'
  11.    @ 8,1  SAY 'PRINT LOG INDEXED BY CALL SIGN              C'
  12.    @ 9,1  SAY 'APPEND ENTRIES                              A'
  13.    @ 10,1 SAY 'CREATE NEW LOGBOOK DATABASE                 N'
  14.    @ 11,1 SAY 'HUNT FOR PREFIX/CALL IN LOG                 H'
  15.    @ 12,1 SAY 'SUMMARISE LOG                               S'
  16.    @ 13,1 SAY 'UPDATE QSL STATUS                           Q'
  17.    @ 14,1 SAY 'DISPLAY ENTRIES FOR ONE DAY                 1'
  18.    @ 15,1 SAY 'DISPLAY LAST 20 ENTRIES IN THE LOG          E'
  19.    @ 16,1 SAY 'DISPLAY BLOCK OF 20 ENTRIES                 B'
  20.    @ 17,1 SAY 'DETERMINE UNIQUE CONTACTS                   U'
  21.    @ 18,1 SAY 'TRANSFER SINGLE PX TO NEW DATABASE          X'
  22.    @ 19,1 SAY 'DISPLAY FILES ON DISK DRIVE                 F'
  23.    @ 20,1 SAY 'QUIT THIS MENU                              *'
  24.    @ 22,1 SAY 'QRU'
  25.    @ 22,5 GET task
  26.    READ
  27.  
  28.    IF task = 'F'
  29.      CLEAR
  30.      ACCEPT 'WHICH DRIVE ? ' TO diskdrive
  31.      diskdrive = LEFT(diskdrive,1)
  32.      STORE diskdrive + ':' TO diskdrive
  33.      DISPLAY FILES ON &diskdrive
  34.      RELEASE diskdrive
  35.      WAIT
  36.    ENDIF
  37.  
  38.    IF task = 'N'
  39.       STORE 'LOG' TO log
  40.       IF FILE (log+'.DBF')
  41.          @ 22,1 SAY 'What is the name of the new Log file '
  42.          @ 22,40 GET logbook
  43.          READ
  44.          IF FILE (logbook+'.DBF')
  45.             @ 22,1 SAY ' '
  46.             ? 'ERROR, ',logbook,' ALREADY EXISTS ON DRIVE'
  47.             WAIT
  48.          ELSE
  49.             @ 22,1 SAY '                                             '
  50.             USE log
  51.             COPY STRUCTURE TO &logbook
  52.             USE &logbook
  53.             SET TALK ON
  54.             INDEX ON call+band TO &logndx
  55.             SET TALK OFF
  56.          ENDIF
  57.       ELSE
  58.          @ 22,1 SAY ' '
  59.          ? 'ERROR, BLANK LOG FILE (log>dbf IS NOT PRESENT ON DRIVE'
  60.          WAIT
  61.       ENDIF
  62.       RELEASE log
  63.    ENDIF
  64.  
  65.    IF task = 'L'
  66.       @ 22,1 SAY 'Which Log file '
  67.       @ 22,15 GET logbook
  68.       READ
  69.       STORE logbook TO logndx
  70.       IF FILE (logbook+'.DBF')
  71.          @ 22,1 SAY '                          '
  72.       ELSE
  73.          @ 22,1 SAY ' '
  74.          ? 'ERROR, ',logbook, 'IS NOT PRESENT ON DRIVE'
  75.          WAIT
  76.       ENDIF
  77.    ENDIF
  78.  
  79.    IF FILE (logbook+'.DBF')
  80.       IF logbook = '      '
  81.          @ 23,1  SAY 'OPEN A LOGBOOK FIRST'
  82.          WAIT
  83.          STORE 'L' TO task
  84.       ELSE
  85.          DO CASE
  86.             CASE task = 'S'
  87.                DO LOGSTAT
  88.             CASE task = 'P'
  89.                DO LOGPRINT
  90.             CASE task = 'H'
  91.                DO LOGSRCH
  92.             CASE task = 'A'
  93.                DO LOGADD
  94.             CASE task = 'Q'
  95.                DO LOGQSL
  96.             CASE task = 'C'
  97.                DO LOGCALL
  98.             CASE task = '1'
  99.                DO LOGDATE
  100.             CASE task = 'E'
  101.                USE &logbook
  102.                GOTO BOTTOM
  103.                SKIP -20
  104.                CLEAR
  105.                DO WHILE .NOT. EOF()
  106.                   ? RECNO(),date,time,call,band,tx,rx,mode,power,qslsent,qslrx,comments
  107.                   SKIP
  108.                ENDDO
  109.                USE
  110.                WAIT
  111.  
  112.             CASE task = 'B'
  113.                USE &logbook
  114.                ACCEPT 'WHAT ENTRY NUMBER ? ' TO sdate
  115.                GOTO BOTTOM
  116.                STORE RECNO() TO lastone
  117.                IF &sdate >= lastone
  118.                   ?
  119.                   ? 'There are only ',lastone,' QSOs in the log'
  120.                   WAIT
  121.                ELSE
  122.                   GOTO &sdate
  123.                   STORE '+' TO stask
  124.                   DO WHILE stask <> '*'
  125.                   CLEAR
  126.                   STORE 0  TO lcount
  127.                   ? '   #       DATE   TIME BD  CALL       RX  TX MODE POWER '
  128.                   ?? 'S R COMMENTS'
  129.                   ? '------------------------------------------------------'
  130.                   ?? '------------'
  131.                   DO WHILE lcount < 20 .AND. .NOT. EOF()
  132.                      DISP
  133.                      STORE lcount + 1 TO lcount
  134.                      SKIP
  135.                   ENDDO
  136.                   @ 24,1 SAY 'QRU (+ - *)'
  137.                   @ 24,15 GET stask
  138.                   READ
  139.                   IF stask = '-'
  140.                      STORE RECNO() - 40 TO sdate
  141.                      IF sdate < 1
  142.                         STORE 1 TO sdate
  143.                      ENDIF
  144.                      GOTO sdate
  145.                   ENDIF
  146.                ENDDO
  147.             CASE task = 'U'
  148.             *  UNIQUE TESTS AND COUNTS UNIQUE LOG ENTRIES
  149.                USE &logbook INDEX &logndx
  150.                STORE 0 TO dup
  151.                STORE 0 TO qsos
  152.                STORE 0 TO dummy
  153.                DO WHILE .NOT. EOF()
  154.                   IF call = '-' .OR. call = '.'
  155.                      STORE dummy + 1 TO dummy
  156.                      SKIP
  157.                   ELSE
  158.                      ? call
  159.                      STORE qsos + 1 TO qsos
  160.                      STORE call TO tcall
  161.                      SKIP
  162.                      DO WHILE call = tcall .AND. .NOT. EOF()
  163.                         SKIP
  164.                         STORE dup + 1 TO dup
  165.                      ENDDO
  166.                      ?? qsos, dup, dummy
  167.                   ENDIF
  168.                ENDDO
  169.                USE
  170.                ?
  171.                ?
  172.                ?
  173. ? TRIM(STR(qsos,5)),' UNIQUE CALLS     ',TRIM(STR(dup,5)),'DUPLICATES, and '
  174. ?? TRIM(STR(dummy,5)),'DUMMY ENTRIES'
  175. ? 'IE. A TOTAL OF',dup + qsos + dummy,' ENTRIES IN THE LOGBOOK'
  176.                RELEASE qsos,dup,tcall,dummy
  177.                WAIT
  178.  
  179.             CASE TASK = 'X'
  180.                *GETS ALL PX'S AND PUTS THEM IN FILE
  181.                ACCEPT 'What Target Database File ? ' TO target
  182.                ACCEPT 'What Prefix ? ' TO prefix
  183.                SELECT A
  184.                USE &logbook INDEX &logndx
  185.                IF FILE(target + '.DBF')
  186.                ELSE
  187.                   * CREATE IT
  188.                   SELECT A
  189.                   ? 'Creating Target File Now'
  190.                   ?
  191.                   COPY STRUCTURE TO &target
  192.                ENDIF
  193.                SELECT B
  194.                USE &target
  195.                SELECT A
  196.                FIND &prefix
  197.                DO WHILE CALL = prefix .AND. .NOT. EOF()
  198.                   ? call,date,time,band
  199.                   STORE date TO tdate
  200.                   STORE time TO ttime
  201.                   STORE call TO tcall
  202.                   STORE band TO tband
  203.                   STORE mode TO tmode
  204.                   STORE rx TO trx
  205.                   STORE tx TO ttx
  206.                   STORE power TO tpower
  207.                   STORE qslsent TO tqslsent
  208.                   STORE qslrx TO tqslrx
  209.                   STORE comments TO tcomments
  210.                   SELECT B
  211.                   APPEND BLANK
  212.                   REPLACE date WITH tdate
  213.                   REPLACE time WITH ttime
  214.                   REPLACE call WITH tcall
  215.                   REPLACE band WITH tband
  216.                   REPLACE mode WITH tmode
  217.                   REPLACE rx WITH trx
  218.                   REPLACE tx WITH ttx
  219.                   REPLACE power WITH tpower
  220.                   REPLACE qslsent WITH tqslsent
  221.                   REPLACE qslrx WITH tqslrx
  222.                   REPLACE comments WITH tcomments
  223.                   SELECT A
  224.                   SKIP
  225.                ENDDO
  226.                USE
  227.                SELECT B
  228.                ? 'Stand by while database is indexed'
  229.                SET TALK ON
  230.                INDEX ON call+ band TO &target
  231.                SET TALK OFF
  232.                USE
  233.                RELEASE tdate,ttime,tcall,tband,tmode,trx,ttx
  234.                RELEASE tpower,tqslsent,tqslrx,tcomments,target,prefix
  235.  
  236.            ENDIF
  237.            RELEASE lastone,stask,sdate,lcount
  238.            USE
  239.             
  240.          ENDCASE
  241.       ENDIF
  242.    ELSE
  243.       @ 22,1 SAY ' '
  244.       ? 'ERROR, ',logbook, 'IS NOT PRESENT ON DRIVE'
  245.       WAIT
  246.    ENDIF
  247. ENDDO
  248. USE
  249. STORE ' ' TO task
  250. RETURN
  251.