`` Natural To Roman `` http://www..scriptol.net `` Public Domain Program `` Converts a natural number into roman notation // Requires a Scriptol compiler and a C++ compiler or Php5. class RomanToDecimal int PostValue text PostLetter int PreValue text PreLetter void RomanToDecimal(int a, text b, int c, text d) PostValue = a PostLetter = b PreValue = c PreLetter = d return /class array RomanConvert `` `` nat2roman() - Convert a long integer into roman numerals `` Input: natural value to convert `` Ouput: roman conversion `` text nat2roman(natural val) int place = 0 text result RomanToDecimal rtd dyn d if val > 3999 print val, "too big..." return null /if do d = RomanConvert[place] rtd = d.toObject() int pv = rtd.PostValue while val >= pv result + rtd.PostLetter val - pv /while if val >= rtd.PreValue result + rtd.PreLetter val - rtd.PreValue /if place + 1 /do while val > 0 return result int main(int argc, array argv) int value text roman dyn d if argc < 2 print "Natural To Roman - www.scriptol.net" print "Syntax: roman2 number [number] ..." exit(0) /if RomanConvert.push( RomanToDecimal(1000, "M", 900, "CM")) RomanConvert.push( RomanToDecimal(500, "D", 400, "CD")) RomanConvert.push( RomanToDecimal(100, "C", 90, "XC")) RomanConvert.push( RomanToDecimal(50, "L", 40, "XL")) RomanConvert.push( RomanToDecimal(10, "X", 9, "IX")) RomanConvert.push( RomanToDecimal(5, "V", 4, "IV")) RomanConvert.push( RomanToDecimal(1, "I", 1, "I")) for int i in 1 -- argc value = argv[i].toInt() roman = nat2roman(value) if roman = null print "aborted..." else print value, "=", roman /if /for return 0 main($argc, $argv)