Quote (akost) А что это вы делаете? Вырезали строчку - и чего? Нафига символы в шестнацетеричный вид, потом - в десятичный? Это все зачем? Представь, что я получил строку, часть которой является шестнадцатиричным числом и хочу прибавить 5 например. var0='TRK=0D5F' var1=SUBSTR(var0,5,4) <== или var1='0D5F' var2=var1+5 получаем: Error running TESTPGM, line 3: Bad arithmetic conversion Тоесть нету способа (если вы мне не расскажете) работать с 0x числами напрямую. Фактически у Рекса один тип - строка. А мы через функции пытаемся задать тип. Функция + будет думать, что строка число, но обязательно десятичное. Значит мне надо перевести мою строку(типа 16 типа) в строку(10 типа). Как ?? var3=C2X(var1) <== получаем var3='C4F0F5F6' , смешно, да ? Кстати, var3='0D5F'x делает совсем другое. Строку из 2 байтов, к которым тоже ничего прибавить не дадут. И наконец var4=X2D(var3) даст строку(которая выглядит как 10е число) и к нему можно что то прибавить. Да, мне не повезло с входными данными. Но заставлять меня 2 раза перетиповывать данные, вместо того, чтобы дать с ними работать как с без-типовыми данными... это... (слов нет или как минимум РЕКС не является языком с без типовыми данными) Уж скорее Си является таким языком, где всё - это область памяти, а вы как хотите, так и используйте: char var1='A'; short var2=var1+5; long var3=(char)var2; printf("%X",var1); и тд. Фактически это не типы данных, это то, во что должен превратиться кусок памяти в данный момент.
Худая корова еще не газель!
|