home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / db3tips2.zip / DB3MATH.TXT < prev    next >
Text File  |  1986-07-01  |  7KB  |  171 lines

  1.                    dBASE Statistical Functions
  2.       (PC Magazine Vol 5 No 1 January 14, 1986 Power User)
  3.  
  4.      The program below calculates descriptive statistics from data
  5. stored in a numeric field in a dBASE III file.  The formula separately
  6. sums the top and bottom one-sixth of a given range of figures, such as
  7. scores.  The sum of the lowest scores is subtracted from the sum of
  8. the highest scores.  The resulting value, divided by one-half of the
  9. total number of entries, is an estimate of the standard deviation.
  10.      Editor's Note: One caution is in order.  In the line
  11. "STORE str(INT(A/6),1) TO R  the value and width of R can vary from
  12. 1 to 3 digits, depending on the result obtained by dividing A by 6.
  13. For greater accuracy in such cases, you should allow R to be larger
  14. by changing the 1 in the formula to 2 or 3.  However, if you allow
  15. more than the exact number of digits for the variable R (by changing
  16. 1 to 2 or 3), the subsequent code "SKIP -&R" will not work properly.
  17. Try it as written first, and then change the width of R only if it
  18. appears that the answer for (A/6) requires more than a single digit
  19. for accuracy.
  20.  
  21. SET HEADING OFF
  22. SET SAFETY OFF
  23. CLEAR
  24. SET TALK OFF
  25. ? 'DESCRIPTIVE STATISTICS PROGRAM'
  26. ?
  27. ACCEPT 'DATA FILE? ' TO FILE
  28. ACCEPT 'FIELD? ' TO FIELD
  29. USE &FILE
  30. ?
  31. ? 'STEP 1 OF 4: INDEXING RECORDS'
  32. INDEX ON &FIELD TO INDEXF
  33. USE &FILE INDEX INDEXF
  34. ? 'STEP 2 OF 4: COUNTING RECORDS'
  35. COUNT FOR &FIELD <> 0 TO A
  36. ? 'STEP 3 OF 4: ADDING VALUES'
  37. SUM &FIELD TO SUM
  38. STORE str(INT(A/6),1) TO R
  39. ? 'STEP 4 OF 4: FINDING HIGH/LOW VALUES, MEDIAN, MEAN'
  40. GO TOP
  41. STORE &FIELD TO LOW
  42. SUM &FIELD NEXT &R TO BSUM
  43. GO BOTTOM
  44. STORE &FIELD TO HIGH
  45. SKIP -&R
  46. SUM &FIELD NEXT &R TO TSUM
  47. STORE A/2 TO MM
  48. IF INT(MM)=MM
  49.   GO TOP
  50.   SKIP MM
  51.   STORE &FIELD TO B
  52.   SKIP -1
  53.   STORE &FIELD TO C
  54.   STORE (B+C)/2 TO MEDIAN
  55. ELSE
  56.   GO TOP
  57.   SKIP INT(MM)
  58.   STORE &FIELD TO MEDIAN
  59. ENDIF
  60. STORE HIGH-LOW TO RANGE
  61. STORE SUM/A TO MEAN
  62. STORE (TSUM-BSUM)/(A/2) TO SD
  63. STORE SD*SD TO VARIANCE
  64. @ 11,1 SAY 'RESULTS'
  65. @ 13,1 SAY "NO. OF ENTRIES'
  66. @ 13,19 SAY A
  67. @ 14,1 SAY 'HIGHEST VALUE'
  68. @ 14,19 SAY HIGH
  69. @ 15,1 SAY 'LOWEST VALUE'
  70. @ 15,19 SAY LOW
  71. @ 16,1 SAY 'RANGE'
  72. @ 16,19 SAY RANGE
  73. @ 17,1 SAY 'SUM'
  74. @ 17,19 SAY SUM
  75. @ 18,1 SAY 'MEDIAN'
  76. @ 18,19 SAY MEDIAN
  77. @ 19,1 SAY 'MEAN'
  78. @ 19,19 SAY MEAN
  79. @ 20,1 SAY 'STANDARD DEVIATION'
  80. @ 20,19 SAY SD
  81. @ 21,1 SAY 'VARIANCE'
  82. @ 21,19 SAY VARIANCE
  83. RELEASE FILE,FIELD,A,SUM,R,LOW,BSUM,HIGH,TSUM,MM,B,C
  84. RELEASE MEDIAN,MEAN,SD,VARIANCE,RANGE
  85. USE
  86. RETURN
  87.  
  88. -----------------------------------------------------------------
  89.               Using Numeric Field in dBASE III Text
  90.       (PC Magazine Vol 5 No 1 January 14, 1986 Power User)
  91.  
  92.      dBASE's PICTURE command works well for inputting numerically
  93. formatted data to be printed in tabular reports.  However, it leaves
  94. blank spaces in the field when the number doesn't fill the field
  95. completely.  For this reason, PICTURE doesn't work very well in
  96. applications where you need to drop the numbers into the middle of
  97. text.  This difficulty can be overcome by converting the number to a
  98. trimmed character string.  After doing so, however, you'll also need
  99. to add commas and retain decimal points before you put the converted
  100. numbers into form letters and other text.  DOLLARS.PRG below can
  101. perform both the conversions and reformatting for you automatically.
  102.      You can actually produce simple form letters entirely with dBASE
  103. III.  By using the SET MARGIN TO command the TEXT/ENDTEXT statements,
  104. you can create a program that produces a convincing form letter
  105. without resorting to external word processing programs.
  106.      Editor's Note:  You can indeed use TEXT/ENDTEXT and SET MARGIN TO
  107. to create programs for form letters.  However, any macros embedded
  108. within the text block defined by TEXT/ENDTEXT will not be expanded,
  109. since dBASE ignores everything within these bracketing statements.
  110. To insert the converted numbers created by DOLLARS.PRG in your dBASE
  111. form letters, then, you must use @ SAY statements instead, before or
  112. after the TEXT/ENDTEXT statements.
  113.  
  114. * This program will convert AMOUNT (a numeric field or memory variable
  115. * with two decimal places) into the string variable MONEY for printing
  116. * in text material. Leading blanks are removed and commas are inserted.
  117. * This routine can not process numbers greater than 99,999,999.99.
  118. * Numbers less than .01 will be rounded to 2 places.
  119. *
  120. * Declare public memory variable MONEY so that results can be passed
  121. * back to the calling program
  122.  
  123. PUBLIC MONEY
  124.  
  125. * Convert numeric variable into string, insert commas and decimal point
  126.  
  127. MONEY=SUBSTR(STR(AMOUNT*100),1,2)+",";
  128.      +SUBSTR(STR(AMOUNT*100),3,3)+",";
  129.      +SUBSTR(STR(AMOUNT*100),6,3)+".";
  130.      +SUBSTR(STR(AMOUNT*100),9)
  131.  
  132. * Strip leading blanks and commas
  133.  
  134. DO WHILE SUBSTR(MONEY,1,1)=" " .OR. SUBSTR(MONEY,1,1)=","
  135.   MONEY=SUBSTR(MONEY,2)
  136. ENDDO
  137.  
  138. * If money <.1 insert missing 0
  139.  
  140. IF SUBSTR(MONEY,1,2)=". "
  141.   MONEY=SUBSTR(MONEY,1,1)+"0"+SUBSTR(MONEY,3)
  142. ENDIF
  143.  
  144. -----------------------------------------------------------------
  145.                  Square Roots in dBASE Revisited
  146.         (PC Magazine Vol 5 No 3 Feb 11, 1986 Power User)
  147.  
  148.      A previous article (PC Mag Vol 4 No 23 Power User) outlined a
  149. dBASE program (SQRT.PRG) for finding square roots. The "exponentiation"
  150. operator can be used to find the square root (or any other root or
  151. power, including fractionals.  For example:
  152.  
  153. N = 3
  154. ? N**1/2  (yields 1.73 as the square root)
  155. N = 3.00000
  156. ? N**1/2  (Yields 1.73205 as the square root)
  157.  
  158.      Editor's Note: Part of the reason for showing SQRT.PRG earlier
  159. was that the program's origins were in Pascal.  It thus served to
  160. illustrate the kind of cross-programming possible between dBASE and
  161. other programming languages.  Use of the exponentiation operator is
  162. limited to dBASE III; dBASE II does not have these useful extra
  163. operators.  Thus, for users of dBASE II, the only way to get square
  164. roots easily is through a program like SQRT.PRG.  Finally, this
  165. example is wrong.  To find a square root in dBASE III, you would
  166. normally use the program's SQRT (?) operator (? is the number whose
  167. root you're seeking).  You can also use the ** operator followed by .5
  168. to produce the same result.  However, using the fraction 1/2 only
  169. gives you one-half the number stored in N, not its square root.
  170.  
  171.