Hola Kathir,
Hay dos puntos que me gustaría mencionar aquí -
1. En tu fragmento de código, dado que v_deci es una variable entera, no deberías asignarle una cadena. Cuando dices
v_deci = '192'
Estás intentando convertir un literal de tipo carácter en un entero. Aquí no hay problema, no notarás ninguna diferencia y la conversión se realiza.
Pero el punto es que no hay necesidad de este tipo de conversión en este caso. Deberías estar usando -
v_deci = 192.
2. En tu código, si le doy un valor, digamos, 600 a v_deci, entonces la conversión fallará. El equivalente hexadecimal que obtendrás es 58. Lo cual es claramente incorrecto. En tu caso, v_hexa es capaz de contener un equivalente entero de hasta 256. para hacer las cosas más genéricas, debes usar...
data: v_hexa(4) type x,
v_deci type i.
la longitud se da como 4, porque se asume que un entero ocupa 4 bytes.
Saludos,
Anand Mandalika.