Skip to content

Commit c731e44

Browse files
Fix casting integers (#618)
1 parent 6eb6d41 commit c731e44

File tree

2 files changed

+36
-2
lines changed

2 files changed

+36
-2
lines changed

cobj/codegen.c

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1389,14 +1389,24 @@ static void joutput_integer(cb_tree x) {
13891389
}
13901390
if (f->size == 2 || f->size == 4 || f->size == 8) {
13911391
if (f->flag_binary_swap) {
1392+
if (!integer_reference_flag) {
1393+
switch (f->size) {
1394+
case 2:
1395+
joutput("(short)(");
1396+
break;
1397+
case 4:
1398+
joutput("(int)(");
1399+
break;
1400+
}
1401+
}
13921402
joutput_data(x);
13931403
if (!integer_reference_flag) {
13941404
switch (f->size) {
13951405
case 2:
1396-
joutput(".bswap_16()");
1406+
joutput(".bswap_16())");
13971407
break;
13981408
case 4:
1399-
joutput(".bswap_32()");
1409+
joutput(".bswap_32())");
14001410
break;
14011411
case 8:
14021412
joutput(".bswap_64()");

tests/data-rep.src/binary.at

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1534,4 +1534,28 @@ AT_DATA([prog.cbl],[
15341534
AT_CHECK([${COMPILE} prog.cbl])
15351535
AT_CHECK([java prog])
15361536

1537+
AT_CLEANUP
1538+
1539+
AT_SETUP([COMP: WRITE AFTER LINE])
1540+
AT_DATA([prog.cbl], [
1541+
IDENTIFICATION DIVISION.
1542+
PROGRAM-ID. prog.
1543+
ENVIRONMENT DIVISION.
1544+
INPUT-OUTPUT SECTION.
1545+
FILE-CONTROL.
1546+
SELECT F ASSIGN TO "FILE".
1547+
DATA DIVISION.
1548+
FILE SECTION.
1549+
FD F.
1550+
01 F-REC PIC X(10).
1551+
WORKING-STORAGE SECTION.
1552+
01 A PIC S9(6) COMP VALUE 0.
1553+
01 REC PIC X(10).
1554+
PROCEDURE DIVISION.
1555+
WRITE F-REC FROM REC AFTER A LINE.
1556+
STOP RUN.
1557+
])
1558+
1559+
AT_CHECK([${COMPILE} prog.cbl])
1560+
15371561
AT_CLEANUP

0 commit comments

Comments
 (0)