home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / workdb.zip / SEARCH1.PRG < prev    next >
Text File  |  1988-08-15  |  19KB  |  525 lines

  1. *!!* dBASE CONVERT - dBASE III File Conversion Aid  v2.01  1/10/86
  2. *
  3. SET HEADING OFF
  4. SET SAFETY OFF
  5. NOTE - SEARCH1.SIG - COMPREHENSIVE ORDERS SEARCH COMMAND FILE
  6. NOTE -
  7. NOTE - THIS COMMAND FILE WAS CREATED USING - fastBASE (TM)   (VERSION 1.3)
  8. NOTE -      "THE dBASE II COMMAND FILE GENERATOR" DEVELOPED BY:
  9. NOTE -              FOURCOLOR DATA SYSTEMS INC.
  10. NOTE -              7011 MALABAR STREET
  11. NOTE -              DAYTON, OHIO 45459
  12. NOTE -              PHONE: (513) 433-3780
  13. NOTE -
  14. NOTE - SEARCH BY INDEX         - OPERATOR CAN SEARCH DATABASE IN ORDER
  15. NOTE -                               OF ANY INDEX FILE.
  16. NOTE -
  17. NOTE - INDEX FILES             - INDICES ARE OF THE FOLLOWING FORM:
  18. NOTE -                               A. CHARACTER FIELDS ARE MADE UPPERCASE.
  19. NOTE -                                  (THIS WILL ALLOW THE FIND COMMAND TO
  20. NOTE -                                   IGNORE UPPER AND LOWER CASE
  21. NOTE -                                   DISTINCTIONS.)
  22. NOTE -                               B. ALL NUMERIC FIELDS ARE CONVERTED TO
  23. NOTE -                                  CHARACTER STRINGS.
  24. NOTE -                               C. EXAMPLE:
  25. NOTE -                                      IF AN INDEX CONSISTS OF A NUMERIC
  26. NOTE -                                      FIELD - FIELDNUM (N,8,2) AND A
  27. NOTE -                                      CHARACTER FIELD - FIELDCHAR, THEN
  28. NOTE -                                      FASTBASE WILL DEFINE THE INDEX AS
  29. NOTE -                                      STR(FIELDNUM,8,2) + !(FIELDCHAR).
  30. NOTE -
  31. NOTE - SEARCH BY PART OF FIELD - OPERATOR CAN SELECT ANY CHARACTER
  32. NOTE -                               FIELD IN THE DATABASE. THEN OPERATOR
  33. NOTE -                               CAN ENTER ANY POSSIBLE SUB-STRING.
  34. NOTE -                               SEARCH WILL THEN DISPLAY EVERY
  35. NOTE -                               RECORD WITH THIS SUB-STRING IN ANY
  36. NOTE -                               PART OF THE SELECTED FIELD.
  37. NOTE -
  38. NOTE - IF ANY RECORD IS SELECTED BY OPERATOR, THEN THIS SEARCH ROUTINE
  39. NOTE -     WILL RETURN TO THE CALLING COMMAND FILE THE DBASE II RECORD
  40. NOTE -     NUMBER IN THE MEMORY VARIABLE 'RECNO' OTHERWISE 'RECNO'
  41. NOTE -     WILL HAVE THE VALUE ZERO.
  42. NOTE -
  43. NOTE - WHEN CALLING THIS SEARCH ROUTINE, A MEMORY VARIABLE WITH THE
  44. NOTE -     NAME 'DR' MUST EXIST. FURTHER THIS MEMORY VARIABLE MUST EITHER
  45. NOTE -     HAVE THE VALUE ' ' OR 'X:' WHERE X IS ANY ALPHABETIC
  46. NOTE -     CHARACTER CORRESPONDING TO A VALID DISK DRIVE (EG. A:).
  47. NOTE -
  48. STORE 'DETAILED SEARCH' TO MODE
  49. STORE CHR(PEEK(063))TO dr
  50. CLEAR
  51. @ 1,20 SAY '*** SEARCH FOR ORDERS ***'
  52. @ 3,20 SAY 'SEARCH METHOD:'
  53. @ 5,25 SAY '1. SEARCH BY INDEX'
  54. @ 6,25 SAY '2. SEARCH PART OF FIELD'
  55. STORE ' ' TO EMETH
  56. DO WHILE EMETH <> '1' .AND. EMETH <> '2'
  57.    @ 8,25 SAY '   METHOD? (1,2) ' GET EMETH
  58.    READ
  59. ENDDO
  60. IF EMETH = '1'
  61.    STORE '                    ' TO KEYVAR1
  62.    @ 10,20 SAY 'ENTER LASTNAME ' GET KEYVAR1
  63.    READ
  64.    STORE KEYVAR1 TO FINDSTRING
  65.    RELEASE KEYVAR1
  66.    USE &DR.:SIG/M.DBF INDEX &DR.:ORDERS.NDX
  67.    NOTE -
  68.    NOTE - DETERMINE RECORD NUMBER OF FIRST AND LAST RECORD IN DATABASE
  69.    NOTE -
  70.    IF RECNO() > 0
  71.       STORE RECNO() TO FIRSTREC
  72.       GOTO BOTTOM
  73.       STORE RECNO() TO LASTREC
  74.       NOTE -
  75.       NOTE - TRIM RIGHT HAND SPACES AND ZEROES FROM FINDSTRING
  76.       NOTE - ALSO SET FINDSTRING TO UPPER CASE
  77.       NOTE -
  78.       STORE TRIM(UPPER(FINDSTRING)) TO FINDSTRING
  79.       STORE .T. TO SHRINK
  80.       DO WHILE SHRINK
  81.          STORE .F. TO SHRINK
  82.          STORE .T. TO TRIMZERO
  83.          DO WHILE TRIMZERO .AND. LEN(FINDSTRING) > 1
  84.             STORE SUBSTR(FINDSTRING,LEN(FINDSTRING),1) TO LASTCHAR
  85.             IF LASTCHAR = '0' .OR. LASTCHAR = ' '
  86.                STORE SUBSTR(FINDSTRING,1,LEN(FINDSTRING)-1) TO FINDSTRING
  87.                LOOP
  88.             ENDIF
  89.             STORE .F. TO TRIMZERO
  90.          ENDDO
  91.          *!! EOF() will be true if NO FIND, and RECNO() will equal BOTTOM, not 0.
  92.          FIND '&FINDSTRING'
  93.          IF .NOT. (EOF() .OR. BOF())
  94.             STORE RECNO() TO FINDRECNO
  95.             LOOP
  96.          ENDIF
  97.          STORE FINDSTRING + '   ' TO FINDSTRING
  98.          NOTE -
  99.          NOTE - USE FIRST 3 CHARACTERS OF FINDSTRING FOR 'FIND' COMMAND
  100.          NOTE -
  101.          STORE SUBSTR(FINDSTRING,1,3) TO FINDSTRING
  102.          *!! EOF() will be true if NO FIND, and RECNO() will equal BOTTOM, not 0.
  103.          FIND '&FINDSTRING'
  104.          IF .NOT. (EOF() .OR. BOF())
  105.             STORE RECNO() TO FINDRECNO
  106.             LOOP
  107.          ENDIF
  108.          STORE FINDSTRING + ' ' TO FINDSTRING
  109.          STORE SUBSTR(FINDSTRING,1,1) TO FINDSTRING
  110.          *!! EOF() will be true if NO FIND, and RECNO() will equal BOTTOM, not 0.
  111.          FIND '&FINDSTRING'
  112.          IF .NOT. (EOF() .OR. BOF())
  113.             STORE RECNO() TO FINDRECNO
  114.             LOOP
  115.          ENDIF
  116.          GOTO TOP
  117.          STORE RECNO() TO FINDRECNO
  118.       ENDDO
  119.       STORE FINDRECNO TO STARTREC
  120.       RELEASE FINDRECNO, FINDSTRING, SHRINK, LASTCHAR, TRIMZERO
  121.       STORE .T. TO FILESRCH
  122.       STORE 'F' TO EOPTION
  123.       DO WHILE FILESRCH
  124.          NOTE -
  125.          NOTE - IF DATABASE HAS AT LEAST 10 RECORDS THEN SEARCH CAN OPERATE
  126.          NOTE -     IN 'FAST' MODE. IN THIS MODE, 10 RECORDS AT A TIME ARE
  127.          NOTE -     DISPLAYED ON THE CRT.
  128.          NOTE -
  129.          IF EOPTION = 'F'
  130.             STORE 'FAST' TO SRCHMODE
  131.             GOTO TOP
  132.             SKIP 9
  133.             IF RECNO() = LASTREC
  134.                STORE 'D' TO EOPTION
  135.             ENDIF
  136.             GOTO STARTREC
  137.          ENDIF
  138.          IF EOPTION = 'D'
  139.             STORE 'DETAIL' TO SRCHMODE
  140.          ENDIF
  141.          IF EOPTION = 'R'
  142.             STORE 0 TO RECNO
  143.             *!! Logical constant converted.
  144.             STORE .F. TO FILESRCH
  145.             LOOP
  146.          ENDIF
  147.          IF SRCHMODE = 'FAST'
  148.             STORE ' ' TO EOPTION
  149.             STORE .T. TO FASTSRCH
  150.             DO WHILE FASTSRCH
  151.                CLEAR
  152.                STORE 1 TO SEARCHLINE
  153.                STORE RECNO() TO RECNO
  154.                STORE .T. TO CHECKPOS1
  155.                DO WHILE CHECKPOS1
  156.                   IF RECNO = LASTREC
  157.                      STORE 10 TO SEARCHLINE
  158.                      SKIP - 9
  159.                      STORE .F. TO CHECKPOS1
  160.                      LOOP
  161.                   ENDIF
  162.                   SKIP 8
  163.                   IF RECNO() <> LASTREC
  164.                      SKIP - 8
  165.                      STORE .F. TO CHECKPOS1
  166.                      LOOP
  167.                   ENDIF
  168.                   IF RECNO() = LASTREC
  169.                      DO WHILE RECNO <> RECNO()
  170.                         SKIP - 1
  171.                      ENDDO
  172.                      STORE 10 TO SEARCHLINE
  173.                      STORE .T. TO CHECKPOS2
  174.                      DO WHILE CHECKPOS2
  175.                         STORE SEARCHLINE - 1 TO SEARCHLINE
  176.                         SKIP 1
  177.                         IF RECNO() = LASTREC
  178.                            STORE .F. TO CHECKPOS2
  179.                            LOOP
  180.                         ENDIF
  181.                         IF SEARCHLINE < 0
  182.                            STORE .F. TO CHECKPOS2
  183.                            LOOP
  184.                         ENDIF
  185.                      ENDDO
  186.                      SKIP - 9
  187.                      STORE .F. TO CHECKPOS1
  188.                   ENDIF
  189.                ENDDO
  190.                STORE RECNO() TO STARTREC
  191.                NOTE -
  192.                NOTE - USE THE SEARCH AND LIST REPORT CREATED BY FASTBASE, TO DISPLAY
  193.                NOTE -     10 RECORDS ON THE CRT AT ONE TIME.
  194.                NOTE -
  195.                REPORT NEXT 10 FORM &DR.:SIG/M.FRM PLAIN
  196.                @ 23,0 SAY 'N (NEXT), P (PREVIOUS), J (JUMP), D (DISPLAY),  R (RETURN).'
  197.                GOTO STARTREC
  198.                IF EOPTION = 'P'
  199.                   STORE 10 TO SEARCHLINE
  200.                   SKIP 9
  201.                   DO WHILE RECNO() <> PREVREC .AND. SEARCHLINE > 1
  202.                      STORE SEARCHLINE - 1 TO SEARCHLINE
  203.                      SKIP - 1
  204.                   ENDDO
  205.                ENDIF
  206.                IF EOPTION <> 'P'
  207.                   IF SEARCHLINE <> 1
  208.                      STORE SEARCHLINE - 1 TO SEARCHLINE
  209.                      SKIP SEARCHLINE
  210.                      STORE SEARCHLINE + 1 TO SEARCHLINE
  211.                   ENDIF
  212.                ENDIF
  213.                SET DELIMITER OFF
  214.                DO WHILE SEARCHLINE > 0 .AND. SEARCHLINE < 11
  215.                   STORE ' ' TO EOPTION
  216.                   DO WHILE EOPTION <> 'N' .AND. EOPTION <> 'P' .AND. EOPTION <> 'J' .AND. EOPT
  217.                      @ (2 * SEARCHLINE) + 1, 0 GET EOPTION
  218.                      READ
  219.                      STORE UPPER(EOPTION) TO EOPTION
  220.                      IF EOPTION = 'N' .AND. RECNO() = LASTREC
  221.                         STORE ' ' TO EOPTION
  222.                      ENDIF
  223.                      IF EOPTION = 'P' .AND. RECNO() = FIRSTREC
  224.                         STORE ' ' TO EOPTION
  225.                      ENDIF
  226.                   ENDDO
  227.                   @ (2 * SEARCHLINE) + 1, 0 SAY ' '
  228.                   IF EOPTION = 'N'
  229.                      STORE SEARCHLINE + 1 TO SEARCHLINE
  230.                      SKIP 1
  231.                      LOOP
  232.                   ENDIF
  233.                   IF EOPTION = 'P'
  234.                      STORE SEARCHLINE - 1 TO SEARCHLINE
  235.                      SKIP - 1
  236.                      STORE RECNO() TO PREVREC
  237.                      LOOP
  238.                   ENDIF
  239.                   STORE 0 TO SEARCHLINE
  240.                ENDDO
  241.                IF EOPTION = 'P'
  242.                   SKIP - 9
  243.                ENDIF
  244.                IF EOPTION = 'J'
  245.                   SET DELIMITER ON
  246.                   STORE 0 TO INCREMENT
  247.                   @ 23,0 SAY '               ENTER JUMP INCREMENT (+ OR -)
  248.                   @ 23,45 GET INCREMENT
  249.                   READ
  250.                   SET DELIMITER OFF
  251.                   IF INCREMENT > 0
  252.                      SKIP INCREMENT
  253.                   ENDIF
  254.                   IF INCREMENT < 0
  255.                      STORE 0 - INCREMENT TO INCREMENT
  256.                      SKIP - INCREMENT
  257.                   ENDIF
  258.                ENDIF
  259.                IF EOPTION = 'D' .OR.  EOPTION = 'R'
  260.                STORE .F. TO FASTSRCH
  261.                ENDIF
  262.             ENDDO
  263.             RELEASE FASTSRCH, SEARCHLINE, PREVREC, CHECKPOS1, CHECKPOS2
  264.             SET DELIMITER ON
  265.          ENDIF
  266.          IF SRCHMODE = 'DETAIL'
  267.             STORE .T. TO DETLSRCH
  268.             DO WHILE DETLSRCH
  269.                CLEAR
  270.                @ 1,25 SAY MODE
  271.                @ 2,0  SAY '+---------------------------------------'
  272.                @ 2,39 SAY '--------------------------------------+'
  273.                @ 4,5 SAY 'ORDER NUMBER                          COMPLETE'
  274.                @ 5,8 SAY 'LAST NAME                             FIRST'
  275.                @ 6,10 SAY 'ADDRESS'
  276.                @ 7,9 SAY '(line 2)'
  277.                @ 8,9 SAY '(line 3)'
  278.                @ 9,13 SAY 'CITY                             STATE              ZIP'
  279.                @ 11,2 SAY 'VOLUMES'
  280.                @ 13,3 SAY 'AMOUNT                                     ENTER             SHIP'
  281.                @ 14,2 SAY 'REMARKS'
  282.                @ 15,2 SAY 'REMARKS'
  283.                @ 17,0 SAY 'BACKORDER'
  284.                @ 18,44 SAY 'CATALOG'
  285.                @ 19,2 SAY 'SHIPPED                 SHIPPED                             UPDATE'
  286.                @ 20,0 SAY '+--------------------------------------'
  287.                @ 20,39 SAY '--------------------------------------+'
  288.                @ 4,18 GET ORDER
  289.                @ 5,18 GET LNAME
  290.                @ 5,52 GET FNAME
  291.                @ 6,18 GET ADDR1
  292.                @ 7,18 GET ADDR2
  293.                @ 8,18 GET ADDR3
  294.                @ 9,18 GET CITY
  295.                @ 9,52 GET STATE
  296.                @ 9,70 GET ZIP
  297.                @ 11,10 GET VOL1
  298.                @ 13,10 GET AMT
  299.                @ 13,52 GET ENTERED
  300.                @ 13,69 GET SHIPPED
  301.                @ 14,10 GET REM1
  302.                @ 15,10 GET REM2
  303.                @ 17,10 GET BO
  304.                @ 18,53 GET CATALOG
  305.                @ 19,10 GET BO_SHIP
  306.                @ 19,34 GET BO2_SHIP
  307.                @ 19,69 GET DAYU
  308.                @ 4,52 GET COMP
  309.                CLEAR GETS
  310.                @ 23,0 SAY 'N (NEXT), P (PREVIOUS), J (JUMP), F (FAST SEARCH), R (RETURN)'
  311.                STORE ' ' TO EOPTION
  312.                DO WHILE EOPTION <> 'N' .AND. EOPTION <> 'P' .AND. EOPTION <> 'J' .AND. EOPTION
  313.                   @ 23,74 GET EOPTION
  314.                   READ
  315.                   STORE UPPER(EOPTION) TO EOPTION
  316.                   IF EOPTION = 'N' .AND. RECNO() = LASTREC
  317.                      STORE ' ' TO EOPTION
  318.                   ENDIF
  319.                   IF EOPTION = 'P' .AND. RECNO() = FIRSTREC
  320.                      STORE ' ' TO EOPTION
  321.                   ENDIF
  322.                ENDDO
  323.                IF EOPTION = 'N'
  324.                   IF RECNO() = LASTREC
  325.                      LOOP
  326.                   ENDIF
  327.                   SKIP 1
  328.                ENDIF
  329.                IF EOPTION = 'P'
  330.                   SKIP - 1
  331.                ENDIF
  332.                IF EOPTION = 'J'
  333.                   STORE 0 TO INCREMENT
  334.                   @ 23,0 SAY '               ENTER JUMP INCREMENT (+ OR -)
  335.                   @ 23,45 GET INCREMENT
  336.                   READ
  337.                   IF ((EOF() .OR. BOF())) .OR. (INCREMENT = 0)
  338.                      LOOP
  339.                   ENDIF
  340.                   IF INCREMENT > 0
  341.                      SKIP INCREMENT
  342.                   ENDIF
  343.                   IF INCREMENT < 0
  344.                      STORE 0 - INCREMENT TO INCREMENT
  345.                      SKIP - INCREMENT
  346.                   ENDIF
  347.                ENDIF
  348.                IF EOPTION = 'F' .OR. EOPTION =  'R'
  349.                   STORE .F. TO DETLSRCH
  350.                   STORE RECNO() TO STARTREC
  351.                ENDIF
  352.             ENDDO
  353.             RELEASE DETLSRCH
  354.          ENDIF
  355.          RELEASE SRCHMODE
  356.       ENDDO
  357.    ENDIF
  358. ENDIF
  359. NOTE -
  360. NOTE - SEARCH FOR SUB-STRING THAT IS PART OF A SELECTED FIELD.
  361. NOTE -
  362. IF EMETH = '2'
  363.    CLOSE INDEX
  364.    CLEAR
  365.    STORE 'DETAILED SEARCH' TO MODE
  366.    @ 10,20 SAY 'SELECT FIELD NUMBER '
  367.    @ 12,20 SAY 'ENTER SEARCH DATA '
  368.    @ 14,0 SAY ' 1. ORDER NO.   2. COMPLETED   3. LASTNAME    4. FIRST NAME  5.ADDRESS'
  369.    @ 15,0 SAY ' 6. ADDR-LINE2  7. ADDR-LINE3  8. CITY        9. STATE      10. ZIP'
  370.    @ 16,0 SAY '11. VOLUMES    12. ENTERED    13. SHIPPED    14. REMARKS    15. REMARKS-2'
  371.    @ 17,0 SAY '16. BACKORDER  17. SHIPPED    18. SHIPPED    19. UPDATE     '
  372.    STORE '  ' TO EVAR
  373.    DO WHILE VAL(EVAR) < 1 .OR. VAL(EVAR) > 23
  374.       @ 10,20 SAY 'SELECT FIELD NUMBER ' GET EVAR PICTURE '99'
  375.       READ
  376.    ENDDO
  377.    STORE '                              ' TO EPART
  378.    @ 12,20 SAY 'ENTER SEARCH DATA ' GET EPART
  379.    READ
  380.    IF VAL(EVAR) = 1
  381.       STORE 'ORDER' TO PARTFIELD
  382.    ENDIF
  383.    IF VAL(EVAR) = 2
  384.       STORE 'COMP' TO PARTFIELD
  385.    ENDIF
  386.    IF VAL(EVAR) = 3
  387.       STORE 'LNAME' TO PARTFIELD
  388.    ENDIF
  389.    IF VAL(EVAR) = 4
  390.       STORE 'FNAME' TO PARTFIELD
  391.    ENDIF
  392.    IF VAL(EVAR) = 5
  393.       STORE 'ADDR1' TO PARTFIELD
  394.    ENDIF
  395.    IF VAL(EVAR) = 6
  396.       STORE 'ADDR2' TO PARTFIELD
  397.    ENDIF
  398.    IF VAL(EVAR) = 7
  399.       STORE 'ADDR3' TO PARTFIELD
  400.    ENDIF
  401.    IF VAL(EVAR) = 8
  402.       STORE 'CITY' TO PARTFIELD
  403.    ENDIF
  404.    IF VAL(EVAR) = 9
  405.       STORE 'STATE' TO PARTFIELD
  406.    ENDIF
  407.    IF VAL(EVAR) = 10
  408.       STORE 'ZIP' TO PARTFIELD
  409.    ENDIF
  410.    IF VAL(EVAR) = 11
  411.       STORE 'VOL1' TO PARTFIELD
  412.    ENDIF
  413.    IF VAL(EVAR) = 12
  414.       STORE 'ENTERED' TO PARTFIELD
  415.    ENDIF
  416.    IF VAL(EVAR) = 13
  417.       STORE 'SHIPPED' TO PARTFIELD
  418.    ENDIF
  419.    IF VAL(EVAR) = 14
  420.       STORE 'REM1' TO PARTFIELD
  421.    ENDIF
  422.    IF VAL(EVAR) = 15
  423.       STORE 'REM2' TO PARTFIELD
  424.    ENDIF
  425.    IF VAL(EVAR) = 16
  426.       STORE 'BO' TO PARTFIELD
  427.    ENDIF
  428.    IF VAL(EVAR) = 17
  429.       STORE 'BO:SHIP' TO PARTFIELD
  430.    ENDIF
  431.    IF VAL(EVAR) = 18
  432.       STORE 'BO2:SHIP' TO PARTFIELD
  433.    ENDIF
  434.    IF VAL(EVAR) = 19
  435.       STORE 'DAYU' TO PARTFIELD
  436.    ENDIF
  437.    USE &DR.:SIG/M.DBF
  438.    STORE TRIM(EPART) TO EPART
  439.    RELEASE EVAR
  440.    GOTO BOTTOM
  441.    STORE RECNO() TO LASTREC
  442.    GOTO TOP
  443.    STORE 0 TO RECNO
  444.    STORE .T. TO PARTSRCH
  445.    STORE ' ' TO EOPTION
  446.    STORE .T. TO FIRSTLOOP
  447.    DO WHILE PARTSRCH
  448.       IF EOPTION = 'R'
  449.          STORE 0 TO RECNO
  450.          STORE .F. TO PARTSRCH
  451.          LOOP
  452.       ENDIF
  453.       IF RECNO = LASTREC
  454.          STORE 'R' TO EOPTION
  455.          LOOP
  456.       ENDIF
  457.       IF FIRSTLOOP
  458.          LOCATE FOR UPPER(EPART) $ UPPER(&PARTFIELD)
  459.       ENDIF
  460.       IF .NOT.FIRSTLOOP
  461.          CONTINUE
  462.       ENDIF
  463.       STORE .F. TO FIRSTLOOP
  464.       STORE RECNO() TO RECNO
  465.       IF RECNO() = LASTREC .AND.(.NOT. EPART $ &PARTFIELD)
  466.          STORE 'R' TO EOPTION
  467.          LOOP
  468.       ENDIF
  469.       CLEAR
  470.       @ 1,25 SAY MODE
  471.       @ 2,0  SAY '+---------------------------------------'
  472.       @ 2,39 SAY '--------------------------------------+'
  473.       @ 4,5 SAY 'ORDER NUMBER                          COMPLETE'
  474.       @ 5,8 SAY 'LAST NAME                             FIRST'
  475.       @ 6,10 SAY 'ADDRESS'
  476.       @ 7,9 SAY '(line 2)'
  477.       @ 8,9 SAY '(line 3)'
  478.       @ 9,13 SAY 'CITY                             STATE              ZIP'
  479.       @ 11,2 SAY 'VOLUMES'
  480.       @ 13,3 SAY 'AMOUNT                                     ENTER             SHIP'
  481.       @ 14,2 SAY 'REMARKS'
  482.       @ 15,2 SAY 'REMARKS'
  483.       @ 17,0 SAY 'BACKORDER'
  484.       @ 18,44 SAY 'CATALOG'
  485.       @ 19,2 SAY 'SHIPPED                 SHIPPED                             UPDATE'
  486.       @ 20,0 SAY '+--------------------------------------'
  487.       @ 20,39 SAY '--------------------------------------+'
  488.       @ 4,18 GET ORDER
  489.       @ 5,18 GET LNAME
  490.       @ 5,52 GET FNAME
  491.       @ 6,18 GET ADDR1
  492.       @ 7,18 GET ADDR2
  493.       @ 8,18 GET ADDR3
  494.       @ 9,18 GET CITY
  495.       @ 9,52 GET STATE
  496.       @ 9,70 GET ZIP
  497.       @ 11,10 GET VOL1
  498.       @ 13,10 GET AMT
  499.       @ 13,52 GET ENTERED
  500.       @ 13,69 GET SHIPPED
  501.       @ 14,10 GET REM1
  502.       @ 15,10 GET REM2
  503.       @ 17,10 GET BO
  504.       @ 18,53 GET CATALOG
  505.       @ 19,10 GET BO_SHIP
  506.       @ 19,34 GET BO2_SHIP
  507.       @ 19,69 GET DAYU
  508.       @ 4,52 GET COMP
  509.       CLEAR GETS
  510.       STORE ' ' TO EOPTION
  511.       @ 22,12 SAY 'N (NEXT), R (RETURN)'
  512.       DO WHILE EOPTION <> 'N' .AND. EOPTION <> 'R'
  513.          @ 22,37 GET EOPTION PICTURE '!'
  514.          READ
  515.       ENDDO
  516.    ENDDO
  517.    RELEASE PARTSRCH
  518. ENDIF
  519. RELEASE EMETH, EOPTION, EPART, FILESRCH, LASTREC, FIRSTREC, STARTREC
  520. RELEASE PARTFIELD, NUMREC, FIRSTLOOP, EKEYOPT, INCREMENT, MODE
  521. SET INDEX TO &DR.:ORDERS
  522. STORE .T. TO FIRST
  523. RETURN
  524.  
  525.