*---------------------------------------------------------------------* * FORM CONVERT_HEX_TO_DECIMAL *---------------------------------------------------------------------* * [+] Converts a Hex number into a Decimal number *---------------------------------------------------------------------* FORM convert_hex_to_decimal USING value(p_value) TYPE c CHANGING p_number TYPE i. TRANSLATE p_value TO UPPER CASE. DATA: lv_total TYPE i, lv_number TYPE i, lv_length TYPE i, lv_counter TYPE i, lv_power_counter TYPE i, lv_letter(1) TYPE c, lv_letter_pos TYPE i. CLEAR: lv_counter, lv_number. lv_length = STRLEN( p_value ). WHILE lv_counter < lv_length. lv_letter_pos = lv_length - lv_counter - 1. lv_letter = p_value+lv_letter_pos(1). CASE lv_letter. WHEN '1'. lv_number = 1. WHEN '2'. lv_number = 2. WHEN '3'. lv_number = 3. WHEN '4'. lv_number = 4. WHEN '5'. lv_number = 5. WHEN '6'. lv_number = 6. WHEN '7'. lv_number = 7. WHEN '8'. lv_number = 8. WHEN '9'. lv_number = 9. WHEN 'A'. lv_number = 10. WHEN 'B'. lv_number = 11. WHEN 'C'. lv_number = 12. WHEN 'D'. lv_number = 13. WHEN 'E'. lv_number = 14. WHEN 'F'. lv_number = 15. ENDCASE. lv_power_counter = 4 * lv_counter. WHILE lv_power_counter > 0. MULTIPLY lv_number BY 2. SUBTRACT 1 FROM lv_power_counter. ENDWHILE. ADD lv_number TO lv_total. ADD 1 TO lv_counter. ENDWHILE. MOVE lv_total TO p_number. ENDFORM. "CONVERT_HEX_TO_DECIMAL