[Openroad-users] Convert numbers to Roman

Hervé de Gabai hdgcontact-2007 at yahoo.co.uk
Tue Jul 8 16:37:39 EST 2008


Good Morning all,
 
Thank you Bodo for the int2roman procedure which might prove useful.
Do you also have an OpenRoad Procedure to convert roman to integer?
 
Regards
Hervé de Gabai
Applications Systems Division
International Telecommunications Union
 
----- Original Message ----
From: Bodo Bergmann <Bodo.Bergmann at ingres.com>
To: International OpenROAD Users <openroad-users at peerlessit.com>
Sent: Wednesday, 2 July, 2008 1:51:15 PM
Subject: Re: [Openroad-users] Convert numbers to Roman


Have you tried something like this (modiefied from some VB example I found - should work for numbers<4000):
 
PROCEDURE int2roman(iNumber=INTEGER NOT NULL)=
DECLARE
    sNumeral=VARCHAR(4) NOT NULL;
ENDDECLARE
{
    WHILE (iNumber > 0) DO
        IF iNumber >= 1000 THEN 
            sNumeral = sNumeral + 'M'; 
            iNumber = iNumber - 1000;
        ELSEIF iNumber >= 900 THEN 
            sNumeral = sNumeral + 'CM';
            iNumber = iNumber - 900;
        ELSEIF iNumber >= 500 THEN
            sNumeral = sNumeral + 'D'; 
            iNumber = iNumber - 500;
        ELSEIF iNumber >= 400 THEN 
            sNumeral = sNumeral + 'CD'; 
            iNumber = iNumber - 400;
        ELSEIF iNumber >= 100 THEN 
            sNumeral = sNumeral + 'C'; 
            iNumber = iNumber - 100;
        ELSEIF iNumber >= 90 THEN
            sNumeral = sNumeral + 'XC';
            iNumber = iNumber - 90; 
        ELSEIF iNumber >= 50 THEN 
            sNumeral = sNumeral + 'L'; 
            iNumber = iNumber - 50;
        ELSEIF iNumber >= 40 THEN 
            sNumeral = sNumeral + 'XL';
            iNumber = iNumber - 40;
        ELSEIF iNumber >= 10 THEN 
            sNumeral = sNumeral + 'X';
            iNumber = iNumber - 10;
        ELSEIF iNumber = 9 THEN 
            sNumeral = sNumeral + 'IX';
            iNumber = 0;
        ELSEIF iNumber >= 5 THEN 
            sNumeral = sNumeral + 'V';
            iNumber = iNumber - 5;
        ELSEIF iNumber = 4 THEN 
            sNumeral = sNumeral + 'IV';
            iNumber = 0;
        Else 
            sNumeral = sNumeral + 'I';
            iNumber = iNumber - 1;
        ENDIF; 
    ENDWHILE; 
    RETURN sNumeral;
}
 
You can of course apply lowercase() to the return value if required.
 
Bodo.
Bodo Bergmann| Sr. Software Engineer | Bodo.Bergmann at ingres.com| Ingres Germany GmbH | Ohmstr. 12 | 63225 Langen |  GERMANY  | +49 6103 9881 0



      __________________________________________________________
Not happy with your email address?.
Get the one you really want - millions of new email addresses available now at Yahoo! http://uk.docs.yahoo.com/ymail/new.html
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.peerlessit.com/pipermail/openroad-users/attachments/20080708/464845d9/attachment.html 


More information about the Openroad-users mailing list