home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / EFFO / pd6.lzh / TST / ranges.tst < prev    next >
Text File  |  1989-12-21  |  1KB  |  64 lines

  1. .( Loading Ranges test...) cr
  2.  
  3. #include ranges.f83
  4. #include blocks.f83
  5.  
  6. blocks ranges 
  7.  
  8. .( 1: Create some typical ranges and print information about them) cr
  9.  
  10. 1901 2099 RANGE YEAR_NUMBER            ( Ranges for time and date)
  11. 1 12 RANGE MONTH_NUMBER
  12. 1 31 RANGE DAY_NUMBER
  13. 1 24 RANGE HOUR_NUMBER
  14. 1 60 RANGE MINUTE_NUMBER
  15. 1 60 RANGE SECOND_NUMBER
  16.  
  17. YEAR_NUMBER .range cr                  ( Print range intervals)
  18. YEAR_NUMBER print cr                   ( Print range values)
  19. MONTH_NUMBER .range cr                 ( Print range intervals)
  20. MONTH_NUMBER print cr                  ( Print range values)
  21. DAY_NUMBER .range cr                   ( Print range intervals)
  22. DAY_NUMBER print cr                    ( Print range values)
  23.  
  24.  
  25. .( 2: Count number of odd numbers in the ranges) cr
  26.  
  27. : #odd ( range -- n)
  28.   0 swap block[ 1 and if 1+ then ]; map ; 
  29.  
  30. YEAR_NUMBER #odd . 
  31. MONTH_NUMBER #odd .
  32. DAY_NUMBER #odd . cr
  33.  
  34.  
  35. .( 3: Test membership function) cr
  36.  
  37. 3 YEAR_NUMBER ?member .
  38. 3 MONTH_NUMBER ?member .
  39. 3 DAY_NUMBER ?member . cr
  40.  
  41.  
  42. .( 4: Conditional iteration; print a sub-range) cr
  43.  
  44. : .sub.range ( upper range -- )
  45.   over over ?member
  46.   if block[ dup . over = ]; ?map
  47.   else
  48.     drop
  49.   then
  50.   drop ;
  51.  
  52. 4 DAY_NUMBER .sub.range cr
  53.  
  54.  
  55. .( 5: Union and intersections of ranges) cr
  56.  
  57. DAY_NUMBER YEAR_NUMBER ?intersection . 
  58. DAY_NUMBER YEAR_NUMBER intersection . .
  59. DAY_NUMBER YEAR_NUMBER union . . cr 
  60.  
  61. forth only
  62.  
  63.  
  64.