1namespace eval ::iwidgets {
2  variable romand
3  set romand(val)   {1000 900 500 400 100 90 50 40 10  9 5  4 1}
4  set romand(upper) {   M  CM   D  CD   C XC  L XL  X IX V IV I}
5  set romand(lower) {   m  cm   d  cd   c xc  l xl  x ix v iv i}
6
7  proc roman2 {n {case upper}} {
8      variable romand
9      set r ""
10      foreach val $romand(val) sym $romand($case) {
11          while {$n >= $val} {
12              set r "$r$sym"
13              incr n -$val
14          }
15      }
16      return $r
17  }
18
19  proc roman {n {case upper}} {
20      variable romand
21      set r ""
22      foreach val $romand(val) sym $romand($case) {
23          for {} {$n >= $val} {incr n -$val} {
24              set r "$r$sym"
25          }
26      }
27      return $r
28  }
29}
30