home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / dgenius.zip / DGENI003.PRG < prev    next >
Text File  |  1987-02-03  |  24KB  |  1,072 lines

  1.  
  2. Procedure Getdefa
  3.  
  4. clear
  5. set defa to a
  6. set path to
  7. set colo to g+/n,w/b
  8. bc=.t.
  9. do while bc
  10. clear
  11. mdrive=space(1)
  12. @ 1,0 say "Place the diskette containing your database files in drive A."
  13. clear
  14.  
  15. jj=.t.
  16.  
  17. do while jj
  18.    clear
  19.    @ 1,0 say "The following database files are available."
  20.    dir a:
  21.    aname=space(8)
  22.    @ 23,5 say "Enter Name of Data Base File you want to use:" get aname
  23.    set colo to r+/n
  24.    @ 24,5 say "If no database files are displayed, enter RETURN to start over."
  25.    set colo to g+/n,w/b
  26.    read
  27.  
  28.    if aname="        "
  29.    loop
  30.    endif
  31.  
  32.    if trim(upper(aname))="RETURN"
  33.    do getdefa
  34.    else
  35.    endif
  36.  
  37.    mname=trim(aname)
  38.  
  39.  
  40.    if .not. file('&mname..dbf')
  41.    do while .not. file('&mname..dbf')
  42.    ? chr(7)
  43.    set colo to gr+/n
  44.    @ 23,0 clear
  45.    @ 24,0 clear
  46.    @ 23,0 say "The file you have specified, "+upper(mname)+" , does not exist."
  47.    @ 24,0 say "Enter the file name again =========>" get aname
  48.    read
  49.    mname=trim(aname)
  50.    if .not. file('&mname..dbf')
  51.    loop
  52.    else
  53.    exit
  54.    endif
  55.    enddo
  56.    else
  57.    endif
  58.  
  59.    set colo to g+/n,w/b
  60.  
  61.    use &mname
  62.  
  63.    if reccount()=0
  64.    clear
  65.    ? chr(7)
  66.    set colo to r+/n
  67.    @ 1,0 say "There are no records in this database."
  68.    wait
  69.    set colo to g+/n,w/b
  70.    loop
  71.    else
  72.    clos data
  73.    exit
  74.    endif
  75. enddo while jj
  76.  
  77. clear
  78. @ 1,0 say "Copying the "+trim(upper(mname))+" database........"
  79. run copy a:\&mname..dbf c:\dbase/v
  80. @ 24,0 say "Just a moment...."
  81. set defa to c
  82. set path to c:\dbase
  83. use &mname
  84.  
  85. num_fields=0
  86. null=""
  87. do while null<field(num_fields+1)
  88. num_fields=num_fields+1
  89. enddo
  90.  
  91. sel=1
  92. number=1
  93. x=5
  94. y=0
  95.  
  96. clear
  97.  
  98. if num_fields>75
  99. @ 1,0 say "There are too many fields to display on the screen at one time."
  100. @ 2,0 say "I will print them out for you. Be sure your printer is turned on!"
  101. wait
  102. clear
  103. set colo to r+/n
  104. @ 1,0 say "Printing......"
  105.  
  106. set print on
  107. set cons off
  108. set margin to 8
  109.  
  110. do while number<=num_fields .and. sel<=num_fields
  111.  
  112. newsel=trim(str(sel))
  113. ? ltrim(newsel)+". "+field(number)
  114. sel=sel+1
  115. number=number+1
  116.  
  117. enddo
  118.  
  119. set cons on
  120. set prin off
  121. set margin to 0
  122. set colo to g+/n,w/b
  123.  
  124. else
  125.  
  126.  
  127. clear
  128.  
  129. @ 1,0 say "There are "+ltrim(str(num_fields))+" fields in the "+upper(mname)+" database file."
  130. @ 2,0 say "All fields are listed below:"
  131.  
  132. do while number<=num_fields .and. sel<=num_fields
  133.  
  134. if number=16
  135. x=5
  136. y=15
  137. endif
  138.  
  139. if number=31
  140. x=5
  141. y=30
  142. endif
  143.  
  144. if number=46
  145. x=5
  146. y=45
  147. endif
  148.  
  149. if number=61
  150. x=5
  151. y=60
  152. endif
  153.  
  154. if number=76
  155. wait
  156. @ 5,0 clea to 20,79
  157. x=5
  158. y=0
  159. endif
  160.  
  161. if number=91
  162. x=5
  163. y=15
  164. endif
  165.  
  166. if number=106
  167. x=5
  168. y=30
  169. endif
  170.  
  171. if number=121
  172. x=5
  173. y=45
  174. endif
  175.  
  176.  
  177. newsel=trim(str(sel))
  178. @ x,y say ltrim(newsel)+". "+field(number)
  179. sel=sel+1
  180. x=x+1
  181. number=number+1
  182.  
  183. enddo
  184. endif
  185.  
  186.  
  187. rec1=0
  188. @ 23,0 say "Enter number of the field you want to use to put"
  189. @ 24,0 say " the records  in order:" get rec1 picture "@Z 999" range ,num_fields
  190. read
  191. set talk off
  192. copy stru exte to strux
  193. use strux
  194. go rec1
  195. mtype=field_type
  196. mfield=field_name
  197. get_box=field_len
  198. mboole=space(get_box)
  199. decims=field_dec
  200. use &mname
  201. @ 24,0 say space(79)
  202. set colo to gr+/n
  203. @ 24,0 say "Creating a new index for the "+upper(mname)+" database."
  204. set talk on
  205. index on &mfield to temp
  206. set talk off
  207. return
  208. enddo
  209.  
  210. Procedure Actions
  211.  
  212. Parameters mname,mfield,get_box,mtype,num_fields,field1,field2,field3,field4
  213.  
  214. cc=.t.
  215. use &mname index temp
  216. do while cc
  217. clear
  218. mpick=space(1)
  219. set colo to b+/n
  220. @ 3,5 say "dGENIUS Reports Generator"
  221. set colo to g+/n
  222. @ 5,5 say "Choose the type of report you want:"
  223. set colo to b+/n,w/b
  224. @ 7,5 say " 1. Create a report based on the "+trim(upper(mfield))+" field."
  225. @ 9,5 say " 2. Create a report using the "+trim(upper(mfield))+" field and other fields."
  226. @ 11,5 say " 3. Create a Report Based on Days,Months,or Years"
  227. @ 13,6 get mpick
  228. @ 13,8 say "<<Enter Selection"
  229. set colo to g+/n
  230. read
  231. do case
  232.     case mpick="1"
  233.         set colo to gr+/n
  234.         no_flds=1
  235.         field1=mfield
  236.         indfld=mfield
  237.         return
  238.     case mpick="2"
  239.     clear
  240.  
  241.     IF NUM_fields>75
  242.     @ 1,0 say "You may select a maximum of four fields for your report."
  243.     @ 2,0 say "Use your printout to select the fields you want by number:"
  244.     else
  245.     endif
  246.  
  247.     sel=1
  248.     number=1
  249.     x=5
  250.     y=0
  251.     @ 1,0 say "You may construct a report using a maximum of"
  252.     @ 2,0 say "four fields from the following list:"
  253.     do while number<=num_fields .and. sel<=num_fields
  254.  
  255.     if number=16
  256.     x=5
  257.     y=15
  258.     endif
  259.  
  260.     if number=31
  261.     x=5
  262.     y=30
  263.     endif
  264.  
  265.     if number=46
  266.     x=5
  267.     y=45
  268.     endif
  269.  
  270.     if number=61
  271.     x=5
  272.     y=60
  273.     endif
  274.  
  275.     if number=76
  276.     wait
  277.     @ 5,0 clea to 20,79
  278.     x=5
  279.     y=0
  280.     endif
  281.  
  282.     if number=91
  283.     x=5
  284.     y=15
  285.     endif
  286.  
  287.     if number=106
  288.     x=5
  289.     y=30
  290.     endif
  291.  
  292.     if number=121
  293.     x=5
  294.     y=45
  295.     endif
  296.  
  297.  
  298.     newsel=trim(str(sel))
  299.     @ x,y say ltrim(newsel)+". "+field(number)
  300.     sel=sel+1
  301.     x=x+1
  302.     number=number+1
  303.  
  304.     enddo
  305.     set colo to bg+/n,w/g
  306.     pick_one=0
  307.     no_flds=0
  308.     @ 24,0 say "How many fields do you want to use?" get no_flds ;
  309.     picture "@Z 9" range 1,4
  310.     read
  311.     @ 24,0 say space(79)
  312.     do while pick_one<=no_flds
  313.     chosen=0
  314.     pick_one=pick_one+1
  315.     if pick_one=1 .and. pick_one<=no_flds
  316.     @ 24,0 say "Enter number of first field:" get chosen picture "@Z 999";
  317.  range ,num_fields
  318.     read
  319.     field1=field(chosen)
  320.     @ 1,50 say "1. "+field1
  321.     endif
  322.     if pick_one=2 .and. pick_one<=no_flds
  323.     @ 24,0 say space(79)
  324.     @ 24,0 say "Enter number of second field:" get chosen picture "@Z 999";
  325.  range ,num_fields
  326.     read
  327.     field2=field(chosen)
  328.     @ 3,50 say "2. "+field2
  329.     endif
  330.     if pick_one=3 .and. pick_one<=no_flds
  331.     @ 24,0 say space(79)
  332.     @ 24,0 say "Enter number of third field:" get chosen picture "@Z 999";
  333.  range ,num_fields
  334.     read
  335.     field3=field(chosen)
  336.     @ 5,50 say "3. "+field3
  337.     endif
  338.     if pick_one=4 .and. pick_one=no_flds
  339.     @ 24,0 say space(79)
  340.     @ 24,0 say "Enter number of last field:" get chosen picture "@Z 999";
  341.  range ,num_fields
  342.     read
  343.     field4=field(chosen)
  344.     @ 7,50 say "4. "+field4
  345.     endif
  346.     if pick_one>no_flds
  347.     @ 24,0 say space(79)
  348.     exit
  349.     endif
  350.     enddo
  351.     indfld=mfield
  352.     fldno=space(1)
  353.     @ 9,40 say "Enter the number of the field you want"
  354.     @ 10,40 say "to use to choose the beginning and "
  355.     @ 11,40 say "ending limits of your report:" get fldno
  356.     read
  357.     if fldno="1"
  358.     newfield=field1
  359.     endif
  360.     if fldno="2"
  361.     newfield=field2
  362.     endif
  363.     if fldno="3"
  364.     newfield=field3
  365.     endif
  366.     if fldno="4"
  367.     newfield=field4
  368.     endif
  369.     use strux
  370.     index on field_name to strux
  371.     use strux index strux
  372.     find &newfield
  373.     get_box=field_len
  374.     mtype=field_type
  375.     clos data
  376.     return
  377.     case mpick="3"
  378.  
  379.     clear
  380.     IF NUM_fields>75
  381.     @ 1,0 say "You may select a maximum of four fields for your report."
  382.     @ 2,0 say "Use your printout to select the fields you want by number:"
  383.     else
  384.     endif
  385.  
  386.     sel=1
  387.     number=1
  388.     x=5
  389.     y=0
  390.     @ 1,0 say "You may construct a report using a maximum of"
  391.     @ 2,0 say "four fields from the following list:"
  392.     do while number<=num_fields .and. sel<=num_fields
  393.  
  394.     if number=16
  395.     x=5
  396.     y=15
  397.     endif
  398.  
  399.     if number=31
  400.     x=5
  401.     y=30
  402.     endif
  403.  
  404.     if number=46
  405.     x=5
  406.     y=45
  407.     endif
  408.  
  409.     if number=61
  410.     x=5
  411.     y=60
  412.     endif
  413.  
  414.     if number=76
  415.     wait
  416.     @ 5,0 clea to 20,79
  417.     x=5
  418.     y=0
  419.     endif
  420.  
  421.     if number=91
  422.     x=5
  423.     y=15
  424.     endif
  425.  
  426.     if number=106
  427.     x=5
  428.     y=30
  429.     endif
  430.  
  431.     if number=121
  432.     x=5
  433.     y=45
  434.     endif
  435.  
  436.  
  437.     newsel=trim(str(sel))
  438.     @ x,y say ltrim(newsel)+". "+field(number)
  439.     sel=sel+1
  440.     x=x+1
  441.     number=number+1
  442.  
  443.     enddo
  444.     set colo to bg+/n,w/g
  445.     pick_one=0
  446.     no_flds=0
  447.     @ 24,0 say "How many fields do you want to use?" get no_flds ;
  448.     picture "@Z 9" range 1,4
  449.     read
  450.     @ 24,0 say space(79)
  451.     do while pick_one<=no_flds
  452.     chosen=0
  453.     pick_one=pick_one+1
  454.     if pick_one=1 .and. pick_one<=no_flds
  455.     @ 24,0 say "Enter number of first field:" get chosen picture "@Z 999";
  456.  range ,num_fields
  457.     read
  458.     field1=field(chosen)
  459.     @ 1,50 say "1. "+field1
  460.     endif
  461.     if pick_one=2 .and. pick_one<=no_flds
  462.     @ 24,0 say space(79)
  463.     @ 24,0 say "Enter number of second field:" get chosen picture "@Z 999";
  464.  range ,num_fields
  465.     read
  466.     field2=field(chosen)
  467.     @ 3,50 say "2. "+field2
  468.     endif
  469.     if pick_one=3 .and. pick_one<=no_flds
  470.     @ 24,0 say space(79)
  471.     @ 24,0 say "Enter number of third field:" get chosen picture "@Z 999";
  472.  range ,num_fields
  473.     read
  474.     field3=field(chosen)
  475.     @ 5,50 say "3. "+field3
  476.     endif
  477.     if pick_one=4 .and. pick_one=no_flds
  478.     @ 24,0 say space(79)
  479.     @ 24,0 say "Enter number of last field:" get chosen picture "@Z 999";
  480.  range ,num_fields
  481.     read
  482.     field4=field(chosen)
  483.     @ 7,50 say "4. "+field4
  484.     endif
  485.     if pick_one>no_flds
  486.     @ 24,0 say space(79)
  487.     exit
  488.     endif
  489.     enddo
  490.     indfld=mfield
  491.     fldno=space(1)
  492.     @ 9,40 say "Enter the number of the field you want"
  493.     @ 10,40 say "to use to choose the beginning and "
  494.     @ 11,40 say "ending limits of your report:" get fldno
  495.     read
  496.     if fldno="1"
  497.     newfield=field1
  498.     endif
  499.     if fldno="2"
  500.     newfield=field2
  501.     endif
  502.     if fldno="3"
  503.     newfield=field3
  504.     endif
  505.     if fldno="4"
  506.     newfield=field4
  507.     endif
  508.     if type(newfield)<>"D"
  509.        do while type(newfield)<>"D"
  510.           ? chr(7)
  511.           set colo to g+/n
  512.           fldno=space(1)
  513.           @ 12,40 say upper(newfield)+" is not a date field!"
  514.           @ 13,40 say "Choose another field:" get fldno picture "9"
  515.           read
  516.              do case
  517.              case fldno="1"
  518.                   newfield=field1
  519.              case fldno="2"
  520.                   newfield=field2
  521.              case fldno="3"
  522.                   newfield=field3
  523.              case fldno="4"
  524.                   newfield=field4
  525.              endcase
  526.           if type(newfield)="D"
  527.           exit
  528.           else
  529.           loop
  530.           endif
  531.        enddo
  532.      else
  533.      endif
  534.     use strux
  535.     index on field_name to strux
  536.     use strux index strux
  537.     find &newfield
  538.     get_box=field_len
  539.     mtype=field_type
  540.     clos data
  541. use &mname
  542. if no_flds=1
  543.    allfields="set fields to &field1"
  544. endif
  545. if no_flds=2
  546.    allfields="set fields to &field1,&field2"
  547. endif
  548. if no_flds=3
  549.    allfields="set fields to &field1,&field2,&field3"
  550. endif
  551. if no_flds=4
  552.    allfields="set fields to &field1,&field2,&field3,&field4"
  553. endif
  554. df=.t.
  555. do while df
  556.     clear
  557.     dtopt=space(1)
  558.     @ 3,0 say "Date Finder and Reporter"
  559.     @ 4,5 say "Choose an Option:"
  560.     @ 6,5 say "1. List Records by Name of Month"
  561.     @ 7,5 say "2. List Records by Day of Week"
  562.     @ 8,5 say "3. List Records by Year"
  563.     @ 9,5 say "4. Return to dGENIUS Menu"
  564.     @ 10,5 get dtopt pict "9"
  565.     @ 10,7 say "<<<Enter Selection"
  566.     read
  567.  
  568.     do case
  569.         case dtopt="1"
  570.         @ 3,0 clea to 11,79
  571.         mouwant=0
  572.         @ 5,40 say "Choose a MONTH:"
  573.         @ 6,40 say "1.January"
  574.         @ 7,40 say "2.February"
  575.         @ 8,40 say "3.March"
  576.         @ 9,40 say "4.April"
  577.         @ 10,40 say "5.May"
  578.         @ 11,40 say "6.June"
  579.         @ 12,40 say "7.July"
  580.         @ 13,40 say "8.August"
  581.         @ 14,40 say "9.September"
  582.         @ 15,40 say "10.October"
  583.         @ 16,40 say "11.November"
  584.         @ 17,40 say "12.December"
  585.         @ 19,40 get mouwant picture "@Z 99"
  586.         read
  587.             use &mname
  588.             set talk on
  589.             @ 21,40 say "Searching records....."
  590.             copy to holdfile for month(&newfield)=mouwant
  591.             use holdfile
  592.             if reccount()=0
  593.             set talk off
  594.             ? chr(7)
  595.             @ 22,40 say "NO RECORDS FOUND."
  596.             wait
  597.             loop
  598.             else
  599.             endif
  600.             @ 22,40 say "Indexing records....."
  601.             index on &mfield to date
  602.             set talk off
  603.             use holdfile index date
  604.             ? chr(7)
  605.             @ 22,0 clear to 23,79
  606.             @ 23,20 say "Ready to print...Be sure printer is on!"
  607.             wait "Press the Enter key to begin printing."
  608.             &allfields
  609.             set fields on
  610.             list off to print
  611.         case dtopt="2"
  612.         dayoweek=0
  613.         @ 3,0 clea to 11,79
  614.         @ 5,40 say "Choose a Day of the Week:"
  615.         @ 6,40 say "1. Sunday"
  616.         @ 7,40 say "2. Monday"
  617.         @ 8,40 say "3. Tuesday"
  618.         @ 9,40 say "4. Wednesday"
  619.         @ 10,40 say "5. Thursday"
  620.         @ 11,40 say "6. Friday"
  621.         @ 12,40 say "7. Saturday"
  622.         @ 14,40 get dayoweek pict "@Z 9"
  623.         @ 14,42 say "<<<Enter Selection"
  624.         read
  625.         use &mname
  626.         set talk on
  627.         @ 16,40 say "Searching records......"
  628.         copy to holdfile for dow(&newfield)=dayoweek
  629.         use holdfile
  630.         if reccount()=0
  631.         set talk off
  632.         ? chr(7)
  633.         @ 17,40 say "NO RECORDS FOUND."
  634.         wait
  635.         loop
  636.         else
  637.         endif
  638.         @ 17,40 say "Indexing records...."
  639.         index on &mfield to date
  640.         set talk off
  641.         use holdfile index date
  642.         @ 17,0 clear to 19,79
  643.         @ 18,20 say "Ready to print...Be sure the printer is on!"
  644.         wait "Press the Enter key when ready to print."
  645.         &allfields
  646.         set fields on
  647.         list off to print
  648.     case dtopt="3"
  649.         myear=0
  650.         @ 8,40 say "Enter Year:" get myear pict "@Z 9999"
  651.         read
  652.         use &mname
  653.         set talk on
  654.         @ 9,40 say "Searching records...."
  655.         copy to holdfile for year(&newfield)=myear
  656.         use holdfile
  657.         if reccount()=0
  658.         set talk off
  659.         ? chr(7)
  660.         @ 10,40 say "NO RECORDS FOUND."
  661.         wait
  662.         loop
  663.         else
  664.         endif
  665.         @ 10,40 say "Indexing records...."
  666.         index on &mfield to date
  667.         set talk off
  668.         use holdfile inde date
  669.         ? chr(7)
  670.         @ 10,0 clea to 12,79
  671.         @ 11,20 say "Ready to print.... Be sure printer is on!"
  672.         wait "Press the Enter key to begin printing."
  673.         &allfields
  674.         set fields on
  675.         list off to print
  676.     case dtopt="4"
  677.         exit
  678.     endcase
  679. enddo
  680. clear
  681. @ 3,0 say "RETURNING TO MENU......"
  682. clos data
  683. run del c:\dbase\holdfile.dbf
  684. run del c:\dbase\date.ndx
  685. nogo=.t.
  686. return
  687.  
  688.  
  689. Procedure Booleans
  690.  
  691. Parameters mname,newfield,mfield,get_box,mtype,no_flds,field1,field2,field3,field4
  692.  
  693.  
  694. zz=.t.
  695. use &mname
  696. copy stru to holdfile
  697. do while zz
  698. clear
  699. use holdfile
  700. zap
  701. clos data
  702. set colo to gr+/n,w/b+
  703. mopt="0"
  704. @ 12,10 say "Select an option:"
  705. @ 13,10 say "1. All records greater than a specific "+upper(newfield)
  706. @ 14,10 say "2. All records less than a specific "+upper(newfield)
  707. @ 15,10 say "3. All records equal to a specific "+upper(newfield)
  708. @ 16,10 say "4. All records greater than or equal to a specific "+upper(newfield)
  709. @ 17,10 say "   and less than or equal to a specific "+upper(newfield)
  710. @ 18,10 say "5. All records not equal to a specific "+upper(newfield)
  711. @ 20,10 say "6. Return to the dGENIUS Menu."
  712. @ 22,10 get mopt
  713. @ 22,12 say "<<Enter Selection"
  714. read
  715. @ 23,10 say space(49)
  716.  
  717. do case
  718.     case mopt="1"
  719.     @ 12,10 clea to 23,79
  720.     mboole=space(get_box)
  721.     if mtype="D"
  722.     @ 12,20 say "Enter "+upper(trim(newfield))+":" get mboole picture "99/99/99"
  723.     endif
  724.     if mtype="C" .or. mtype="N"
  725.     @ 12,20 say "Enter "+upper(newfield) get mboole
  726.     endif
  727.     read
  728.     if mtype="D"
  729.     mboo2=ctod(mboole)
  730.     endif
  731.     if mtype="C"
  732.     mboo2=trim(mboole)
  733.     endif
  734.     if mtype="N"
  735.     mboo2=val(mboole)
  736.     endif
  737.     USE &MNAME INDEX TEMP
  738.     set colo to b+/n
  739.     @ 13,20 say "Searching data.........."
  740.     reindex
  741.     copy to holdfile for &newfield>mboo2
  742.     use holdfile
  743.     if reccount()=0
  744.     aa=1
  745.     do while aa<20
  746.     set colo to b+/n
  747.     @ 21,0 say "No records were found which were greater than "+mboole+"."
  748.     aa=aa+1
  749.     ifaa=20
  750.     set colo to gr+/n,w/b+
  751.     else
  752.     set talk on
  753.     set colo to b+/n
  754.     @ 14,20 say "Indexing data......"
  755.     index on &mfield to hold
  756.     use holdfile index hold
  757.     set talk off
  758.     if no_flds=1
  759.     set fields to &field1
  760.     endif
  761.     if no_flds=2
  762.     set fields to &field1,&field2
  763.     endif
  764.     if no_flds=3
  765.     set fields to &field1,&field2,&field3
  766.     endif
  767.     if no_flds=4
  768.     set fields to &field1,&field2,&field3,&field4
  769.     endif
  770.     set fields on
  771.     set colo to *g+/n
  772.     ? chr(7)
  773.     @ 16,20 say "Ready to print....Be sure printer is turned on!"
  774.     wait
  775.     set colo to b/n
  776.     clear
  777.     list off to prin
  778.     eject
  779.     clear
  780.     endif
  781.     enddo
  782.     endif
  783.  
  784.  
  785.     case mopt="2"
  786.     @ 12,10 clea to 23,79
  787.     mboole=space(get_box)
  788.     if mtype="D"
  789.     @ 12,20 say "Enter "+upper(trim(newfield))+":" get mboole picture "99/99/99"
  790.     endif
  791.     if mtype="C" .or. mtype="N"
  792.     @ 12,20 say "Enter "+upper(newfield) get mboole
  793.     endif
  794.     read
  795.     if mtype="D"
  796.     mboo2=ctod(mboole)
  797.     endif
  798.     if mtype="C"
  799.     mboo2=trim(mboole)
  800.     endif
  801.     if mtype="N"
  802.     mboo2=val(mboole)
  803.     endif
  804.     USE &MNAME INDEX TEMP
  805.     set colo to b+/n
  806.     @ 13,20 say "Searching data.........."
  807.     reindex
  808.     copy to holdfile for &newfield<mboo2
  809.     use holdfile
  810.     if reccount()=0
  811.     aa=1
  812.     do while aa<20
  813.     set colo to b+/n
  814.     @ 21,0 say "No records were found which were greater than "+mboole+"."
  815.     aa=aa+1
  816.     ifaa=20
  817.     set colo to gr+/n,w/b+
  818.     else
  819.     set talk on
  820.     set colo to b+/n
  821.     @ 14,20 say "Indexing data......"
  822.     index on &mfield to hold
  823.     use holdfile index hold
  824.     set talk off
  825.     if no_flds=1
  826.     set fields to &field1
  827.     endif
  828.     if no_flds=2
  829.     set fields to &field1,&field2
  830.     endif
  831.     if no_flds=3
  832.     set fields to &field1,&field2,&field3
  833.     endif
  834.     if no_flds=4
  835.     set fields to &field1,&field2,&field3,&field4
  836.     endif
  837.     set fields on
  838.     set colo to *g+/n
  839.     ? chr(7)
  840.     @ 16,20 say "Ready to print....Be sure printer is turned on!"
  841.     wait
  842.     set colo to b/n
  843.     clear
  844.     list off to prin
  845.     eject
  846.     clear
  847.     endif
  848.     enddo
  849.     endif
  850.  
  851.  
  852.     case mopt="3"
  853.     @ 12,10 clea to 23,79
  854.     mboole=space(get_box)
  855.     if mtype="D"
  856.     @ 12,20 say "Enter "+upper(trim(newfield))+":" get mboole picture "99/99/99"
  857.     endif
  858.     if mtype="C" .or. mtype="N"
  859.     @ 12,20 say "Enter "+upper(newfield) get mboole
  860.     endif
  861.     read
  862.     if mtype="D"
  863.     mboo2=ctod(mboole)
  864.     endif
  865.     if mtype="C"
  866.     mboo2=trim(mboole)
  867.     endif
  868.     if mtype="N"
  869.     mboo2=val(mboole)
  870.     endif
  871.     USE &MNAME INDEX TEMP
  872.     set colo to b+/n
  873.     @ 13,20 say "Searching data.........."
  874.     reindex
  875.     copy to holdfile for &newfield=mboo2
  876.     use holdfile
  877.     if reccount()=0
  878.     aa=1
  879.     do while aa<20
  880.     set colo to b+/n
  881.     @ 21,0 say "No records were found which were equal to "+mboole+"."
  882.     aa=aa+1
  883.     ifaa=20
  884.     set colo to gr+/n,w/b+
  885.     else
  886.     set talk on
  887.     set colo to b+/n
  888.     @ 14,20 say "Indexing data......"
  889.     index on &mfield to hold
  890.     use holdfile index hold
  891.     set talk off
  892.     if no_flds=1
  893.     set fields to &field1
  894.     endif
  895.     if no_flds=2
  896.     set fields to &field1,&field2
  897.     endif
  898.     if no_flds=3
  899.     set fields to &field1,&field2,&field3
  900.     endif
  901.     if no_flds=4
  902.     set fields to &field1,&field2,&field3,&field4
  903.     endif
  904.     set fields on
  905.     set colo to *g+/n
  906.     ? chr(7)
  907.     @ 16,20 say "Ready to print....Be sure printer is turned on!"
  908.     wait
  909.     set colo to b/n
  910.     clear
  911.     list off to prin
  912.     eject
  913.     clear
  914.     endif
  915.     enddo
  916.     endif
  917.  
  918.  
  919.     case mopt="4"
  920.     @ 12,10 clea to 23,79
  921.     mboole1=space(get_box)
  922.     mboole2=space(get_box)
  923.     if mtype="D"
  924.     @ 12,20 say "Enter first "+upper(trim(newfield))+":" get mboole1 picture "99/99/99"
  925.     @ 14,20 say "Enter last "+upper(trim(newfield))+":" get mboole2 picture "99/99/99"
  926.    endif
  927.     if mtype="C" .or. mtype="N"
  928.     @ 12,20 say "Enter first "+upper(trim(newfield)) get mboole1
  929.     @ 14,20 say "Enter last "+upper(trim(newfield)) get mboole2
  930.     endif
  931.     read
  932.     if mtype="D"
  933.     mboo2=ctod(mboole1)
  934.     mboo3=ctod(mboole2)
  935.     endif
  936.     if mtype="C"
  937.     mboo2=trim(mboole1)
  938.     mboo3=trim(mboole2)
  939.     endif
  940.     if mtype="N"
  941.     mboo2=val(mboole1)
  942.     mboo3=val(mboole2)
  943.     endif
  944.     USE &MNAME INDEX TEMP
  945.     set colo to b+/n
  946.     @ 15,20 say "Searching data.........."
  947.     reindex
  948.     copy to holdfile for &newfield>=mboo2 .and. &newfield<=mboo3
  949.     use holdfile
  950.     if reccount()=0
  951.     aa=1
  952.     do while aa<20
  953.     set colo to b+/n
  954.     @ 21,0 say "No records were found which were greater than "+mboo2
  955.     @ 22,0 say "and less than "+mboo3
  956.     aa=aa+1
  957.     ifaa=20
  958.     set colo to gr+/n,w/b+
  959.     else
  960.     set talk on
  961.     set colo to b+/n
  962.     @ 16,20 say "Indexing data......"
  963.     index on &mfield to hold
  964.     use holdfile index hold
  965.     set talk off
  966.     if no_flds=1
  967.     set fields to &field1
  968.     endif
  969.     if no_flds=2
  970.     set fields to &field1,&field2
  971.     endif
  972.     if no_flds=3
  973.     set fields to &field1,&field2,&field3
  974.     endif
  975.     if no_flds=4
  976.     set fields to &field1,&field2,&field3,&field4
  977.     endif
  978.     set fields on
  979.     set colo to *g+/n
  980.     ? chr(7)
  981.     @ 18,20 say "Ready to print....Be sure printer is turned on!"
  982.     wait
  983.     set colo to b/n
  984.     clear
  985.     list off to prin
  986.     eject
  987.     clear
  988.     endif
  989.     enddo
  990.     endif
  991.  
  992.  
  993.     case mopt="5"
  994.     @ 12,10 clea to 23,79
  995.     mboole=space(get_box)
  996.     if mtype="D"
  997.     @ 12,20 say "Enter "+upper(trim(newfield))+":" get mbooleì
  998. picture "99/99/99"
  999.     endif
  1000.     if mtype="C" .or. mtype="N"
  1001.     @ 12,20 say "Enter "+upper(newfield) get mboole
  1002.     endif
  1003.     read
  1004.     if mtype="D"
  1005.     mboo2=ctod(mboole)
  1006.     endif
  1007.     if mtype="C"
  1008.     mboo2=trim(mboole)
  1009.     endif
  1010.     if mtype="N"
  1011.     mboo2=val(mboole)
  1012.     endif
  1013.     USE &MNAME INDEX TEMP
  1014.     set colo to b+/n
  1015.     @ 13,20 say "Searching data.........."
  1016.     reindex
  1017.     copy to holdfile for &newfield<>mboo2
  1018.     use holdfile
  1019.     if reccount()=0
  1020.     aa=1
  1021.     do while aa<20
  1022.     set colo to b+/n
  1023.     @ 21,0 say "No records were found which were greater than "+mboole+"."
  1024.     aa=aa+1
  1025.     ifaa=20
  1026.     set colo to gr+/n,w/b+
  1027.     else
  1028.     set talk on
  1029.     set colo to b+/n
  1030.     @ 14,20 say "Indexing data......"
  1031.     index on &mfield to hold
  1032.     use holdfile index hold
  1033.     set talk off
  1034.     if no_flds=1
  1035.     set fields to &field1
  1036.     endif
  1037.     if no_flds=2
  1038.     set fields to &field1,&field2
  1039.     endif
  1040.     if no_flds=3
  1041.     set fields to &field1,&field2,&field3
  1042.     endif
  1043.     if no_flds=4
  1044.     set fields to &field1,&field2,&field3,&field4
  1045.     endif
  1046.     set fields on
  1047.     set colo to *g+/n
  1048.     ? chr(7)
  1049.     @ 16,20 say "Ready to print....Be sure printer is turned on!"
  1050.     wait
  1051.     set colo to b/n
  1052.     clear
  1053.     list off to prin
  1054.     eject
  1055.     clear
  1056.     endif
  1057.     enddo
  1058.     endif
  1059.  
  1060.     case mopt="6"
  1061.     clear
  1062.     run del c:\dbase\&mname..dbf
  1063.     run del c:\dbase\holdfile.dbf
  1064.     run del c:\dbase\temp.ndx
  1065.     run del c:\dbase\hold.ndx
  1066.     save to dgenius
  1067.     return
  1068.  
  1069.  endcase
  1070.  enddo
  1071.  
  1072.