Si quieres otra forma de hacer lo mismo, acá va la funcion of_dec, donde le pasas un string y te devuelve unsigned long:
------------------------------
//ulong of_dec (string as_data)
char lch_char
Unsignedlong lul_decimal=0
UnsignedLong lul_value
//Convierte un Hexadecimal en decimal
as_data = lower (as_data)
Do
lch_char = left (as_data, 1)
//Obtiene el valor decimal para una unidad hexadecimal
Choose Case lch_char
Case '0' to '9'
lul_value = long (lch_char)
Case 'a' to 'f'
//get the value for 'a' - 'f'
lul_value = asc (lch_char) - 87
End Choose
//Crea el equivalente decimal
lul_decimal = lul_decimal * 16 + lul_value
as_data = mid (as_data, 2)
Loop Until as_data = ''
Return lul_decimal
-------------------
La función de Ricardo funciona y ésta también. Eres afortunado!