20 lines
628 B
Plaintext
20 lines
628 B
Plaintext
/* From Wiki Fortran */
|
|
roman: procedure (n) returns(character (32) varying);
|
|
declare n fixed binary nonassignable;
|
|
declare (d, m) fixed binary;
|
|
declare (r, m_div) character (32) varying;
|
|
declare d_dec(13) fixed binary static initial
|
|
(1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1);
|
|
declare d_rom(13) character (2) varying static initial
|
|
('M', 'CM', 'D', 'CD', 'C', 'XC', 'L',
|
|
'XL', 'X', 'IX', 'V', 'IV', 'I');
|
|
r = '';
|
|
m = n;
|
|
do d = 1 to 13;
|
|
m_div = m / d_dec (d);
|
|
r = r || copy (d_rom (d), m_div);
|
|
m = m - d_dec (d) * m_div;
|
|
end;
|
|
return (r);
|
|
end roman;
|