View previous topic :: View next topic
|
Author |
Message |
surya anem
New User
Joined: 20 Dec 2007 Posts: 54 Location: Hyderabad
|
|
|
|
Hi,
I am unable to convert numeric data to comp-data using rexx.
If anyone had already worked on it or if anyone have any ideas on it kindly let me know how to do the same.
I need the conversion to write the data back into the datafile after the conversion
with regards,
surya |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10873 Location: italy
|
|
|
|
things in REXX are character strings so whenfrocessing records ( in general )
fields must be parsed and converted accordingly
the representations that might be object of discussion are
hexadecimal fields with no numeric implications ( flags bits for example )
binary numbers
packed numbers
remember also that when converting You must reformat according to the picture ( decimal point issue)
here is snippet with samples of different conversions
Code: |
hexad = '1234'x
binry = '0002'x
packd = '002c'x
say "hexad = '1234'x " hexad
say "binry = '0002'x " binry
say "packd = '002c'x " packd
say "c2x(hexad) " c2x(hexad)
say "c2x(binry) " c2x(binry)
say "c2x(packd) " c2x(packd)
say "c2d(hexad) " c2d(hexad)
say "c2d(binry) " c2d(binry)
say "c2d(packd) " c2d(packd)
say "unpack(packd) " unpack(packd)
exit
unpack: procedure
parse arg packed
/* Convert packed data to hex and split */
char = c2x(packed)
number = left( char, length(char)-1 )
sign = right( char, 1 )
/* Check sign and numeric sections */
if verify(sign, "ABCDEF" ) > 0 then ,
return ""
if verify( number, "0123456789" ) > 0 then ,
return ""
/* Check negative sign */
if pos(sign, "BD" ) > 0 then,
return -number
else ,
return number
exit
|
|
|
Back to top |
|
|
surya anem
New User
Joined: 20 Dec 2007 Posts: 54 Location: Hyderabad
|
|
|
|
Hi,
Thanks a lot..My code is working now. I always get confused between the conversions and this code of urs has cleared most of doubts.
with regards,
surya |
|
Back to top |
|
|
|