FUNCTION HexValue RETURNS CHAR (INPUT ipiNumber# AS INTEGER): DEFINE VARIABLE cLiteral# AS CHARACTER NO-UNDO. CASE ipiNumber#: WHEN 0 THEN cLiteral# = "0". WHEN 1 THEN cLiteral# = "1". WHEN 2 THEN cLiteral# = "2". WHEN 3 THEN cLiteral# = "3". WHEN 4 THEN cLiteral# = "4". WHEN 5 THEN cLiteral# = "5". WHEN 6 THEN cLiteral# = "6". WHEN 7 THEN cLiteral# = "7". WHEN 8 THEN cLiteral# = "8". WHEN 9 THEN cLiteral# = "9". WHEN 10 THEN cLiteral# = "a". WHEN 11 THEN cLiteral# = "b". WHEN 12 THEN cLiteral# = "c". WHEN 13 THEN cLiteral# = "d". WHEN 14 THEN cLiteral# = "e". WHEN 15 THEN cLiteral# = "f". OTHERWISE cLiteral# = "". END CASE. RETURN cLiteral#. END FUNCTION. FUNCTION DecValue RETURNS INT (INPUT ipcLiteral# AS CHARACTER): DEFINE VARIABLE iNumber# AS INTEGER NO-UNDO. CASE ipcLiteral#: WHEN "0" THEN iNumber# = 0. WHEN "1" THEN iNumber# = 1. WHEN "2" THEN iNumber# = 2. WHEN "3" THEN iNumber# = 3. WHEN "4" THEN iNumber# = 4. WHEN "5" THEN iNumber# = 5. WHEN "6" THEN iNumber# = 6. WHEN "7" THEN iNumber# = 7. WHEN "8" THEN iNumber# = 8. WHEN "9" THEN iNumber# = 9. WHEN "a" THEN iNumber# = 10. WHEN "b" THEN iNumber# = 11. WHEN "c" THEN iNumber# = 12. WHEN "d" THEN iNumber# = 13. WHEN "e" THEN iNumber# = 14. WHEN "f" THEN iNumber# = 15. OTHERWISE iNumber# = ?. END CASE. RETURN iNumber#. END FUNCTION. FUNCTION DecToHex RETURNS CHAR (INPUT ipfDecimalToConvert# AS DECIMAL): DEFINE VARIABLE fDecimal# AS DECIMAL NO-UNDO. DEFINE VARIABLE fTempDecimal# AS DECIMAL NO-UNDO. DEFINE VARIABLE cHexaDecimal# AS CHARACTER NO-UNDO. DEFINE VARIABLE iRemainder# AS INTEGER NO-UNDO. fDecimal# = ipfDecimalToConvert#. DO WHILE fDecimal# GT 0: ASSIGN fTempDecimal# = fDecimal# / 16 fTempDecimal# = TRUNCATE(fTempDecimal#,0) iRemainder# = fDecimal# - ( 16 * fTempDecimal# ) cHexaDecimal# = HexValue(iRemainder#) + cHexaDecimal# fDecimal# = fTempDecimal# . END. RETURN cHexaDecimal#. END FUNCTION. FUNCTION HexToDec RETURNS DECIMAL (INPUT ipcHexToConvert# AS CHARACTER): DEFINE VARIABLE fDecimal# AS DECIMAL NO-UNDO. DEFINE VARIABLE fTempDecimal# AS DECIMAL NO-UNDO. DEFINE VARIABLE iCount# AS INTEGER NO-UNDO. DEFINE VARIABLE iPower# AS INTEGER NO-UNDO. DO iCount# = LENGTH(ipcHexToConvert#) TO 1 BY -1: ASSIGN fTempDecimal# = DecValue( SUBSTRING( ipcHexToConvert# , iCount# , 1 ) ) fDecimal# = fTempDecimal# * EXP( 16 , iPower# ) + fDecimal# iPower# = iPower# + 1 . END. RETURN fDecimal#. END FUNCTION.