/* REXX HEXADECIMAL TO DECIMAL CONVERSION */ /*----------------------------------------*/ /* GENERATE DECIMAL TABLE FOR CONVERSION */ /* FROM HEX VALUE UP TO 6 DIGITS */ /*----------------------------------------*/ I = 1 DO N = 0 TO 5 SIXTEEN_POWER = 16 ** N DO D = 0 TO 15 DEC_VALUE.I = SIXTEEN_POWER * D I = I + 1 END END /*----------------------------------------*/ /* GENERATE HEX TABLE */ /*----------------------------------------*/ DO X = 1 TO 16 HEX_VALUE.X = SUBSTR('0123456789ABCDEF',X,1) END SAY "HEXADECIMAL TO DECIMAL CONVERSION" SAY "ENTER YOUR HEXADECIMAL: " PULL HEX SIZE = LENGTH(HEX) IF SIZE > 6 THEN DO SAY "HEX VALUE IS TO LARGE" EXIT END /*----------------------------------------*/ /* DECIMAL CONVERSION */ /*----------------------------------------*/ ANS = 0 HEX_TBLE_COL = 1 DO WHILE SIZE > 0 X = 1 IF SUBSTR(HEX,SIZE,1) = 0 THEN X = 1 ELSE DO UNTIL HEX_VALUE.X = SUBSTR(HEX,SIZE,1) X = X +1 IF X > 16 THEN DO SAY "INVALID HEX VALUE: " HEX EXIT END END D = HEX_TBLE_COL + X - 1 ANS = ANS + DEC_VALUE.D SIZE = SIZE - 1 HEX_TBLE_COL = HEX_TBLE_COL + 16 END SAY "DECIMAL VALUE IS: " ANS EXIT