Преобразование шестнадцатеричного числа в числовое в COBOL: подробное руководство

В 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.