>From 830b2b67e6a114984acf0686efad9fac87400b21 Mon Sep 17 00:00:00 2001
From: Robert Dubner <rdub...@symas.com>
Date: Mon, 11 Aug 2025 20:56:38 -0400
Subject: [PATCH] cobol: Bring EBCDIC NumericDisplay variables into IBM
 compliance.

The internal representation of Numeric Display (ND) zoned decimal
variables
when operating in EBCDIC mode has been brought into compliance with IBM
conventions.  This requires changes to data input, data output, internal
conversion of zoned decimal to binary, and variable assignment.

gcc/cobol/ChangeLog:

        * genapi.cc (compare_binary_binary): Formatting.
        (cobol_compare): Formatting.
        (mh_numeric_display): Rewrite "move ND to ND" algorithm.
        (initial_from_initial): Proper initialization of EBCDIC ND
variables.
        * genmath.cc (fast_add): Delete comment.
        * genutil.cc (get_binary_value): Modify for updated EBCDIC.

libgcobol/ChangeLog:

        * common-defs.h (NUMERIC_DISPLAY_SIGN_BIT): New comment; new
constant.
        (EBCDIC_MINUS): New constant.
        (EBCDIC_PLUS): Likewise.
        (EBCDIC_ZERO): Likewise.
        (EBCDIC_NINE): Likewise.
        (PACKED_NYBBLE_PLUS): Likewise.
        (PACKED_NYBBLE_MINUS): Likewise.
        (PACKED_NYBBLE_UNSIGNED): Likewise.
        (NUMERIC_DISPLAY_SIGN_BIT_ASCII): Likewise.
        (NUMERIC_DISPLAY_SIGN_BIT_EBCDIC): Likewise.
        (SEPARATE_PLUS): Likewise.
        (SEPARATE_MINUS): Likewise.
        (ZONED_ZERO): Likewise.
        (ZONE_SIGNED_EBCDIC): Likewise.
        * configure: Regenerate.
        * libgcobol.cc (turn_sign_bit_on): Handle new EBCDIC sign
convention.
        (turn_sign_bit_off): Likewise.
        (is_sign_bit_on): Likewise.
        (int128_to_field): EBCDIC NumericDisplay conversion.
        (get_binary_value_local): Likewise.
        (format_for_display_internal): Likewise.
        (normalize_id): Likewise.
        (__gg__inspect_format_1): Convert EBCDIC negative numbers to
positive.
        * stringbin.cc (packed_from_combined): Quell cppcheck warning.

gcc/testsuite/ChangeLog:

        *
cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.out:
        Change test for updated handling of Numeric Display variables.
---
 gcc/cobol/genapi.cc                           | 462 +++++++-----------
 gcc/cobol/genmath.cc                          |   1 -
 gcc/cobol/genutil.cc                          | 104 ++--
 ...Rule_8_OPTION_INITIALIZE_with_figconst.out |   6 +-
 libgcobol/common-defs.h                       |  53 +-
 libgcobol/configure                           |   1 -
 libgcobol/libgcobol.cc                        | 360 ++++++++++----
 libgcobol/stringbin.cc                        |   2 +-
 8 files changed, 527 insertions(+), 462 deletions(-)


Attachment: 0001-cobol-Bring-EBCDIC-NumericDisplay-variables-into-IBM.patch
Description: Binary data

Reply via email to