В COBOL шестнадцатеричные значения часто необходимо преобразовать в числовой формат для различных вычислений и обработки. В этой статье мы рассмотрим несколько методов преобразования шестнадцатеричных значений в числовые в COBOL, а также приведем примеры кода. Независимо от того, являетесь ли вы новичком или опытным программистом COBOL, это руководство предоставит вам различные методы эффективного преобразования шестнадцатеричных чисел в числа.
Метод 1: использование функции ЧИСЛО
Пример кода:
IDENTIFICATION DIVISION.
PROGRAM-ID. HEX-TO-NUM.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 HEX-VALUE PIC X(10) VALUE '1F'.
01 NUMERIC-VALUE PIC 9(4).
PROCEDURE DIVISION.
MOVE FUNCTION NUMVAL(HEX-VALUE) TO NUMERIC-VALUE.
DISPLAY "Numeric Value: " NUMERIC-VALUE.
STOP RUN.
Метод 2: преобразование вручную
Пример кода:
IDENTIFICATION DIVISION.
PROGRAM-ID. HEX-TO-NUM.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 HEX-VALUE PIC X(10) VALUE '1F'.
01 NUMERIC-VALUE PIC 9(4).
PROCEDURE DIVISION.
MOVE ZERO TO NUMERIC-VALUE.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > LENGTH OF HEX-VALUE
COMPUTE NUMERIC-VALUE = NUMERIC-VALUE * 16 + FUNCTION ORD(HEX-VALUE(I:I)) - FUNCTION ORD('0').
END-PERFORM.
DISPLAY "Numeric Value: " NUMERIC-VALUE.
STOP RUN.
Метод 3: использование оператора UNSTRING
Пример кода:
IDENTIFICATION DIVISION.
PROGRAM-ID. HEX-TO-NUM.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 HEX-VALUE PIC X(10) VALUE '1F'.
01 NUMERIC-VALUE PIC 9(4).
01 CHAR-VALUE PIC X.
PROCEDURE DIVISION.
MOVE ZERO TO NUMERIC-VALUE.
UNSTRING HEX-VALUE DELIMITED BY SPACE
INTO CHAR-VALUE
PERFORM VARYING I FROM 1 BY 1 UNTIL I > LENGTH OF CHAR-VALUE
COMPUTE NUMERIC-VALUE = NUMERIC-VALUE * 16 + FUNCTION ORD(CHAR-VALUE(I:I)) - FUNCTION ORD('0').
END-UNSTRING.
DISPLAY "Numeric Value: " NUMERIC-VALUE.
STOP RUN.
Метод 4: использование оператора INSPECT
Пример кода:
IDENTIFICATION DIVISION.
PROGRAM-ID. HEX-TO-NUM.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 HEX-VALUE PIC X(10) VALUE '1F'.
01 NUMERIC-VALUE PIC 9(4).
01 HEX-DIGIT PIC X.
PROCEDURE DIVISION.
MOVE ZERO TO NUMERIC-VALUE.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > LENGTH OF HEX-VALUE
MOVE HEX-VALUE(I:I) TO HEX-DIGIT
INSPECT HEX-DIGIT CONVERTING
'0' THRU '9' TO 0 THRU 9
'A' THRU 'F' TO 10 THRU 15
END-INSPECT
COMPUTE NUMERIC-VALUE = NUMERIC-VALUE * 16 + FUNCTION NUMVAL(HEX-DIGIT).
END-PERFORM.
DISPLAY "Numeric Value: " NUMERIC-VALUE.
STOP RUN.
В этой статье мы рассмотрели несколько методов преобразования шестнадцатеричных значений в числовые в COBOL. Мы рассмотрели использование функции ЧИСЛО, ручное преобразование с использованием арифметических операций, оператор UNSTRING и оператор INSPECT. Каждый метод имеет свои преимущества и может использоваться в зависимости от конкретных требований вашей программы COBOL. Реализуя эти методы, вы можете эффективно выполнять преобразования шестнадцатеричных чисел в свои приложения COBOL.