home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / numtest.zip / NOTRIGHT.PRG < prev   
Text File  |  1988-11-08  |  3KB  |  109 lines

  1. ** Tests the bizarre bug in numeric logical comparison
  2. ** 11/7/88
  3. **
  4. ** Ron Landberg
  5. ** 4126 Joan Ave.
  6. ** Concord, CA 94521
  7. ** [415] 682-3226
  8. **
  9. **
  10. ****************************************************************************
  11. ** RUN THE PROGRAM TWICE USING THE TWO SETS OF NUMBERS LISTED ON THE SCREEN.
  12. ****************************************************************************
  13. **
  14. **
  15. *********************************
  16. **
  17. ** Compile & Link:
  18. **
  19. ** CLIPPER notright
  20. ** TLINK notright,,,clipper /x/d
  21. **
  22. ********************************
  23.  
  24. ****************************************************************************
  25. **
  26. ** Description:
  27. **
  28. ** DEMONSTRATES A BUG IN CLIPPER NUMBER HANDLING
  29. **
  30. ** Compares a numeric memory variable, previously assigned the value of a
  31. ** numeric database field (Len:8,Decml:2), to the result of an addition of
  32. ** two numeric keyboard entries.  Displays the result of 5 logical compari-
  33. ** sons.
  34. ** (All comparisons are between the assigned memory variable and the calcul-
  35. ** ated variable except for the one described as `DIRECTLY' which is a
  36. ** comparison made between the actual field value and the calculated vari-
  37. ** able - eliminates the assigned variable `num_var' from the comparison)
  38. **
  39. ** Obviously, the results should be exactly the same since the only change
  40. ** in the second set of numbers is the switch of a penny in each entry which
  41. ** offset each other.
  42. **
  43. ****************************************************************************
  44.  
  45. ***************************************************
  46. ** ARC File contains:  NOTRIGHT.PRG and NOTGOOD.DBF
  47. ***************************************************
  48.  
  49.  
  50.  SET FIXED ON
  51.  SET DECIMAL TO 2
  52.  CLEAR
  53.  USE notgood
  54.  GO top
  55.  num_var = dollars       && Assign a numeric field value to memory variable
  56.  
  57.  @ 16,50 to 22,70
  58.  @ 17,51 say "Enter these numbers"
  59.  @ 18,51 say "231.92         4.73"
  60.  @ 19,51 say "Then rerun program "
  61.  @ 20,51 say "with these numbers "
  62.  @ 21,51 say "231.91         4.74"
  63.  
  64.  @ 18,20 to 20,44
  65.  @ 19,21 say "Field value= "+ltrim(str(num_var,8,2))
  66.  
  67.  
  68.  the_tot = 0             && Will hold the total of the two keyboard entries
  69.  SET CONFIRM ON
  70.  FOR x = 1 TO 2
  71.   a_partial=0
  72.   @ 10,10 GET a_partial PICT '99,999.99'
  73.   READ
  74.   the_tot = the_tot + a_partial
  75.  NEXT
  76.  SET CONFIRM OFF
  77.  
  78. ? "The field value       = "
  79. ?? num_var
  80. ?
  81. ? "The accumulated total = "
  82. ?? the_tot
  83. ?
  84. ?"----------------------------------------------------------------"
  85.  
  86.  
  87. ? "Is the accumulated total equal to the field value ?         "
  88. ?? (the_tot = num_var)
  89.  
  90. ? "Is the accumulated total exactly equal to the field value ? "
  91. ?? (the_tot == num_var)
  92.  
  93. ? "Is the accumulated total equal DIRECTLY to the field value? "
  94. ?? (the_tot = notgood->dollars)
  95.  
  96. ? "Is the accumulated total greater than the field value ?     "
  97. ?? (the_tot > num_var)
  98.  
  99. ? "Is the accumulated total less than the field value ?        "
  100. ?? (the_tot < num_var)
  101.  
  102. ? "Is the field value greater than the accumulated total ?     "
  103. ?? (num_var > the_tot)
  104. ?
  105. ?
  106.  
  107.  
  108. use
  109. quit