home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / log / logdbase / logboek.prc < prev    next >
Text File  |  1986-08-30  |  28KB  |  1,164 lines

  1. *  -- LOGBOEK.PRC
  2. *  -- Procedures Generated By FlashCode V1.00 on 08/26/1986 - 11:33:16
  3. *  -- (C) Copyright 1985, The Software Bottling Company Of New York
  4. *  -- This Program may not be used without the above Copyright Notice
  5. *
  6.  
  7. *********************
  8. PROCEDURE AddRecFL
  9. *********************
  10. CLEAR
  11. USE LOGBOEK
  12. SET INDEX TO LOGBOEK
  13. ScrnNumFL = 1
  14. OldScrnFL = 0
  15. @ 24,0 SAY "Initializing Variables"
  16. ActionFL = "INITIAL"
  17. DO ActProFL
  18. *
  19. DO WHILE .T.
  20.   *
  21.   * -- Modification #4 See Manual --
  22.   *
  23.   * -- Do Calculations For All Fields --
  24.  
  25.   IF ScrnNumFL<>OldScrnFL
  26.     ActionFL = "DISPLAY"
  27.     DO ActProFL
  28.     OldScrnFL = ScrnNumFL
  29.   ENDIF
  30.  
  31.   GOTO BOTTOM
  32.   IF .NOT. EOF()
  33.     SKIP
  34.   ENDIF
  35.   @ 0,0 SAY "Record # "+STR(RECNO(),5)
  36.  
  37.   * -- Get Data Input --
  38.   @ 24,0 SAY "Enter or Re-Enter Information ..."
  39.   ActionFL = "GET"
  40.   DO ActProFL
  41.   READ
  42.   SET COLOR TO 15/0, 0/7
  43.  
  44.   @ 24,0
  45.   @ 24,0 SAY "Edit Calculations OR Press 'PgDn' To Exit."
  46.   *
  47.   *  -- Modification #5 See Manual --
  48.   *
  49.   * -- Re-Do Calculations For All Fields and Re-Display --
  50.   DO CASE
  51.   ENDCASE
  52.  
  53.   READ
  54.   SET COLOR TO 15/0, 0/7
  55.   @ 24,0
  56.  
  57.   * -- Get User Response --
  58.   AnsFL = " "
  59.   DO WHILE .NOT. AnsFL$"EQ"
  60.     @ 24,0 SAY "[E]dit, [Q]uit & Save" GET AnsFL PICT "!"
  61.     READ
  62.   ENDDO
  63.   @ 24,0
  64.  
  65.   DO CASE
  66.   * -- Next Screen (If On Last Screen Then Goto First Screen) --
  67.   CASE AnsFL = "N"
  68.     ScrnNumFL = ScrnNumFL+1
  69.     IF ScrnNumFL>MaxScrnFL
  70.       ScrnNumFL = 1
  71.     ENDIF
  72.     LOOP
  73.  
  74.   * -- Previous Screen (If On First Screen Then Goto Last Screen) --
  75.   CASE AnsFL = "P"
  76.     ScrnNumFL = ScrnNumFL-1
  77.     IF ScrnNumFL<1
  78.       ScrnNumFL = MaxScrnFL
  79.     ENDIF
  80.     LOOP
  81.  
  82.   * -- Edit Current Screen --
  83.   CASE AnsFL = "E"
  84.     LOOP
  85.  
  86.   * -- Quit & Ask To Save Record --
  87.   CASE AnsFL = "Q"
  88.     * -- Get User Response --
  89.     AnsFL = " "
  90.     DO WHILE .NOT. AnsFL$"YN"
  91.       @ 24,0 SAY "Save Record? Y/N" GET AnsFL PICT "!"
  92.       READ
  93.     ENDDO
  94.     @ 24,0
  95.  
  96.     DO CASE
  97.     * -- Do Not Save & Return To Main Menu --
  98.     CASE AnsFL = "N"
  99.       USE
  100.       RETURN
  101.  
  102.     * -- Save & Loop To Enter Another Record --
  103.     CASE AnsFL = "Y"
  104.       @ 24,0 SAY "Saving Record To File ..."
  105.       APPEND BLANK
  106.       ActionFL = "REPLACE"
  107.       DO ActProFL
  108.       @ 24,0
  109.       @ 24,0 SAY "Initializing Variables"
  110.       ActionFL = "INITIAL"
  111.       DO ActProFL
  112.       ScrnNumFL = 1
  113.       IF MaxScrnFL<>1  .AND. OldScrnFL<>1
  114.         OldScrnFL = 0
  115.       ELSE
  116.         OldScrnFL = 1
  117.       ENDIF
  118.       @ 24,0
  119.       LOOP
  120.     ENDCASE
  121.   ENDCASE
  122. ENDDO .T.
  123. RETURN
  124.  
  125. *********************
  126. PROCEDURE FindLocFL
  127. *********************
  128. * -- Set Index To Default (ON) Position --
  129. InxFL = "ON"
  130.  
  131. DO WHILE .T.
  132.   * -- If No Records Exist Then LeaveFL Is True --
  133.   USE LOGBOEK
  134.   IF EOF()
  135.     LeaveFL = .T.
  136.     MaxRecFL = 0
  137.   ELSE
  138.     LeaveFL = .F.
  139.     GO BOTTOM
  140.     MaxRecFL = RECNO()
  141.     GO TOP
  142.   ENDIF
  143.  
  144.   * -- Use Index If On --
  145.   IF InxFL = "ON"
  146.     SET INDEX TO LOGBOEK
  147.   ENDIF
  148.  
  149.   * -- Display Lookup Menu --
  150.   CLEAR
  151.   @ 1,0 SAY "╔══════════════════════════════════════════════════════════════════════════════╗"
  152.   @ 2,0 SAY "║"
  153.   @ 2,22 SAY "LOOK-UP Records For Browse, Edit, Delete"
  154.   @ 2,79 SAY "║"
  155.   @ 3,0 SAY "║ FILE: "+"LOGBOEK"
  156.   @ 3,79 SAY "║"
  157.   @ 4,0 SAY "╟──────────────────────────────────────────────────────────────────────────────╢"
  158.   @ 5,0 SAY "║"
  159.   @ 5,79 SAY "║"
  160.   @ 6,0 SAY "║"
  161.   @ 6,22 SAY "1  <-  Go To A Record By Number"
  162.   @ 6,79 SAY "║"
  163.   @ 7,0 SAY "║"
  164.   @ 7,22 SAY "2  <-  Go To The Top Record"
  165.   @ 7,79 SAY "║"
  166.   @ 8,0 SAY "║"
  167.   @ 8,22 SAY "3  <-  Go To The Bottom Record"
  168.   @ 8,79 SAY "║"
  169.   @ 9,0 SAY "║"
  170.   @ 9,79 SAY "║"
  171.   @ 10,0 SAY "║"
  172.   @ 10,22 SAY "4  <-  Locate Using Screen Entry Criteria"
  173.   @ 10,79 SAY "║"
  174.   @ 11,0 SAY "║"
  175.   @ 11,22 SAY "5  <-  Locate Using Free Form Criteria"
  176.   @ 11,79 SAY "║"
  177.   @ 12,0 SAY "║"
  178.   @ 12,22 SAY "6  <-  Fast Find by Index"
  179.   @ 12,79 SAY "║"
  180.   @ 13,0 SAY "║"
  181.   @ 13,79 SAY "║"
  182.   @ 14,0 SAY "║"
  183.   @ 14,22 SAY "7  <-  Turn Index ON/OFF. Index Is Now "+InxFL
  184.   @ 14,79 SAY "║"
  185.   @ 15,0 SAY "║"
  186.   @ 15,79 SAY "║"
  187.   @ 16,0 SAY "║"
  188.   @ 16,22 SAY "0  <-  Exit TO Main Menu"
  189.   @ 16,79 SAY "║"
  190.   @ 17,0 SAY "║"
  191.   @ 17,79 SAY "║"
  192.   @ 18,0 SAY "║"
  193.   @ 18,79 SAY "║"
  194.   @ 19,0 SAY "║"
  195.   @ 19,22 SAY "Enter number of your choice:"
  196.   @ 19,79 SAY "║"
  197.   @ 20,0 SAY "║"
  198.   @ 20,79 SAY "║"
  199.   @ 21,0 SAY "║ Records:"+STR(MaxRecFL,6)
  200.   @ 21,79 SAY "║"
  201.   @ 22,0 SAY "║"
  202.   @ 22,79 SAY "║"
  203.   @ 23,0 SAY "╚══════════════════════════════════════════════════════════════════════════════╝"
  204.   @ 3,8 SAY "LOGBOEK"
  205.   * -- Get User Response --
  206.   AnsFL = " "
  207.   DO WHILE .NOT. AnsFL$"12345670"
  208.     @ 19,51 GET AnsFL PICT "9"
  209.     READ
  210.   ENDDO
  211.  
  212.   * -- If Response is '0' Return to Main Menu --
  213.   IF AnsFL = "0"
  214.     USE
  215.     RELE InxFL
  216.     RETURN
  217.   ENDIF
  218.  
  219.   * -- If No Records Exist, Do Not Allow User To Enter Any Option --
  220.   IF LeaveFL
  221.     @ 24,0 SAY "No Records In File, Press Any Key ..."
  222.     SET CONSOLE OFF
  223.     WAIT
  224.     SET CONSOLE ON
  225.     @ 24,0
  226.     LOOP
  227.   ENDIF
  228.  
  229.   DO CASE
  230.   * -- Goto Record by Number --
  231.   CASE AnsFL = "1"
  232.     RecNumFL = 0
  233.     @ 19,22 SAY "Enter Record Number (0=EXIT): " GET RecNumFL PICT "99999" ;
  234.     RANGE 0, MaxRecFL
  235.     READ
  236.     IF RecNumFL = 0
  237.       LOOP
  238.     ENDIF
  239.     GOTO RecNumFL
  240.     RELE RecNumFL
  241.     SearchFL = ".T."
  242.     ScrnNumFL = 1
  243.     OldScrnFL = 0
  244.  
  245.   * -- Goto Top Of File --
  246.   CASE AnsFL = "2"
  247.     GOTO TOP
  248.     SearchFL = ".T."
  249.     ScrnNumFL = 1
  250.     OldScrnFL = 0
  251.  
  252.   * -- Goto Bottom Of File
  253.   CASE AnsFL = "3"
  254.     GOTO BOTTOM
  255.     SearchFL = ".T."
  256.     ScrnNumFL = 1
  257.     OldScrnFL = 0
  258.  
  259.  
  260.   * -- Locate Using Screen Entry Criteria --
  261.   CASE AnsFL = "4"
  262.     CLEAR
  263.     ScrnNumFL = 1
  264.     OldScrnFL = 0
  265.     @ 24,0 SAY "Initializing Variables"
  266.     ActionFL = "INITIAL"
  267.     DO ActProFL
  268.     @ 24,0
  269.  
  270.     CriteriaFL = .T.
  271.     DO WHILE CriteriaFL
  272.       IF ScrnNumFL<>OldScrnFL
  273.         ActionFL = "DISPLAY"
  274.         DO ActProFL
  275.  
  276.         * -- Do Calculations For All Fields --
  277.  
  278.         ActionFL="GET"
  279.         DO ActProFL
  280.         CLEAR GETS
  281.         SET COLOR TO 15/0, 0/7
  282.         OldScrnFL = ScrnNumFL
  283.       ENDIF
  284.  
  285.       @ 24,0 SAY "Enter search criteria ..."
  286.       DO CASE
  287.       * -- From Screen B:LOGBOEK --
  288.       CASE ScrnNumFL=1
  289.         SET COLOR TO GR/B,GR/B
  290.         @ 7,18 GET XSTATION PICT "!!!!!!!!!!!!"
  291.       ENDCASE
  292.  
  293.       READ
  294.       SET COLOR TO 15/0, 0/7
  295.       @ 24,0
  296.  
  297.       * -- Get User Response --
  298.       AnsFL = " "
  299.       DO WHILE .NOT. AnsFL$"QE12"
  300.         @ 24,0 SAY "[E]dit Screen, [1] Begin Search From Top ";
  301.         +"[2] Begin Search At Record#, [Q]uit " GET AnsFL PICT "!"
  302.         READ
  303.       ENDDO
  304.       @ 24,0
  305.  
  306.       * -- Start Search From Top Of File --
  307.       IF AnsFL = "1"
  308.         GOTO TOP
  309.         AnsFL = "B"
  310.       ENDIF
  311.  
  312.       * -- Start Search From Record Number Entered by User --
  313.       IF AnsFL = "2"
  314.         RecNumFL = 0
  315.         @ 24,0 SAY "Enter Record #:" GET RecNumFL PICT "999999" RANGE 0, MaxRecFL
  316.         READ
  317.         IF RecNumFL = 0
  318.           @ 24,0
  319.           RELE RecNumFL
  320.           LOOP
  321.         ENDIF
  322.         GOTO RecNumFL
  323.         RELE RecNumFL
  324.         AnsFL = "B"
  325.         @ 24,0
  326.       ENDIF
  327.  
  328.       DO CASE
  329.       * -- Edit Criteria On Current Screen --
  330.       CASE AnsFL = "E"
  331.         LOOP
  332.  
  333.       * -- Begin Search Based On Criteria Entered --
  334.       CASE AnsFL = "B"
  335.         *
  336.         * -- Modification #6 See Manual --
  337.         *
  338.         * -- Build SearchFL Based on Criteria Entered --
  339.         SearchFL = ".T."
  340.         IF SUBSTR(XSTATION,1,1)<>" "
  341.           SearchFL=SearchFL+".AND. UPPER(STATION)=UPPER(TRIM(XSTATION))"
  342.         ENDIF
  343.  
  344.         @ 24,0 SAY "Searching..."
  345.         LOCATE NEXT 65000 FOR &SearchFL
  346.         IF EOF()
  347.           @ 24,0 SAY "Record Not In The File. Press Any Key"
  348.           SET CONSOLE OFF
  349.           WAIT
  350.           SET CONSOLE ON
  351.           @ 24,0
  352.           GOTO TOP
  353.           LOOP
  354.         ENDIF
  355.         @ 24,0
  356.         CriteriaFL = .F.
  357.  
  358.       * -- Next Screen (If On Last Screen Then Goto First Screen) --
  359.       CASE AnsFL = "N"
  360.         ScrnNumFL = ScrnNumFL+1
  361.         IF ScrnNumFL>MaxScrnFL
  362.           ScrnNumFL = 1
  363.         ENDIF
  364.         LOOP
  365.  
  366.       * -- Previous Screen (If On First Screen Then Goto Last Screen) --
  367.       CASE AnsFL = "P"
  368.         ScrnNumFL = ScrnNumFL-1
  369.         IF ScrnNumFL<1
  370.           ScrnNumFL = MaxScrnFL
  371.         ENDIF
  372.         LOOP
  373.  
  374.       * -- Quit (Return To Lookup Menu) --
  375.       CASE AnsFL = "Q"
  376.         RELE CriteriaFL
  377.         EXIT
  378.       ENDCASE
  379.  
  380.     ENDDO CriteriaFL
  381.     RELE CriteriaFL
  382.     IF AnsFL = "Q"
  383.       LOOP
  384.     ENDIF
  385.  
  386.   * -- Locate Using Free Form Criteria Search --
  387.   CASE AnsFL = "5"
  388.     USE LOGBOEK.FLD
  389.     IF FILE("LOGBOEK.LCM")
  390.       RESTORE FROM LOGBOEK.LCM ADDITIVE
  391.     ELSE
  392.       SearchFL1 = 'FIELD_NAME = "<EXPRESSION>"'+SPACE(51)
  393.       SearchFL2 = SPACE(78)
  394.     ENDIF
  395.     BadTypeFL = .T.
  396.     FieldsFL = .T.
  397.     AnsFL = "D"
  398.     CLEAR
  399.     @ 1,0 SAY "╔══════════════════════════════════════════════════════════════════════════════╗"
  400.     @ 2,0 SAY "║"
  401.     @ 2,22 SAY "Locate Using Free Form Criteria Entry"
  402.     @ 2,79 SAY "║"
  403.     @ 3,0 SAY "║"
  404.     @ 3,79 SAY "║"
  405.     @ 4,0 SAY "║"
  406.     @ 4,79 SAY "║"
  407.     @ 5,0 SAY "╟──────────────────────────────────────────────────────────────────────────────╢"
  408.     @ 6,0 SAY "║"
  409.     @ 6,79 SAY "║"
  410.     @ 7,0 SAY "║"
  411.     @ 7,79 SAY "║"
  412.     @ 8,0 SAY "╙──────────────────────────────────────────────────────────────────────────────╜"
  413.     @ 6,1 GET SearchFL1
  414.     @ 7,1 GET SearchFL2
  415.     CLEAR GETS
  416.     DO WHILE BadTypeFL
  417.       IF FieldsFL
  418.         IF AnsFL = "U"
  419.           SKIP -24
  420.           @ 9,0 CLEAR
  421.           @ 9,0 SAY "┌───────────── FIELD LISTING ─────────────┐"
  422.           LIST NEXT 12 OFF
  423.           IF EOF()
  424.             ? " ****************** END ****************** "
  425.           ENDIF
  426.         ENDIF
  427.  
  428.         IF AnsFL = "D" .AND. .NOT. EOF()
  429.           @ 9,0 CLEAR
  430.           @ 9,0 SAY "┌───────────── FIELD LISTING ─────────────┐"
  431.           LIST NEXT 12 OFF
  432.           IF EOF()
  433.             ? " ****************** END ****************** "
  434.           ENDIF
  435.         ENDIF
  436.         FieldsFL = .F.
  437.       ENDIF
  438.  
  439.       * -- Get User Response --
  440.       OptionFL = .T.
  441.       DO WHILE OptionFL
  442.         AnsFL = " "
  443.         DO WHILE .NOT. AnsFL$"EUDMQ12"
  444.           @ 24,0 SAY "[E]dit, [U]p Scroll Fields, [D]own Scroll Fields,";
  445.           +" [M]ore Commands, [Q]uit" GET AnsFL PICT "!"
  446.           READ
  447.         ENDDO
  448.         @ 24,0
  449.         IF AnsFL = "M"
  450.           AnsFL = " "
  451.           DO WHILE .NOT. AnsFL$"12EUDMQ"
  452.             @ 24,0 SAY "[1] Begin Search From Top, [2] Begin Search From Record #,";
  453.             + " [M]ore Commands" GET AnsFL PICT "!"
  454.             READ
  455.           ENDDO
  456.           @ 24,0
  457.         ENDIF
  458.         IF AnsFL = "M"
  459.           LOOP
  460.         ENDIF
  461.         OptionFL = .F.
  462.       ENDDO
  463.       RELE OptionFL
  464.  
  465.       * -- Start Search From Top Of File --
  466.       IF AnsFL = "1"
  467.         USE
  468.         USE LOGBOEK
  469.         GOTO TOP
  470.         AnsFL = "B"
  471.       ENDIF
  472.  
  473.       * -- Start Search From Record Number Entered by User --
  474.       IF AnsFL = "2"
  475.         RecNumFL = 0
  476.         @ 24,0 SAY "Enter Record #:" GET RecNumFL PICT "999999" RANGE 0, MaxRecFL
  477.         READ
  478.         IF RecNumFL = 0
  479.           RELE RecNumFL
  480.           @ 24,0
  481.           LOOP
  482.         ENDIF
  483.         USE
  484.         USE LOGBOEK
  485.         GOTO RecNumFL
  486.         RELE RecNumFL
  487.         AnsFL = "B"
  488.         @ 24,0
  489.       ENDIF
  490.  
  491.       DO CASE
  492.       * -- Edit Criteria --
  493.       CASE AnsFL = "E"
  494.         @ 6,1 GET SearchFL1
  495.         @ 7,1 GET SearchFL2
  496.         @ 4,1 SAY "Enter/Edit Search Criteria ..."
  497.         READ
  498.         SET COLOR TO 15/0, 0/7
  499.         @ 4,1 SAY SPACE(40)
  500.         LOOP
  501.  
  502.       * -- Display More Fields --
  503.       CASE AnsFL = "U" .OR. AnsFL = "D"
  504.         FieldsFL = .T.
  505.         LOOP
  506.  
  507.       * -- Begin Search Based On Criteria Entered --
  508.       CASE AnsFL = "B"
  509.         SearchFL = SearchFL1+SearchFL2
  510.         IF TYPE(TRIM('&SearchFL'))<>"L"
  511.           @ 24,0 SAY "You have entered the criteria incorrectly, Press Any Key"
  512.           SET CONSOLE OFF
  513.           WAIT
  514.           SET CONSOLE ON
  515.           USE
  516.           USE LOGBOEK.FLD
  517.           @ 24,0
  518.           LOOP
  519.         ELSE
  520.           @ 24,0 SAY "Searching..."
  521.           LOCATE NEXT 65000 FOR &SearchFL
  522.           IF EOF()
  523.             @ 24,0  SAY "Record Not In The File. Press Any Key"
  524.             SET CONSOLE OFF
  525.             WAIT
  526.             SET CONSOLE ON
  527.             USE
  528.             USE LOGBOEK.FLD
  529.             @ 24,0
  530.             LOOP
  531.           ENDIF
  532.           SAVE TO LOGBOEK.LCM ALL LIKE SearchFL*
  533.           BadTypeFL = .F.
  534.         ENDIF
  535.         @ 24,0
  536.  
  537.       * -- Quit To Lookup Menu --
  538.       CASE AnsFL = "Q"
  539.         BadTypeFL = .F.
  540.       ENDCASE
  541.  
  542.     ENDDO BadTypeFL
  543.     IF AnsFL = "Q"
  544.       RELE SearchFL1, SearchFL2, BadTypeFL, FieldsFL
  545.       LOOP
  546.     ENDIF
  547.     ScrnNumFL = 1
  548.     OldScrnFL = 0
  549.     RELE searchFL1, searchFL2, BadTypeFL, FieldsFL
  550.  
  551.   *
  552.   * -- Modification #7 See Manual --
  553.   *
  554.   * -- Fast Find A Record --
  555.   CASE AnsFL = "6"
  556.     * --
  557.     ActionFL = "INITIAL"
  558.     DO ActProFL
  559.  
  560.     USE LOGBOEK
  561.     SET INDEX TO LOGBOEK
  562.     CLEAR
  563.     @ 1,0 SAY "╔══════════════════════════════════════════════════════════════════════════════╗"
  564.     @ 2,0 SAY "║"
  565.     @ 2,31 SAY "FAST FIND BY INDEX"
  566.     @ 2,79 SAY "║"
  567.     @ 3,0 SAY "║"
  568.     @ 3,79 SAY "║"
  569.     @ 4,0 SAY "║  FILE: "+"LOGBOEK"
  570.     @ 4,64 SAY "RECORDS:"+STR(MaxRecFL,6)+" ║"
  571.     @ 5,0 SAY "╚══════════════════════════════════════════════════════════════════════════════╝"
  572.     @ 9,0 SAY "┌──────────────────────────────────────────────────────────────────────────────┐"
  573.     @ 10,0 SAY "│"
  574.     @ 10,79 SAY "│"
  575.     @ 11,0 SAY "│"
  576.     @ 11,79 SAY "│"
  577.     @ 12,0 SAY "│"
  578.     @ 12,79 SAY "│"
  579.     @ 13,0 SAY "└──────────────────────────────────────────────────────────────────────────────┘"
  580.     @ 16,0 SAY "INDEX IS ON:"
  581.     @ 18,0 SAY "STATION"
  582.     NotFoundFL = .T.
  583.     DO WHILE NotFoundFL
  584.       @ 11,2 SAY "Enter STATION......." GET XSTATION PICT "!!!!!!!!!!!!"
  585.       @ 8,0 SAY "Enter first field of index for the find ... "
  586.       READ
  587.       @ 8,0 SAY SPACE(50)
  588.  
  589.       * -- Get User Response --
  590.       AnsFL = " "
  591.       DO WHILE .NOT. AnsFL$"QEB"
  592.         @ 24,0 SAY "[E]dit Criteria, [B]egin Search, [Q]uit " GET AnsFL PICT "!"
  593.         READ
  594.       ENDDO
  595.       @ 24,0
  596.  
  597.       DO CASE
  598.       * -- Quit To Lookup Menu --
  599.       CASE AnsFL = "Q"
  600.         NotFoundFL = .F.
  601.         SearchFL = ".F."
  602.         EXIT
  603.  
  604.       * -- Edit Criteria --
  605.       CASE AnsFL = "E"
  606.         LOOP
  607.  
  608.       * -- Begin Search --
  609.       CASE AnsFL = "B"
  610.         FindFL = UPPER(TRIM(XSTATION))
  611.         IF LEN("&FindFL") = 0
  612.           FindFL = " "
  613.         ENDIF
  614.         FIND "&FindFL"
  615.         IF EOF()
  616.           @ 24,0 SAY "Record Not Found, Press Any Key ..."
  617.           SET CONSOLE OFF
  618.           WAIT
  619.           SET CONSOLE ON
  620.           @ 24,0
  621.           LOOP
  622.         ELSE
  623.           NotFoundFL = .F.
  624.           SearchFL = ".T."
  625.         ENDIF
  626.         @ 24,0
  627.       ENDCASE
  628.     ENDDO NotFoundFL
  629.     IF .NOT. NotFoundFL .AND. .NOT. &SearchFL
  630.       RELE FindFL, NotFoundFL, SearchFL
  631.       LOOP
  632.     ENDIF
  633.     ScrnNumFL = 1
  634.     OldScrnFL = 0
  635.     RELE FindFL, NotFoundFL
  636.  
  637.   * -- Turn Index ON/OFF --
  638.   CASE AnsFL = "7"
  639.     IF InxFL = "OFF"
  640.       InxFL = "ON "
  641.       SET INDEX TO LOGBOEK
  642.     ELSE
  643.       InxFL = "OFF"
  644.       SET INDEX TO
  645.     ENDIF
  646.     LOOP
  647.   ENDCASE
  648.  
  649.   * -- Start of main program if record is found in file. --
  650.   * -- Skip through records & screens. --
  651.   *
  652.   ActionFL = "RETRIEVE"
  653.   DO ActProFL
  654.  
  655.   * -- Do Calculations On Non-File Variables. --
  656.  
  657.   ModCheckFL = .F.
  658.   LoopRecFL = .T.
  659.   PrevRecFL = 0
  660.  
  661.   DO WHILE LoopRecFL
  662.     ScrnNumFL = 1
  663.     IF ScrnNumFL<>OldScrnFL
  664.       ActionFL = "DISPLAY"
  665.       Do ActProFL
  666.     ENDIF
  667.     IF RECNO()<>PrevRecFL .OR. ScrnNumFL<>OldScrnFL
  668.       ActionFL = "GET"
  669.       DO ActProFL
  670.       CLEAR GETS
  671.       SET COLOR TO 15/0, 0/7
  672.       IF DELETED()
  673.         DelFL = " *DELETED*"
  674.       ELSE
  675.         DelFL = "          "
  676.       ENDIF
  677.       PrevRecFL = RECNO()
  678.       OldScrnFL = 1
  679.     ENDIF
  680.     @ 0,0 SAY "Record # "+STR(RECNO(),5)+DelFL
  681.  
  682.     * -- Get User Response --
  683.     AnsFL = " "
  684.     DO WHILE .NOT. AnsFL$"ENPSQ"
  685.       @ 24,0 SAY ;
  686.       "[E]dit, [S]kip n Records, [N]ext OR [P]rev Record, [Q]uit ";
  687.       GET AnsFL PICT "!"
  688.       READ
  689.     ENDDO
  690.     @ 24,0
  691.  
  692.     DO CASE
  693.     * -- Edit Record --
  694.     CASE AnsFL = "E"
  695.       EditFL = .T.
  696.       DO WHILE EditFL
  697.         IF ScrnNumFL<>OldScrnFL
  698.           ActionFL = "DISPLAY"
  699.           DO ActProFL
  700.         ENDIF
  701.         IF RECNO()<>PrevRecFL .OR. ScrnNumFL<>OldScrnFL
  702.           ActionFL = "GET"
  703.           DO ActProFL
  704.           CLEAR GETS
  705.           SET COLOR TO 15/0, 0/7
  706.           PrevRecFL = RECNO()
  707.           OldScrnFL = ScrnNumFL
  708.         ENDIF
  709.         @ 0,0 SAY "Record # "+STR(RECNO(),5)+DelFL
  710.  
  711.         * -- Get User Response --
  712.         AnsFL = " "
  713.         DO WHILE .NOT. AnsFL$"MDUQ"
  714.           @ 24,0 SAY "[M]odify Data, [D]elete, [U]n-delete, [Q]uit & Save";
  715.           GET AnsFL PICT "!"
  716.           READ
  717.         ENDDO
  718.         @ 24,0
  719.  
  720.         DO CASE
  721.         * -- Modify Data --
  722.         CASE AnsFL = "M"
  723.           ModCheckFL = .T.
  724.           @ 24,0 SAY "Enter OR Re-Enter Information"
  725.           ActionFL = "GET"
  726.           DO ActProFL
  727.           READ
  728.           SET COLOR TO 15/0, 0/7
  729.           @ 24,0
  730.  
  731.           @ 24,0 SAY "Edit Calculations OR Press 'PgDn' To Exit."
  732.           * -- Do Calculations For All Fields And Re-Display --
  733.           DO CASE
  734.           ENDCASE
  735.  
  736.           READ
  737.           SET COLOR TO 15/0, 0/7
  738.           @ 24,0
  739.  
  740.         * -- Delete Record --
  741.         CASE AnsFL = "D"
  742.           @ 24,0 SAY "Deleting Record"
  743.           DELETE
  744.           DelFL = " *DELETED*"
  745.           @ 0,0 SAY "Record # "+STR(RECNO(),5)+DelFL
  746.           @ 24,0
  747.           LOOP
  748.  
  749.         * -- Un-Delete Record --
  750.         CASE AnsFL = "U"
  751.           @ 24,0 SAY "Un-Deleting Record"
  752.           RECALL
  753.           DelFL =  "          "
  754.           @ 0,0 SAY "Record # "+STR(RECNO(),5)+DelFL
  755.           @ 24,0
  756.           LOOP
  757.  
  758.         * -- Next Screen (If On Last Screen Then Goto First Screen) --
  759.         CASE AnsFL = "N"
  760.           ScrnNumFL = ScrnNumFL+1
  761.           IF ScrnNumFL>MaxScrnFL
  762.             ScrnNumFL = 1
  763.           ENDIF
  764.           LOOP
  765.  
  766.         * -- Previous Screen (If On First Screen Then Goto Last Screen) --
  767.         CASE AnsFL = "P"
  768.           ScrnNumFL = ScrnNumFL-1
  769.           IF ScrnNumFL<1
  770.             ScrnNumFL = MaxScrnFL
  771.           ENDIF
  772.           LOOP
  773.  
  774.         * -- Quit (Edit Mode) --
  775.         CASE AnsFL = "Q"
  776.           IF ModCheckFL
  777.             * -- Get User Response --
  778.             AnsFL = " "
  779.             DO WHILE .NOT. AnsFL$"YN"
  780.               @ 24,0 SAY "Save Record? Y/N:" GET AnsFL PICT "!"
  781.               READ
  782.             ENDDO
  783.             @ 24,0
  784.  
  785.             * -- Save Record --
  786.             IF AnsFL = "Y"
  787.               IF InxFL = "OFF"
  788.                 RecNumFL = RECNO()
  789.                 SET INDEX TO LOGBOEK
  790.                 GOTO RecNumFL
  791.                 @ 24,0 SAY "Saving Changes ..."
  792.                 ActionFL = "REPLACE"
  793.                 DO ActProFL
  794.                 SET INDEX TO
  795.                 GOTO RecNumFL
  796.                 RELE RecNumFL
  797.               ELSE
  798.                 @ 24,0 SAY "Saving Changes ..."
  799.                 ActionFL = "REPLACE"
  800.                 DO ActProFL
  801.               ENDIF
  802.               @ 24,0
  803.             ELSE
  804.               ActionFL = "RETRIEVE"
  805.               DO ActProFL
  806.  
  807.               * -- Do Calculations For All Fields --
  808.  
  809.               ActionFL = "GET"
  810.               DO ActProFL
  811.               CLEAR GETS
  812.               SET COLOR TO 15/0, 0/7
  813.             ENDIF
  814.             ModCheckFL = .F.
  815.           ENDIF
  816.           EXIT
  817.         ENDCASE
  818.       ENDDO EditFL
  819.       RELE EditFL
  820.       LOOP
  821.  
  822.     * -- Skip n Records --
  823.     CASE AnsFL = "S"
  824.       PrevRecFL = RECNO()
  825.       RecNumFL = 0
  826.       @ 24,0 SAY "Enter number of records to skip: " GET RecNumFL PICT "999999"
  827.       READ
  828.       IF RecNumFL>0 .AND. EOF()
  829.         LOOP
  830.       ENDIF
  831.       SKIP RecNumFL
  832.       IF EOF()
  833.         SKIP -1
  834.       ENDIF
  835.       ActionFL = "RETRIEVE"
  836.       DO ActProFL
  837.  
  838.       * -- Do Calculations For Non-File Variables --
  839.  
  840.       RELE RecNumFL
  841.       @ 24,0
  842.       LOOP
  843.  
  844.     * -- Next Record --
  845.     CASE AnsFL = "N"
  846.       PrevRecFL = RECNO()
  847.       @ 24,0 SAY "Searching For Next Record"
  848.       RecNumFL = RECNO()
  849.       SKIP +1
  850.       LOCATE NEXT 65000 FOR &SearchFL
  851.       IF EOF()
  852.         @ 24,0 SAY "No More Records Found, Press Any Key ..."
  853.         SET CONSOLE OFF
  854.         WAIT
  855.         SET CONSOLE ON
  856.         GOTO RecNumFL
  857.       ELSE
  858.         ActionFL = "RETRIEVE"
  859.         DO ActProFL
  860.  
  861.         * -- Do Calculations For Non-File Variables --
  862.  
  863.       ENDIF
  864.       RELE RecNumFL
  865.       @ 24,0
  866.       LOOP
  867.  
  868.     * -- Previous Record --
  869.     CASE AnsFL = "P"
  870.       PrevRecFL = RECNO()
  871.       @ 24,0 SAY "Searching For Previous Record"
  872.       RecNumFL = RECNO()
  873.       IF .NOT. BOF()
  874.         SKIP -1
  875.       ENDIF
  876.       IF .NOT. (&SearchFL)
  877.         DO WHILE .NOT. BOF()
  878.           IF .NOT. (&SearchFL)
  879.             SKIP -1
  880.           ENDIF
  881.         ENDDO
  882.       ENDIF
  883.       IF BOF()
  884.         @ 24,0
  885.         @ 24,0 SAY "No More Records Found, Press Any Key ..."
  886.         SET CONSOLE OFF
  887.         WAIT
  888.         SET CONSOLE ON
  889.         GOTO RecNumFL
  890.       ELSE
  891.         ActionFL = "RETRIEVE"
  892.         DO ActProFL
  893.  
  894.         * -- Do Calculations For Non-File Variables --
  895.  
  896.       ENDIF
  897.       RELE RecNumFL
  898.       @ 24,0
  899.       LOOP
  900.  
  901.     * -- Quit To Lookup Menu --
  902.     CASE AnsFL = "Q"
  903.       USE
  904.       LoopRecFL = .F.
  905.     ENDCASE
  906.  
  907.   ENDDO LoopRecFL
  908.   RELE LoopRecFL, PrevRecFL, ModCheckFL
  909. ENDDO .T.
  910. RETURN
  911.  
  912. *********************
  913. PROCEDURE DBInfFL
  914. *********************
  915. CLEAR
  916. @ 1,0 SAY "╔══════════════════════════════════════════════════════════════════════════════╗"
  917. @ 2,0 SAY "║"
  918. @ 2,26 SAY "DISPLAY DATABASE INFORMATION"
  919. @ 2,79 SAY "║"
  920. @ 3,0 SAY "║ FILE: "+"LOGBOEK"
  921. @ 3,79 SAY "║"
  922. @ 4,0 SAY "╚══════════════════════════════════════════════════════════════════════════════╝"
  923. @ 5,1 SAY "──────────────────────────────────────────┐ ┌─────────────────────────────────┐"
  924. @ 6,43 SAY "│ │"
  925. @ 6,79 SAY "│"
  926. @ 7,43 SAY "│ └─────────────────────────────────┘"
  927. @ 8,43 SAY "│ ┌─────────────────────────────────┐"
  928. @ 9,43 SAY "│ │"
  929. @ 9,79 SAY "│"
  930. @ 10,43 SAY "│ └─────────────────────────────────┘"
  931. @ 11,43 SAY "│"
  932. @ 12,43 SAY "│"
  933. @ 13,43 SAY "│"
  934. @ 14,43 SAY "│"
  935. @ 15,43 SAY "│"
  936. @ 16,43 SAY "│"
  937. @ 17,43 SAY "│"
  938. @ 18,43 SAY "│"
  939. @ 19,43 SAY "│"
  940. @ 20,43 SAY "│"
  941. @ 21,1 SAY "──────────────────────────────────────────┘"
  942.  
  943. FieldsFL = .T.
  944. ClrLinFL = .F.
  945. RecNumFL = 1
  946. DO WHILE .T.
  947.   USE LOGBOEK
  948.   IF EOF()
  949.     MaxRecFL = 0
  950.   ELSE
  951.     GO BOTTOM
  952.     MaxRecFL = RECNO()
  953.   ENDIF
  954.   @ 6,47 SAY "There Are "+STR(MaxRecFL,5)+" Record(s)."
  955.   IF FieldsFL
  956.     IF ClrLinFL
  957.       CntFL = 1
  958.       DO WHILE CntFL<15
  959.         ? SPACE(43)
  960.         CntFL = CntFL+1
  961.       ENDDO
  962.       RELE CntFL
  963.     ENDIF
  964.     USE
  965.     USE LOGBOEK.FLD
  966.     GOTO RecNumFL
  967.     @ 5,0 SAY " "
  968.     LIST NEXT 13 OFF
  969.     IF EOF()
  970.       ? " ****************** END ****************** "
  971.       GOTO TOP
  972.     ENDIF
  973.     RecNumFL = RECNO()
  974.     USE
  975.     FieldsFL = .F.
  976.   ENDIF
  977.  
  978.   * -- Get User Response --
  979.   AnsFL = " "
  980.   DO WHILE .NOT. AnsFL$"MRPQ"
  981.     @ 24,0 SAY "[M]ore Fields, [R]e-Index, [P]ack, [Q]uit " GET AnsFL PICT "!"
  982.     READ
  983.   ENDDO
  984.   @ 24,0
  985.  
  986.   DO CASE
  987.   * -- Display More Fields --
  988.   CASE AnsFL = "M"
  989.     ClrLinFL = .T.
  990.     FieldsFL = .T.
  991.     LOOP
  992.  
  993.   * -- Pack Database --
  994.   CASE AnsFL = "P"
  995.     USE LOGBOEK
  996.     SET INDEX TO LOGBOEK
  997.     @ 9,47 SAY "Please Wait While Packing..."
  998.     PACK
  999.     @ 9,47 SAY SPACE(30)
  1000.     LOOP
  1001.  
  1002.   * -- Re-Index File --
  1003.   CASE AnsFL = "R"
  1004.     USE LOGBOEK
  1005.     SET INDEX  TO LOGBOEK
  1006.     @ 9,47 SAY "Please Wait While Indexing..."
  1007.     INDEX ON UPPER(&IndexFL) TO LOGBOEK
  1008.     @ 9,47 SAY SPACE (30)
  1009.     LOOP
  1010.  
  1011.   * -- Quit To Main Menu --
  1012.   CASE AnsFL = "Q"
  1013.     USE
  1014.     RELE FieldsFL, ClrLinFL, RecNumFL
  1015.     EXIT
  1016.   ENDCASE
  1017. ENDDO .T.
  1018. RETURN
  1019.  
  1020. *
  1021. * -- Modification #8 See Manual
  1022. *
  1023. *********************
  1024. PROCEDURE ActProFL
  1025. *********************
  1026.  
  1027. DO CASE
  1028. * -- Display Screen --
  1029. CASE ActionFL = "DISPLAY"
  1030.   DO CASE
  1031.   CASE ScrnNumFL=1
  1032.     * -- Screen Display B:LOGBOEK.SCR
  1033.     SET COLOR TO W+/B,GR/B
  1034.     CLEAR
  1035. SET COLOR TO GR/B
  1036. @ 2,4 SAY "LOG FROM PA3CPL."
  1037. @ 3,3 SAY "╔═════════════════════════════════════════════════════════════════════════╗"
  1038. @ 4,3 SAY "║"
  1039. @ 4,77 SAY "║"
  1040. @ 5,3 SAY "║"
  1041. @ 5,8 SAY "DATUM"
  1042. @ 5,16 SAY ":   /  /"
  1043. @ 5,49 SAY "FREQUENTIE :"
  1044. @ 5,66 SAY "MHz."
  1045. @ 5,77 SAY "║"
  1046. @ 6,3 SAY "║"
  1047. @ 6,77 SAY "║"
  1048. @ 7,3 SAY "║"
  1049. @ 7,8 SAY "STATION :"
  1050. @ 7,34 SAY "TIME     :        G.M.T."
  1051. @ 7,77 SAY "║"
  1052. @ 8,3 SAY "║"
  1053. @ 8,77 SAY "║"
  1054. @ 9,3 SAY "║"
  1055. @ 9,8 SAY "REPORT"
  1056. @ 9,16 SAY ": SEND"
  1057. @ 9,34 SAY "RECEIVED :"
  1058. @ 9,77 SAY "║"
  1059. @ 10,3 SAY "║"
  1060. @ 10,77 SAY "║"
  1061. @ 11,3 SAY "║"
  1062. @ 11,8 SAY "QRA     :"
  1063. @ 11,34 SAY "AFSTAND  :"
  1064. @ 11,53 SAY "KM."
  1065. @ 11,77 SAY "║"
  1066. @ 12,3 SAY "║"
  1067. @ 12,77 SAY "║"
  1068. @ 13,3 SAY "║"
  1069. @ 13,8 SAY "MODE    :"
  1070. @ 13,25 SAY "(T/MS/ES/AU/EME/SAT)    VIA :"
  1071. @ 13,77 SAY "║"
  1072. @ 14,3 SAY "║"
  1073. @ 14,77 SAY "║"
  1074. @ 15,3 SAY "║"
  1075. @ 15,8 SAY "NAAM    :"
  1076. @ 15,77 SAY "║"
  1077. @ 16,3 SAY "║"
  1078. @ 16,77 SAY "║"
  1079. @ 17,3 SAY "║"
  1080. @ 17,8 SAY "RIG/ANT"
  1081. @ 17,16 SAY ":"
  1082. @ 17,43 SAY "POWER :      WATT."
  1083. @ 17,77 SAY "║"
  1084. @ 18,3 SAY "║"
  1085. @ 18,77 SAY "║"
  1086. @ 19,3 SAY "║"
  1087. @ 19,8 SAY "REMARKS :"
  1088. @ 19,77 SAY "║"
  1089. @ 20,3 SAY "║"
  1090. @ 20,77 SAY "║"
  1091. @ 21,3 SAY "╚═════════════════════════════════════════════════════════════════════════╝"
  1092. SET COLOR TO W+/B, /W
  1093.   ENDCASE
  1094.   RETURN
  1095.  
  1096. * -- Initialize Data Variables --
  1097. CASE ActionFL = "INITIAL"
  1098.   RESTORE FROM LOGBOEK.PUB ADDITIVE
  1099.   RETURN
  1100.  
  1101. * -- Get Data Input --
  1102. CASE ActionFL = "GET"
  1103.   DO CASE
  1104.   * -- From Screen B:LOGBOEK --
  1105.   CASE ScrnNumFL=1
  1106.     SET COLOR TO GR/B,GR/B
  1107.     @ 5,18 GET XDATUM
  1108.     @ 5,62 GET XFREQ PICT "999"
  1109.     @ 7,18 GET XSTATION PICT "!!!!!!!!!!!!"
  1110.     @ 7,45 GET XTIME PICT "99!99"
  1111.     @ 9,23 GET XSEND PICT "99!X999X"
  1112.     @ 9,45 GET XRECEIVED PICT "99!X999X"
  1113.     @ 11,18 GET XQRA PICT "!!!!!!"
  1114.     @ 11,45 GET XAFSTAND PICT "999999" RANGE 0,999999
  1115.     @ 13,18 GET XMODE PICT "!!!"
  1116.     @ 13,55 GET XVIA PICT "!!!!!!!!!!"
  1117.     @ 15,18 GET XNAAM PICT "XXXXXXXXXXXXXXXXXXX"
  1118.     @ 17,18 GET XRIG PICT "!!!!!!!!!!!!!!!!!!!"
  1119.     @ 17,51 GET XWATT PICT "9999" RANGE 0,9999
  1120.     @ 19,18 GET XREMARKS PICT "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  1121.   ENDCASE
  1122.   RETURN
  1123.  
  1124. * -- Store Data From DBF File Into Variable Names LOGBOEK --
  1125. CASE ActionFL = "RETRIEVE"
  1126.   * -- From Screen B:LOGBOEK --
  1127.   XDATUM = DATUM
  1128.   XFREQ = FREQ
  1129.   XSTATION = STATION
  1130.   XTIME = TIME
  1131.   XSEND = SEND
  1132.   XRECEIVED = RECEIVED
  1133.   XQRA = QRA
  1134.   XAFSTAND = AFSTAND
  1135.   XMODE = MODE
  1136.   XVIA = VIA
  1137.   XNAAM = NAAM
  1138.   XRIG = RIG
  1139.   XWATT = WATT
  1140.   XREMARKS = REMARKS
  1141.   RETURN
  1142.  
  1143. * -- Put Data From Variable Names Into DBF File LOGBOEK --
  1144. CASE ActionFL = "REPLACE"
  1145.   * -- From Screen B:LOGBOEK --
  1146.     REPLACE DATUM WITH XDATUM,FREQ WITH XFREQ,STATION WITH XSTATION
  1147.     REPLACE TIME WITH XTIME,SEND WITH XSEND,RECEIVED WITH XRECEIVED
  1148.     REPLACE QRA WITH XQRA,AFSTAND WITH XAFSTAND,MODE WITH XMODE,VIA WITH XVIA
  1149.     REPLACE NAAM WITH XNAAM,RIG WITH XRIG,WATT WITH XWATT
  1150.     REPLACE REMARKS WITH XREMARKS
  1151.   RETURN
  1152.  
  1153. OTHERWISE
  1154.   @ 0,0
  1155.   @ 0,0 SAY "Invalid Action Word "+ActionFL+". Press Any Key."
  1156.   SET CONSOLE OFF
  1157.   WAIT
  1158.   SET CONSOLE ON
  1159.   @ 0,0
  1160.   RETURN
  1161. ENDCASE
  1162. RETURN
  1163.  
  1164.