Olá Kathir,
Há dois pontos que gostaria de mencionar aqui -
1. Em seu trecho de código, dado que v_deci é uma variável inteira, não deveria atribuir uma string a ela. Quando você diz
v_deci = '192'
Está tentando converter um literal do tipo caractere em um inteiro. Aqui não há problema, você não notará diferença e a conversão será realizada.
Mas o ponto é que não há necessidade desse tipo de conversão neste caso. Você deveria estar usando -
v_deci = 192.
2. Em seu código, se eu atribuir um valor, digamos, 600 a v_deci, então a conversão falhará. O equivalente hexadecimal que você obterá será 58. O que claramente está incorreto. Em seu caso, v_hexa é capaz de conter um equivalente inteiro de até 256. Para tornar as coisas mais genéricas, você deve usar...
data: v_hexa(4) type x,
v_deci type i.
A extensão é dada como 4, porque se assume que um inteiro ocupa 4 bytes.
Saudações,
Anand Mandalika.