runden.p 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /* ------------------------------------------------------------------------- */
  2. /* Preis Runden (RUNDEN.P) */
  3. /* ------------------------------------------------------------------------- */
  4. /* Input: Rundbetr */
  5. /* Rundcode */
  6. /* Output: Rundbetr */
  7. /* */
  8. /* ------------------------------------------------------------------------- */
  9. { v8/globvar.i " " " " "SHARED" }
  10. /*---------------------------------------------------------------------------*/
  11. DEF VAR VBetr AS DECIMAL FORMAT "99999999.9999-".
  12. DEF VAR VOp AS DECIMAL INIT 0.2.
  13. DEF VAR XPChar AS CHAR.
  14. /*---------------------------------------------------------------------------*/
  15. DO TRANSACTION:
  16. VBetr = Rundbetr.
  17. IF Rundcode = 1 THEN DO:
  18. VBetr = ROUND((VBetr / 100 * VOp), 4) / VOp * 100.
  19. END.
  20. IF Rundcode = 2 THEN DO:
  21. VBetr = ROUND((VBetr / 100), 3) * 100.
  22. END.
  23. IF Rundcode = 3 THEN DO:
  24. VBetr = VBetr + 0.0499.
  25. VBetr = ROUND((VBetr / 100), 3) * 100.
  26. END.
  27. IF Rundcode = 4 THEN DO:
  28. VBetr = VBetr - 0.0500.
  29. VBetr = ROUND((VBetr / 100), 3) * 100.
  30. END.
  31. IF Rundcode = 5 THEN DO:
  32. VBetr = ROUND((VBetr / 100), 2) * 100.
  33. END.
  34. IF Rundcode = 6 THEN DO:
  35. VBetr = VBetr + 0.4999.
  36. VBetr = ROUND((VBetr / 100), 2) * 100.
  37. END.
  38. IF Rundcode = 7 THEN DO:
  39. VBetr = VBetr - 0.5000.
  40. VBetr = ROUND((VBetr / 100), 2) * 100.
  41. END.
  42. IF Rundcode = 8 THEN DO:
  43. VBetr = ROUND((VBetr / 1000), 2) * 1000.
  44. END.
  45. IF Rundcode = 9 THEN DO:
  46. VBetr = VBetr + 4.9999.
  47. VBetr = ROUND((VBetr / 1000), 2) * 1000.
  48. END.
  49. IF Rundcode = 10 THEN DO:
  50. VBetr = VBetr - 5.0000.
  51. VBetr = ROUND((VBetr / 1000), 2) * 1000.
  52. END.
  53. IF Rundcode = 99 THEN DO:
  54. XPChar = STRING(VBetr,"-99999999.999").
  55. VBetr = DECIMAL(SUBSTRING(XPChar,01,12)).
  56. IF SUBSTRING(XPChar,13,01) > "4" THEN VBetr = VBetr + 0.01.
  57. END.
  58. Rundbetr = VBetr.
  59. END.