home *** CD-ROM | disk | FTP | other *** search
/ Software Du Jour / SoftwareDuJour.iso / BUSINESS / DBASE / DBAPG.ARC / STD-DEV.PRG < prev    next >
Text File  |  1984-08-12  |  2KB  |  70 lines

  1. * Program.: STD-DEV.PRG
  2. * Author..: Luis A. Castro
  3. * Date....: 06/26/84
  4. * Notice..: Copyright 1984, Luis A. Castro, All Rights Reserved
  5. * Version.: dBASE II, version 2.4x
  6. * Notes...: Computes the standard deviation of the records 
  7. *           of a numeric field in a datafile.
  8. *
  9. SET TALK OFF
  10. ERASE
  11. @  2, 0 SAY "COMPUTE STANDARD DEVIATION"
  12. @  2,72 SAY DATE()
  13. @  3, 0 SAY "========================================"
  14. @  3,40 SAY "========================================"
  15. ACCEPT "Enter datafile name " TO filename
  16. ACCEPT "Enter numeric field name " TO field:name
  17. STORE !( TRIM(filename) ) + "." TO filename
  18. STORE $(filename,1,@(".",filename)-1) TO filename
  19. IF filename = " " .OR. field:name = " "
  20.    SET TALK ON
  21.    RETURN
  22. ENDIF
  23. ?
  24. USE &filename
  25. IF 0 <= TEST( &field:name ) 
  26. * ---The field must be numeric and it must exist.
  27.    ? "INVALID FIELD NAME or FIELD TYPE"
  28.    SET TALK ON
  29.    RETURN
  30. ENDIF
  31. *
  32. STORE 0 TO items, sum, sumsquare, mean, variance, std:dev
  33. DO WHILE .NOT. EOF
  34. * ---Compute the sum of values and sum of values squared.
  35.    STORE sum + &field:name TO sum
  36.    STORE sumsquare + ( &field:name * &field:name ) TO sumsquare
  37.    STORE items + 1 TO items
  38.    ?? "."
  39.    SKIP
  40. ENDDO
  41. IF items < 2
  42.    ? "MUST HAVE TWO OR MORE ITEMS TO COMPUTE STANDARD DEVIATION"
  43.    SET TALK ON
  44.    RETURN
  45. ENDIF
  46. *
  47. * ---Compute mean, variance, and standard deviation.
  48. STORE sum / items TO mean
  49. STORE ( sumsquare - ( sum * sum ) / items ) /;
  50.       ( items - 1 ) TO variance
  51. IF variance <> 0
  52. * ---Must have a positive number for the square root.
  53.    STORE variance TO number
  54.    * ---Get the square root of the number.
  55.    DO Sqroot
  56.    STORE root TO std:dev
  57. ENDIF
  58. *
  59. * ---Output results.
  60. ? "RESULTS:"
  61. ? "========"
  62. ? "NUMBER of items    = " + STR( items, 5 )
  63. ? "SUM of values      = " + STR( sum, 11, 5 )
  64. ? "MEAN (average)     = " + STR( mean, 11, 5 )
  65. ? "VARIANCE           = " + STR( variance, 11, 5 )
  66. ? "STANDARD DEVIATION = " + STR( std:dev, 11, 5 )
  67. CLEAR
  68. RETURN
  69. * EOF: STD-DEV.PRG
  70.