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);
и тд. Фактически это не типы данных, это то, во что должен превратиться кусок памяти в данный момент.