views:

545

answers:

3

I have a string 'RAJA' which should be written into a file as HEX data. Here are sample codes which help me to describe the issue. Case(a)

name = 'RAJA'   
name = C2X(name) /* Hex value = '52414A41' */
QUEUE name.

Output to the file: 52414A41

But if we use HEX data directly to write into file it's working fine Case(b)

name = '52414A41'X
QUEUE name.

Output to the file: RAJA

Issue: In case(a) when the string was converted into HEX using C2X, it returns a HEX data string not a HEX data. But in case(b) as HEX data was written to file. My question is how to let REXX interpreter know that the variable 'name' in case(a) has HEX data and to be written it as HEX. Hope i made the issue clear. Lemme tread towards a solution.

A: 

Finally, I could resolve MYSELF issue described top. There is built-in function in REXX called 'INTERPRET', which helps us in building dynamic REXX commands. Here is the single statement, made me run the module successfully:

INTERPRET name_hex "= '" || name || "'X"

It dynamically creates a REXX statement:

name_hex = 'name'X

which will tell REXX interpreter the string in 'name' as HEX data.

Awesome right! Hope I made you clear.. Do get back to me with your questions..

Raja Reddy
+1  A: 

You could also use the x2c function

say x2c(52414A41)

displays RAJA

For most of the functions like c2x reversing the characters does the reverse

i.e.

say d2c(c2d(10))

say c2d(d2c(10))

say x2d(d2x(10))

all display 10

Bruce Martin
A: 

I don't think you have a strong grasp of what you are trying to do here... Run the following REXX program and then figure out why it displays what it does. Once you have managed that, you can probably come up with a better solution to your hex/character problem.


name = 'RAJA'
say name            /* RAJA */
name = C2X(name)
say name            /* 52414A41 */
name = X2C(name)
say name            /* RAJA */
name = '52414A41'x
say name            /* RAJA */
name = X2C('52414A41')
say name            /* RAJA */
name = '52414A41'
INTERPRET "name = '" || name || "'X"
say name            /* RAJA */
NealB
NealB, you might feel that the variable 'name' has same value in every step. But each time the type of data changes. C2X gives a HEX string, but not the HEX value. My problem was writing this HEX string into a file as HEX value. I know it's confusing.. Writing string '52414A41' is different from writing '52414A41'X. For better understanding use a numeric data as example.
Raja Reddy
Quote from the REXX manual: **A hexadecimal string is not a representation of a number. It is an escape mechanism that lets a user describe a character in terms of its encoding**, so of course '52414A41' and '52414A41'x are different! I don't think I've understood or understand what you really mean by "HEX string" vs "HEX value". Let's just call it a day and move on.
NealB