Skip to content

Commit 5870488

Browse files
Update
1 parent 24ad0c7 commit 5870488

File tree

3 files changed

+72
-33
lines changed

3 files changed

+72
-33
lines changed

cobc/ChangeLog

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11

22
2024-12-18 Emilien Lemaire <[email protected]>
33

4+
* cobgen.c, field.c, tree.c, tree.h, typeck.c: Hand merge 2015-07-02
5+
about COMP-X.
46
* cobgen.c (output_size): use `compx_size` when usage is COMP-X
57
* cobgen.c (output_attr): override type to `COB_TYPE_NUMERIC_BINARY`
68
when usage is `COMP-X`
@@ -7325,6 +7327,10 @@
73257327
* codegen.c (output_size): Fix Bug #146 reference modification
73267328
ignored ODO size
73277329

7330+
2015-07-02 Ron Norman
7331+
* Fixes to tree.c, tree,h typeck.c field.c codegen.c to correctly
7332+
handle COMP-X data fields. This now works the same as Micro Focus
7333+
73287334
2015-06-12 Edward Hart <[email protected]>
73297335

73307336
* codegen.c: bug #78 - changed location of initialization of

cobc/tree.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1533,6 +1533,9 @@ cb_tree_type (const cb_tree x, const struct cb_field *f)
15331533
switch (CB_TREE_CATEGORY (x)) {
15341534
case CB_CATEGORY_ALPHABETIC:
15351535
case CB_CATEGORY_ALPHANUMERIC:
1536+
if (f->usage == CB_USAGE_COMP_X) {
1537+
return COB_TYPE_NUMERIC_BINARY;
1538+
}
15361539
return COB_TYPE_ALPHANUMERIC;
15371540
case CB_CATEGORY_ALPHANUMERIC_EDITED:
15381541
return COB_TYPE_ALPHANUMERIC_EDITED;

tests/testsuite.src/run_misc.at

Lines changed: 63 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -15253,49 +15253,79 @@ AT_CHECK([$COBCRUN_DIRECT ./prog], [0], [1.2345E-5 1.2345E-5], [])
1525315253
AT_CLEANUP
1525415254

1525515255

15256-
AT_SETUP([display all characters of COMP-X])
15257-
#AT_KEYWORDS([display comp-x])
15256+
AT_SETUP([PICTURE COMP-X])
15257+
AT_KEYWORDS([Numeric])
1525815258

1525915259
AT_DATA([prog.cob], [
1526015260
IDENTIFICATION DIVISION.
1526115261
PROGRAM-ID. prog.
15262-
15263-
DATA DIVISION.
15262+
DATA DIVISION.
1526415263
WORKING-STORAGE SECTION.
15265-
15266-
01 W-X PIC X COMP-X VALUE 99.
15267-
01 W-Y PIC X COMP-X VALUE 128.
15268-
01 W-Z PIC X VALUE "z".
15269-
01 W-ZR REDEFINES W-Z PIC X COMP-X.
15270-
01 W-A PIC XX COMP-X VALUE 256.
15271-
01 W-B PIC XX COMP-X VALUE 64046.
15264+
01 TST.
15265+
05 BVAL PIC 9999 BINARY VALUE 512.
15266+
05 XVAL PIC XX COMP-X VALUE 512.
15267+
88 XLOW VALUE 0 THRU 256.
15268+
88 XHIGH VALUE 257 THRU 65536.
15269+
05 VAL9 PIC 99999 COMP-X VALUE 1024.
15270+
88 LOW9 VALUE 0 THRU 256.
15271+
88 HIGH9 VALUE 257 THRU 65536.
15272+
05 XVAL2 PIC XX COMP-X VALUE 16706.
15273+
05 XVALX REDEFINES XVAL2 PIC XX.
15274+
05 YVALX PIC XX VALUE 'A '.
15275+
05 YVAL2 REDEFINES YVALX PIC XX COMP-X.
1527215276

1527315277
PROCEDURE DIVISION.
15274-
MAIN.
15275-
DISPLAY FUNCTION BYTE-LENGTH (W-X).
15276-
DISPLAY FUNCTION BYTE-LENGTH (W-Y).
15277-
DISPLAY FUNCTION BYTE-LENGTH (W-ZR).
15278-
DISPLAY FUNCTION BYTE-LENGTH (W-A).
15279-
DISPLAY FUNCTION BYTE-LENGTH (W-B).
15280-
DISPLAY W-X.
15281-
DISPLAY W-Y.
15282-
DISPLAY W-ZR.
15283-
DISPLAY W-A.
15284-
DISPLAY W-B.
15278+
DISPLAY " XVAL is " XVAL "; Length is " LENGTH OF XVAL.
15279+
DISPLAY " VAL9 is " VAL9 "; Length is " LENGTH OF VAL9.
15280+
MOVE 10240 TO XVAL.
15281+
DISPLAY " XVAL is " XVAL "; Length is " LENGTH OF XVAL.
15282+
DISPLAY "XVAL2 is " XVAL2 "; Length is " LENGTH OF XVAL2.
15283+
DISPLAY "XVALX is " XVALX "; Length is " LENGTH OF XVALX.
15284+
ADD 1 TO XVAL2.
15285+
DISPLAY "XVALX is " XVALX " after +1;".
15286+
COMPUTE XVAL2 = XVAL2 / 256 + 8192.
15287+
DISPLAY "XVALX is " XVALX " after / 256 + 8192;".
15288+
MOVE 'DE' TO XVALX.
15289+
DISPLAY "Numeric: " XVAL2 " is char " XVALX.
15290+
MOVE ZERO TO YVAL2.
15291+
MOVE 'D' TO YVALX (1:1)
15292+
MOVE LOW-VALUES TO YVALX (2:1)
15293+
SUBTRACT YVAL2 FROM XVAL2.
15294+
MOVE ' ' TO YVALX (1:1)
15295+
MOVE LOW-VALUES TO YVALX (2:1)
15296+
ADD YVAL2 TO XVAL2.
15297+
DISPLAY "Numeric: " XVAL2 " is char " XVALX.
15298+
MOVE 0 TO XVAL.
15299+
ADD 10240 TO XVAL.
15300+
IF XVAL = 10240
15301+
DISPLAY "XVAL is " XVAL
15302+
ELSE
15303+
DISPLAY "XVAL is not 10240 but " XVAL
15304+
END-IF.
15305+
MOVE 0 TO BVAL.
15306+
ADD 10240 TO BVAL.
15307+
IF BVAL = 0240
15308+
DISPLAY "BVAL is " BVAL
15309+
ELSE
15310+
DISPLAY "BVAL is not 0240 but " BVAL
15311+
END-IF.
1528515312
STOP RUN.
1528615313
])
1528715314

15288-
AT_CHECK([$COMPILE prog.cob])
15289-
AT_CHECK([$COBCRUN_DIRECT ./prog], [0], [1
15290-
1
15291-
1
15292-
2
15293-
2
15294-
099
15295-
128
15296-
122
15297-
00256
15298-
64046
15315+
AT_CHECK([$COMPILE prog.cob], [0], [], [])
15316+
15317+
AT_CHECK([./prog], [0], [ XVAL is 00512; Length is 2
15318+
VAL9 is 01024; Length is 3
15319+
XVAL is 10240; Length is 2
15320+
XVAL2 is 16706; Length is 2
15321+
XVALX is AB; Length is 2
15322+
XVALX is AC after +1;
15323+
XVALX is A after / 256 + 8192;
15324+
Numeric: 17477 is char DE
15325+
Numeric: 08261 is char E
15326+
XVAL is 10240
15327+
BVAL is 0240
1529915328
], [])
1530015329

1530115330
AT_CLEANUP
15331+

0 commit comments

Comments
 (0)