>From f797eb72a8d08b8e3bc7df3d1bf8975bd5fdb710 Mon Sep 17 00:00:00 2001
From: Robert Dubner <[email protected]>
Date: Fri, 5 Jun 2026 15:16:06 -0400
Subject: [PATCH] cobol: Update tests for IBM COMP-1/2 formatting.

gcc/testsuite/ChangeLog:

        * cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.cob:
        Tests for "DISPLAY 1.23" as ".123 01".
        * cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.out:
        Likewise.
---
 ...ISPLAY_IBM-formatted_COMP-1_and_COMP-2.cob | 62 ++++++++++++-------
 ...ISPLAY_IBM-formatted_COMP-1_and_COMP-2.out | 13 ++--
 2 files changed, 47 insertions(+), 28 deletions(-)

diff --git
a/gcc/testsuite/cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.co
b
b/gcc/testsuite/cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.co
b
index 5be9ea22199..f7927e7c3b1 100644
---
a/gcc/testsuite/cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.co
b
+++
b/gcc/testsuite/cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.co
b
@@ -1,25 +1,45 @@
        *> { dg-do run }
        *> { dg-options "-dialect ibm" }
        *> { dg-output-file
"group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.out" }
-        identification              division.
-        program-id.                 prog.
-        data                        division.
-        working-storage             section.
-        01  f1 comp-1 value 1.5.
-        01  f2 comp-1 value 0.1.
-        01  f3 comp-1 value -2.75.
-        01  f4 comp-1 value 1500.
-        01  f5 comp-1 value 0.001500.
-        01  d1 comp-2 value 2.71828.
-        01  d2 comp-2 value -0.0000271828.
-        procedure                   division.
-            display f1
-            display f2
-            display f3
-            display f4
-            display f5
-            display d1
-            display d2
-            goback.
-        end program                 prog.
+      * gcobol bug reproducer: DISPLAY of a COMP-1 / COMP-2 (internal
floating-point)
+      * item does not use the IBM external floating-point form.
+      *
+      * Per IBM Enterprise COBOL, DISPLAY of an internal floating-point
item converts it
+      * to external floating-point: a COMP-1 displays "as if it had an
external
+      * floating-point PICTURE clause of -.9(8)E-99", and a COMP-2 as
-.9(17)E-99
+      * (Language Reference SC27-8713-04, "DISPLAY statement", p.340).
The value is shown as
+      *   <sign>.<mantissa>E<expsign><2-digit exponent>
+      * with the mantissa normalized to a leading non-zero digit, and the
sign / exponent
+      * sign blank for non-negative.
+      *
+      * Observed (gcobol 15.2.0)        Expected (IBM LR external
floating-point)
+      *   1.5                             " .15000000E 01"
+      *   0.1000000015                    " .10000000E 00"
+      *   -2.75                           "-.27500000E 01"
+      *   1500                            " .15000000E 04"
+      *   2.71828000000000003             " .27182800000000000E 01"
+      *
+      * gcobol prints the plain decimal value (with binary-float
artifacts) instead of the
+      * documented external floating-point layout.  This reproduces with
the default
+      * dialect and also with "-dialect ibm" specified explicitly:
+      *   gcobol -dialect ibm -o fltdisp float-display-not-external.cob
&& ./fltdisp
+      * produces the same (non-conforming) output.
+       IDENTIFICATION DIVISION.
+       PROGRAM-ID. FLTDISP.
+       DATA DIVISION.
+       WORKING-STORAGE SECTION.
+       01  F1 COMP-1 VALUE 1.5.
+       01  F2 COMP-1 VALUE 0.1.
+       01  F3 COMP-1 VALUE -2.75.
+       01  F4 COMP-1 VALUE 1500.
+       01  D1 COMP-2 VALUE 2.71828.
+       01  D2 COMP-2 VALUE -.0000314159.
+       PROCEDURE DIVISION.
+           DISPLAY F1
+           DISPLAY F2
+           DISPLAY F3
+           DISPLAY F4
+           DISPLAY D1
+           DISPLAY D2
+           STOP RUN.
 
diff --git
a/gcc/testsuite/cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.ou
t
b/gcc/testsuite/cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.ou
t
index 9c7d7775cb6..15ac657fb43 100644
---
a/gcc/testsuite/cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.ou
t
+++
b/gcc/testsuite/cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.ou
t
@@ -1,8 +1,7 @@
- 1.50000000E 00
- 1.00000001E-01
--2.75000000E 00
- 1.50000000E 03
- 1.50000001E-03
- 2.71828000000000003E 00
--2.71828000000000000E-05
+ .15000000E 01
+ .10000000E 00
+-.27500000E 01
+ .15000000E 04
+ .27182800000000000E 01
+-.31415900000000000E-04
 
-- 
2.34.1

Reply via email to