Microsoft Small Basic

Program Listing:
Embed this in your website
a2r = "1=I;5=V;10=X;50=L;100=C;500=D;1000=M;"
While "True"
  TextWindow.Write("? ")
  arabic = TextWindow.Read()
  ToRoman()
EndWhile
Sub ToRoman
  If (arabic < 1) Or (3999 < arabic) Or (Math.Floor(arabic) < arabic) Then
    TextWindow.WriteLine(arabic + " is too small, too large, fraction or not number.")
  Else
    roman = ""
    a = arabic
    len = Text.GetLength(a)
    o = 1
    While a <> ""
      d = Text.GetSubTextToEnd(a, len)
      a = Text.GetSubText(a, 1, len - 1)
      len = len - 1
      ConvertDigit()
      o = o * 10
    EndWhile
    TextWindow.WriteLine(roman)
  EndIf
EndSub
Sub ConvertDigit
  ' param d - arabic digit to convert
  ' param o - order
  ' return roman
  _d = d
  If _d = 9 Then
    roman = a2r[10 * o] + roman
    _d = 1
  ElseIf _d = 4 Then
    roman = a2r[5 * o] + roman
    _d = 1
  EndIf
  For i = 1 To Math.Remainder(_d, 5)
    roman = a2r[o] + roman
  EndFor
  If 5 <= _d Then
    roman = a2r[5 * o] + roman
  EndIf
EndSub
Copyright (c) Microsoft Corporation. All rights reserved.