proc toroman(word n; *char buf) *char: *char parts = "M\e\eCM\eD\e\eCD\eC\e\eXC\eL\e\eXL\eX\e\eIX\eV\e\eIV\eI"; [13]word sizes = (1000,900,500,400,100,90,50,40,10,9,5,4,1); channel output text roman; word part; open(roman, buf); while n > 0 do part := 0; while sizes[part]>n do part := part+1 od; write(roman; parts + 3*part); n := n - sizes[part] od; close(roman); buf corp proc test(word n) void: [32]char buf; writeln(n, ": ", toroman(n, &buf[0])) corp proc main() void: test(1666); test(2008); test(1001); test(1999); test(3888); test(2025) corp