15 lines
622 B
Text
15 lines
622 B
Text
* Roman to Arabic
|
|
define("arabic1(romans,arabic1)rdigit,adigit,b4")
|
|
romans1 = " 0 IX9 IV4 III3 II2 I1 VIII8 VII7 VI6 V5" :(arabic1_end)
|
|
arabic1 ident(romans) :s(return)
|
|
romans (break("IV") | rem) . b4 rem . rdigit = b4
|
|
romans1 " " rdigit any("0123456789") . adigit
|
|
arabic1 = adigit arabic1
|
|
romans = replace(romans,"MDCLX","CLXVI") :(arabic1)
|
|
arabic1_end
|
|
* Test and display
|
|
tstr = "MMX MCMXCIX MCDXCII MLXVI CDLXXVI "
|
|
tloop tstr break(' ') . r span(' ') = :f(out)
|
|
astr = astr r '=' arabic1(r) ' ' :(tloop)
|
|
out output = astr
|
|
end
|