--- /dev/null
+ *> { dg-do run }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. prog.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ *> one byte longer to make sure there is no garbage in
+ 01 WS-YYYYMMDD PIC 9(9).
+ 01 WS-YYYYDDD PIC 9(8).
+ PROCEDURE DIVISION.
+ ACCEPT WS-YYYYMMDD FROM DATE YYYYMMDD
+ END-ACCEPT
+ ACCEPT WS-YYYYDDD FROM DAY YYYYDDD
+ END-ACCEPT
+ IF FUNCTION INTEGER-OF-DATE (WS-YYYYMMDD)
+ NOT = FUNCTION INTEGER-OF-DAY (WS-YYYYDDD)
+ DISPLAY "DIFFERENCES FOUND!"
+ END-DISPLAY
+ DISPLAY "YYYYMMDD = " WS-YYYYMMDD ", "
+ "YYYYDDD = " WS-YYYYDDD
+ END-DISPLAY
+ DISPLAY "INTEGER-OF-DATE = "
+ FUNCTION INTEGER-OF-DATE (WS-YYYYMMDD) ", "
+ "INTEGER-OF-DAY = "
+ FUNCTION INTEGER-OF-DAY (WS-YYYYDDD)
+ END-DISPLAY
+ MOVE 1 TO RETURN-CODE
+ END-IF
+ STOP RUN.
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-set-target-env-var COB_CURRENT_DATE "2020/06/12 18:45:22" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. prog.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ *> one byte longer to make sure there is no garbage in
+ 01 WS-YYYYMMDD PIC 9(9).
+ 01 WS-YYYYDDD PIC 9(8).
+ PROCEDURE DIVISION.
+ ACCEPT WS-YYYYMMDD FROM DATE YYYYMMDD
+ END-ACCEPT
+ ACCEPT WS-YYYYDDD FROM DAY YYYYDDD
+ END-ACCEPT
+ IF FUNCTION INTEGER-OF-DATE (WS-YYYYMMDD)
+ NOT = FUNCTION INTEGER-OF-DAY (WS-YYYYDDD)
+ DISPLAY "DIFFERENCES FOUND!"
+ END-DISPLAY
+ DISPLAY "YYYYMMDD = " WS-YYYYMMDD ", "
+ "YYYYDDD = " WS-YYYYDDD
+ END-DISPLAY
+ DISPLAY "INTEGER-OF-DATE = "
+ FUNCTION INTEGER-OF-DATE (WS-YYYYMMDD) ", "
+ "INTEGER-OF-DAY = "
+ FUNCTION INTEGER-OF-DAY (WS-YYYYDDD)
+ END-DISPLAY
+ MOVE 1 TO RETURN-CODE
+ END-IF
+ STOP RUN.
+
--- /dev/null
+ *> { dg-do run }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. prog.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ *> one byte longer to make sure there is no garbage in
+ 01 X PIC X(9).
+ PROCEDURE DIVISION.
+ ACCEPT X FROM TIME
+ END-ACCEPT
+ IF X (1:2) >= "00" AND <= "23" AND
+ X (3:2) >= "00" AND <= "59" AND
+ X (5:2) >= "00" AND <= "60" AND
+ X (7:2) >= "00" AND <= "99" AND
+ X (9: ) = SPACE
+ CONTINUE
+ ELSE
+ DISPLAY "TIME " X "!"
+ END-DISPLAY
+ END-IF
+ ACCEPT X FROM DATE
+ END-ACCEPT
+ INSPECT X CONVERTING "012345678" TO "999999999"
+ IF X NOT = "999999"
+ DISPLAY "DATE " X "!"
+ END-DISPLAY
+ END-IF
+ ACCEPT X FROM DATE YYYYMMDD
+ END-ACCEPT
+ INSPECT X CONVERTING "012345678" TO "999999999"
+ IF X NOT = "99999999"
+ DISPLAY "YYYYMMDD " X "!"
+ END-DISPLAY
+ END-IF
+ ACCEPT X FROM DAY
+ END-ACCEPT
+ INSPECT X CONVERTING "012345678" TO "999999999"
+ IF X NOT = "99999"
+ DISPLAY "DAY " X "!"
+ END-DISPLAY
+ END-IF
+ ACCEPT X FROM DAY YYYYDDD
+ END-ACCEPT
+ INSPECT X CONVERTING "012345678" TO "999999999"
+ IF X NOT = "9999999"
+ DISPLAY "YYYYDDD " X "!"
+ END-DISPLAY
+ END-IF
+ ACCEPT X FROM DAY-OF-WEEK
+ END-ACCEPT
+ INSPECT X CONVERTING "1234567" TO "9999999"
+ IF X NOT = "9"
+ DISPLAY "DAY-OF-WEEK " X "!"
+ END-DISPLAY
+ END-IF
+ STOP RUN.
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-set-target-env-var COB_CURRENT_DATE "2015/04/05 18:45:22" }
+ *> { dg-output-file "group2/ACCEPT_FROM_TIME___DATE___DAY___DAY-OF-WEEK__2_.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. prog.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ *> one byte longer to make sure there is no garbage in
+ 01 WS-YYYYMMDD PIC X(9).
+ 01 WS-YYYYDDD PIC X(8).
+ 01 WS-DAYOFWEEK PIC X(2).
+ 01 WS-DATE-TODAY.
+ 05 WS-TODAYS-YY PIC 9(02) VALUE 0.
+ 05 WS-TODAYS-MM PIC 9(02) VALUE 0.
+ 05 WS-TODAYS-DD PIC 9(02) VALUE 0.
+
+ 01 WS-DATE.
+ 05 WS-DATE-MM PIC 9(02) VALUE 0.
+ 05 FILLER PIC X(01) VALUE '/'.
+ 05 WS-DATE-DD PIC 9(02) VALUE 0.
+ 05 FILLER PIC X(01) VALUE '/'.
+ 05 WS-DATE-YY PIC 9(02) VALUE 0.
+
+ 01 WS-TIME-NOW.
+ 05 WS-NOW-HH PIC 9(02) VALUE 0.
+ 05 WS-NOW-MM PIC 9(02) VALUE 0.
+ 05 WS-NOW-SS PIC 9(02) VALUE 0.
+ 05 WS-NOW-HS PIC 9(02) VALUE 0.
+
+ 01 WS-TIME.
+ 05 WS-TIME-HH PIC 9(02) VALUE 0.
+ 05 FILLER PIC X(01) VALUE ':'.
+ 05 WS-TIME-MM PIC 9(02) VALUE 0.
+ 05 FILLER PIC X(01) VALUE ':'.
+ 05 WS-TIME-SS PIC 9(02) VALUE 0.
+
+ PROCEDURE DIVISION.
+ ACCEPT WS-DATE-TODAY FROM DATE
+ ACCEPT WS-TIME-NOW FROM TIME
+ MOVE WS-TODAYS-YY TO WS-DATE-YY
+ MOVE WS-TODAYS-MM TO WS-DATE-MM
+ MOVE WS-TODAYS-DD TO WS-DATE-DD
+ MOVE WS-NOW-HH TO WS-TIME-HH
+ MOVE WS-NOW-MM TO WS-TIME-MM
+ MOVE WS-NOW-SS TO WS-TIME-SS
+ DISPLAY 'PROCESS DATE/TIME : ' WS-DATE SPACE WS-TIME
+ END-DISPLAY
+ ACCEPT WS-YYYYMMDD FROM DATE YYYYMMDD
+ DISPLAY WS-YYYYMMDD(1:8)
+ IF WS-YYYYMMDD not = "20150405"
+ DISPLAY 'Wrong date DATE YYYYMMDD: ' WS-YYYYMMDD
+ ' expected: 20150405'
+ UPON STDERR
+ END-DISPLAY
+ END-IF
+ ACCEPT WS-YYYYDDD FROM DAY YYYYDDD
+ DISPLAY WS-YYYYDDD(1:7)
+ IF WS-YYYYDDD not = "2015095"
+ DISPLAY 'Wrong date YYYYDDD: ' WS-YYYYDDD
+ ' expected: 2015095'
+ UPON STDERR
+ END-DISPLAY
+ END-IF
+ ACCEPT WS-DAYOFWEEK FROM DAY-OF-WEEK
+ DISPLAY WS-DAYOFWEEK(1:1)
+ IF WS-DAYOFWEEK not = "7"
+ DISPLAY 'Wrong date DAYOFWEEK: ' WS-DAYOFWEEK
+ ' expected: 7'
+ UPON STDERR
+ END-DISPLAY
+ END-IF
+ STOP RUN.
+
--- /dev/null
+PROCESS DATE/TIME : 04/05/15 18:45:22
+20150405
+2015095
+7
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-options "-dialect mf" }
+ *> { dg-output-file "group2/COMP-6_arithmetic.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. prog.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 X-99 PIC 99 USAGE COMP-6.
+ 01 X-999 PIC 999 USAGE COMP-6.
+ 01 B-99 USAGE BINARY-LONG UNSIGNED.
+ 01 B-999 USAGE BINARY-LONG UNSIGNED.
+ PROCEDURE DIVISION.
+ MOVE 99 TO B-99
+ MOVE B-99 TO X-99
+ MOVE 123 TO B-999
+ MOVE B-999 TO X-999
+ ADD X-99 X-999 GIVING B-99
+ END-ADD
+ DISPLAY B-99
+ END-DISPLAY
+ STOP RUN.
+
--- /dev/null
+0000000222
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-options "-dialect mf" }
+ *> { dg-output-file "group2/COMP-6_numeric_test.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. prog.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 G.
+ 02 X-2 PIC X(2).
+ 02 N-3 REDEFINES X-2 PIC 999 USAGE COMP-6.
+ 02 N-4 REDEFINES X-2 PIC 9999 USAGE COMP-6.
+ PROCEDURE DIVISION.
+ MOVE X"0000" TO X-2.
+ IF N-3 IS NUMERIC
+ DISPLAY "OK"
+ END-DISPLAY
+ ELSE
+ DISPLAY "1 NG"
+ END-DISPLAY
+ END-IF.
+ IF N-4 IS NUMERIC
+ DISPLAY "OK"
+ END-DISPLAY
+ ELSE
+ DISPLAY "2 NG"
+ END-DISPLAY
+ END-IF.
+ MOVE X"000c" TO X-2.
+ IF N-3 IS NUMERIC
+ DISPLAY "3 NG"
+ END-DISPLAY
+ ELSE
+ DISPLAY "OK"
+ END-DISPLAY
+ END-IF.
+ IF N-4 IS NUMERIC
+ DISPLAY "4 NG"
+ END-DISPLAY
+ ELSE
+ DISPLAY "OK"
+ END-DISPLAY
+ END-IF.
+ MOVE X"1234" TO X-2.
+ IF N-3 IS NUMERIC
+ DISPLAY "5 NG"
+ END-DISPLAY
+ ELSE
+ DISPLAY "OK"
+ END-DISPLAY
+ END-IF.
+ IF N-4 IS NUMERIC
+ DISPLAY "OK"
+ END-DISPLAY
+ ELSE
+ DISPLAY "6 NG"
+ END-DISPLAY
+ END-IF.
+ MOVE X"ffff" TO X-2.
+ IF N-3 IS NUMERIC
+ DISPLAY "7 NG"
+ END-DISPLAY
+ ELSE
+ DISPLAY "OK"
+ END-DISPLAY
+ END-IF.
+ IF N-4 IS NUMERIC
+ DISPLAY "7 NG"
+ END-DISPLAY
+ ELSE
+ DISPLAY "OK"
+ END-DISPLAY
+ END-IF.
+ STOP RUN.
+
--- /dev/null
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-options "-dialect mf" }
+ *> { dg-output-file "group2/COMP-6_used_with_DISPLAY.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. prog.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 X-99 PIC 99 USAGE COMP-6.
+ 01 X-999 PIC 999 USAGE COMP-6.
+ PROCEDURE DIVISION.
+ MOVE 0 TO X-99.
+ DISPLAY X-99
+ END-DISPLAY.
+ MOVE 99 TO X-99.
+ DISPLAY X-99
+ END-DISPLAY.
+ MOVE 0 TO X-999.
+ DISPLAY X-999
+ END-DISPLAY.
+ MOVE 123 TO X-999.
+ DISPLAY X-999
+ END-DISPLAY.
+ STOP RUN.
+
--- /dev/null
+00
+99
+000
+123
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-options "-dialect mf" }
+ *> { dg-output-file "group2/COMP-6_used_with_MOVE.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. prog.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 X-99 PIC 99 USAGE COMP-6.
+ 01 X-999 PIC 999 USAGE COMP-6.
+ 01 B-99 USAGE BINARY-LONG.
+ 01 B-999 USAGE BINARY-LONG.
+ PROCEDURE DIVISION.
+ MOVE 0 TO B-99.
+ MOVE B-99 TO X-99.
+ DISPLAY X-99
+ END-DISPLAY.
+ MOVE 99 TO B-99.
+ MOVE B-99 TO X-99.
+ DISPLAY X-99
+ END-DISPLAY.
+ MOVE 0 TO B-999.
+ MOVE B-999 TO X-999.
+ DISPLAY X-999
+ END-DISPLAY.
+ MOVE 123 TO B-999.
+ MOVE B-999 TO X-999.
+ DISPLAY X-999
+ END-DISPLAY.
+ MOVE B-999 TO X-99.
+ DISPLAY X-99
+ END-DISPLAY.
+ STOP RUN.
+
--- /dev/null
+00
+99
+000
+123
+23
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/COMPUTE_multiplication_to_FIX4.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. onsize.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 FIX4DISPLAY PIC 9(4) DISPLAY.
+ 01 FIX8DISPLAY PIC 9(8) DISPLAY VALUE 12345678.
+ 01 FIX8BINARY PIC 9(8) BINARY VALUE 12345678.
+ 01 FIX8PACKED PIC 9(8) PACKED-DECIMAL VALUE 12345678.
+ 01 FIX8NUMEDT PIC 9(8).0 VALUE 12345678.
+ 01 FLOATSHORT FLOAT-SHORT VALUE 12345678.
+ 01 FLOATLONG FLOAT-LONG VALUE 12345678.
+ 01 FLOATEXT FLOAT-EXTENDED VALUE 12345678.
+
+ PROCEDURE DIVISION.
+
+ *> FIX8DISPLAY
+ DISPLAY "COMPUTE FIX4DISPLAY = FIX8DISPLAY without SIZE ERROR"
+ MOVE 9876 TO FIX4DISPLAY
+ COMPUTE FIX4DISPLAY = FIX8DISPLAY
+ DISPLAY "FIX4DISPLAY is " FIX4DISPLAY
+ DISPLAY "Should be 5678"
+ DISPLAY "."
+
+ DISPLAY "COMPUTE FIX4DISPLAY = FIX8DISPLAY with SIZE ERROR"
+ COMPUTE FIX4DISPLAY = FIX8DISPLAY
+ MOVE 9876 TO FIX4DISPLAY
+ COMPUTE FIX4DISPLAY = FIX8DISPLAY
+ ON SIZE ERROR Display "Proper size error"
+ NOT ON SIZE ERROR Display "Improper no error"
+ END-COMPUTE
+ DISPLAY "FIX4DISPLAY is " FIX4DISPLAY
+ DISPLAY "Should be 9876"
+ DISPLAY "."
+
+ *> FIX8BINARY
+
+ DISPLAY "COMPUTE FIX4DISPLAY = FIX8BINARY without SIZE ERROR"
+ COMPUTE FIX4DISPLAY = FIX8BINARY
+ DISPLAY "FIX4DISPLAY is " FIX4DISPLAY
+ DISPLAY "Should be 5678"
+ DISPLAY "."
+
+ DISPLAY "COMPUTE FIX4DISPLAY = FIX8BINARY with SIZE ERROR"
+ COMPUTE FIX4DISPLAY = FIX8BINARY
+ MOVE 9876 TO FIX4DISPLAY
+ COMPUTE FIX4DISPLAY = FIX8BINARY
+ ON SIZE ERROR Display "Proper size error"
+ NOT ON SIZE ERROR Display "Improper no error"
+ END-COMPUTE
+ DISPLAY "FIX4DISPLAY is " FIX4DISPLAY
+ DISPLAY "Should be 9876"
+ DISPLAY "."
+
+ *> FIX8PACKED
+
+ DISPLAY "COMPUTE FIX4DISPLAY = FIX8PACKED without SIZE ERROR"
+ COMPUTE FIX4DISPLAY = FIX8PACKED
+ DISPLAY "FIX4DISPLAY is " FIX4DISPLAY
+ DISPLAY "Should be 5678"
+ DISPLAY "."
+
+ DISPLAY "COMPUTE FIX4DISPLAY = FIX8PACKED with SIZE ERROR"
+ COMPUTE FIX4DISPLAY = FIX8PACKED
+ MOVE 9876 TO FIX4DISPLAY
+ COMPUTE FIX4DISPLAY = FIX8PACKED
+ ON SIZE ERROR Display "Proper size error"
+ NOT ON SIZE ERROR Display "Improper no error"
+ END-COMPUTE
+ DISPLAY "FIX4DISPLAY is " FIX4DISPLAY
+ DISPLAY "Should be 9876"
+ DISPLAY "."
+
+ *> FIX8NUMEDT
+
+ DISPLAY "COMPUTE FIX4DISPLAY = FIX8NUMEDT without SIZE ERROR"
+ COMPUTE FIX4DISPLAY = FIX8NUMEDT
+ DISPLAY "FIX4DISPLAY is " FIX4DISPLAY
+ DISPLAY "Should be 5678"
+ DISPLAY "."
+
+ DISPLAY "COMPUTE FIX4DISPLAY = FIX8NUMEDT with SIZE ERROR"
+ COMPUTE FIX4DISPLAY = FIX8NUMEDT
+ MOVE 9876 TO FIX4DISPLAY
+ COMPUTE FIX4DISPLAY = FIX8NUMEDT
+ ON SIZE ERROR Display "Proper size error"
+ NOT ON SIZE ERROR Display "Improper no error"
+ END-COMPUTE
+ DISPLAY "FIX4DISPLAY is " FIX4DISPLAY
+ DISPLAY "Should be 9876"
+ DISPLAY "."
+
+ *> FLOATSHORT
+
+ DISPLAY "COMPUTE FIX4DISPLAY = FLOATSHORT without SIZE ERROR"
+ COMPUTE FIX4DISPLAY = FLOATSHORT
+ DISPLAY "FIX4DISPLAY is " FIX4DISPLAY
+ DISPLAY "Should be 5678"
+ DISPLAY "."
+
+ DISPLAY "COMPUTE FIX4DISPLAY = FLOATSHORT with SIZE ERROR"
+ COMPUTE FIX4DISPLAY = FLOATSHORT
+ MOVE 9876 TO FIX4DISPLAY
+ COMPUTE FIX4DISPLAY = FLOATSHORT
+ ON SIZE ERROR Display "Proper size error"
+ NOT ON SIZE ERROR Display "Improper no error"
+ END-COMPUTE
+ DISPLAY "FIX4DISPLAY is " FIX4DISPLAY
+ DISPLAY "Should be 9876"
+ DISPLAY "."
+
+ *> FLOATLONG
+
+ DISPLAY "COMPUTE FIX4DISPLAY = FLOATLONG without SIZE ERROR"
+ COMPUTE FIX4DISPLAY = FLOATLONG
+ DISPLAY "FIX4DISPLAY is " FIX4DISPLAY
+ DISPLAY "Should be 5678"
+ DISPLAY "."
+
+ DISPLAY "COMPUTE FIX4DISPLAY = FLOATLONG with SIZE ERROR"
+ COMPUTE FIX4DISPLAY = FLOATLONG
+ MOVE 9876 TO FIX4DISPLAY
+ COMPUTE FIX4DISPLAY = FLOATLONG
+ ON SIZE ERROR Display "Proper size error"
+ NOT ON SIZE ERROR Display "Improper no error"
+ END-COMPUTE
+ DISPLAY "FIX4DISPLAY is " FIX4DISPLAY
+ DISPLAY "Should be 9876"
+ DISPLAY "."
+
+ *> FLOATEXT
+
+ DISPLAY "COMPUTE FIX4DISPLAY = FLOATEXT without SIZE ERROR"
+ COMPUTE FIX4DISPLAY = FLOATEXT
+ DISPLAY "FIX4DISPLAY is " FIX4DISPLAY
+ DISPLAY "Should be 5678"
+ DISPLAY "."
+
+ DISPLAY "COMPUTE FIX4DISPLAY = FLOATEXT with SIZE ERROR"
+ COMPUTE FIX4DISPLAY = FLOATEXT
+ MOVE 9876 TO FIX4DISPLAY
+ COMPUTE FIX4DISPLAY = FLOATEXT
+ ON SIZE ERROR Display "Proper size error"
+ NOT ON SIZE ERROR Display "Improper no error"
+ END-COMPUTE
+ DISPLAY "FIX4DISPLAY is " FIX4DISPLAY
+ DISPLAY "Should be 9876"
+ DISPLAY ".".
+
+ STOP RUN.
+ END PROGRAM onsize.
+
--- /dev/null
+COMPUTE FIX4DISPLAY = FIX8DISPLAY without SIZE ERROR
+FIX4DISPLAY is 5678
+Should be 5678
+.
+COMPUTE FIX4DISPLAY = FIX8DISPLAY with SIZE ERROR
+Proper size error
+FIX4DISPLAY is 9876
+Should be 9876
+.
+COMPUTE FIX4DISPLAY = FIX8BINARY without SIZE ERROR
+FIX4DISPLAY is 5678
+Should be 5678
+.
+COMPUTE FIX4DISPLAY = FIX8BINARY with SIZE ERROR
+Proper size error
+FIX4DISPLAY is 9876
+Should be 9876
+.
+COMPUTE FIX4DISPLAY = FIX8PACKED without SIZE ERROR
+FIX4DISPLAY is 5678
+Should be 5678
+.
+COMPUTE FIX4DISPLAY = FIX8PACKED with SIZE ERROR
+Proper size error
+FIX4DISPLAY is 9876
+Should be 9876
+.
+COMPUTE FIX4DISPLAY = FIX8NUMEDT without SIZE ERROR
+FIX4DISPLAY is 5678
+Should be 5678
+.
+COMPUTE FIX4DISPLAY = FIX8NUMEDT with SIZE ERROR
+Proper size error
+FIX4DISPLAY is 9876
+Should be 9876
+.
+COMPUTE FIX4DISPLAY = FLOATSHORT without SIZE ERROR
+FIX4DISPLAY is 5678
+Should be 5678
+.
+COMPUTE FIX4DISPLAY = FLOATSHORT with SIZE ERROR
+Proper size error
+FIX4DISPLAY is 9876
+Should be 9876
+.
+COMPUTE FIX4DISPLAY = FLOATLONG without SIZE ERROR
+FIX4DISPLAY is 5678
+Should be 5678
+.
+COMPUTE FIX4DISPLAY = FLOATLONG with SIZE ERROR
+Proper size error
+FIX4DISPLAY is 9876
+Should be 9876
+.
+COMPUTE FIX4DISPLAY = FLOATEXT without SIZE ERROR
+FIX4DISPLAY is 5678
+Should be 5678
+.
+COMPUTE FIX4DISPLAY = FLOATEXT with SIZE ERROR
+Proper size error
+FIX4DISPLAY is 9876
+Should be 9876
+.
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/DISPLAY__Sign_ASCII.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. prog.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 G.
+ 02 X PIC X(5).
+ 02 X-9 REDEFINES X PIC 9(4).
+ 02 X-S9 REDEFINES X PIC S9(4).
+ 02 X-S9-L REDEFINES X PIC S9(4) LEADING.
+ 02 X-S9-LS REDEFINES X PIC S9(4) LEADING SEPARATE.
+ 02 X-S9-T REDEFINES X PIC S9(4) TRAILING.
+ 02 X-S9-TS REDEFINES X PIC S9(4) TRAILING SEPARATE.
+ PROCEDURE DIVISION.
+ MOVE ZERO TO X. MOVE 1234 TO X-9. DISPLAY X
+ END-DISPLAY.
+ MOVE ZERO TO X. MOVE 1234 TO X-S9. DISPLAY X
+ END-DISPLAY.
+ MOVE ZERO TO X. MOVE -1234 TO X-S9. DISPLAY X
+ END-DISPLAY.
+ MOVE ZERO TO X. MOVE 1234 TO X-S9-L. DISPLAY X
+ END-DISPLAY.
+ MOVE ZERO TO X. MOVE -1234 TO X-S9-L. DISPLAY X
+ END-DISPLAY.
+ MOVE ZERO TO X. MOVE 1234 TO X-S9-LS. DISPLAY X
+ END-DISPLAY.
+ MOVE ZERO TO X. MOVE -1234 TO X-S9-LS. DISPLAY X
+ END-DISPLAY.
+ MOVE ZERO TO X. MOVE 1234 TO X-S9-T. DISPLAY X
+ END-DISPLAY.
+ MOVE ZERO TO X. MOVE -1234 TO X-S9-T. DISPLAY X
+ END-DISPLAY.
+ MOVE ZERO TO X. MOVE 1234 TO X-S9-TS. DISPLAY X
+ END-DISPLAY.
+ MOVE ZERO TO X. MOVE -1234 TO X-S9-TS. DISPLAY X
+ END-DISPLAY.
+ STOP RUN.
+
--- /dev/null
+12340
+12340
+123t0
+12340
+q2340
++1234
+-1234
+12340
+123t0
+1234+
+1234-
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/DISPLAY__Sign_ASCII__2_.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. prog.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 G.
+ 02 X PIC X(10).
+ 02 X-S99 REDEFINES X PIC S99.
+ 02 X-S9 REDEFINES X PIC S9 OCCURS 10.
+ PROCEDURE DIVISION.
+ MOVE 0 TO X-S9(1).
+ MOVE 1 TO X-S9(2).
+ MOVE 2 TO X-S9(3).
+ MOVE 3 TO X-S9(4).
+ MOVE 4 TO X-S9(5).
+ MOVE 5 TO X-S9(6).
+ MOVE 6 TO X-S9(7).
+ MOVE 7 TO X-S9(8).
+ MOVE 8 TO X-S9(9).
+ MOVE 9 TO X-S9(10).
+ DISPLAY X NO ADVANCING
+ END-DISPLAY.
+ MOVE -10 TO X-S99. MOVE X(2:1) TO X(1:1).
+ MOVE -1 TO X-S9(2).
+ MOVE -2 TO X-S9(3).
+ MOVE -3 TO X-S9(4).
+ MOVE -4 TO X-S9(5).
+ MOVE -5 TO X-S9(6).
+ MOVE -6 TO X-S9(7).
+ MOVE -7 TO X-S9(8).
+ MOVE -8 TO X-S9(9).
+ MOVE -9 TO X-S9(10).
+ DISPLAY X NO ADVANCING
+ END-DISPLAY.
+ STOP RUN.
+
--- /dev/null
+0123456789pqrstuvwxy
--- /dev/null
+ *> { dg-do run }
+ *> { dg-options "-ffixed-form" }
+ *> { dg-output-file "group2/Floating_continuation_indicator__1_.out" }
+ IDENTIFICATION DIVISION.
+ * testing floating continuation literals ("'-" and '"-')
+ PROGRAM-ID. FF2.
+ PROCEDURE DIVISION.
+ DISPLAY "hello "-
+ "world.".
+ DISPLAY 'hello '-
+ 'world.'.
+ DISPLAY "hello "-
+ * non-interrupting comment
+ "world.".
+ DISPLAY 'hello '-
+ *> non-interrupting comment
+
+ 'world.'.
+ EXIT PROGRAM.
+
+
--- /dev/null
+hello world.
+hello world.
+hello world.
+hello world.
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-options "-dialect ibm" }
+ *> { dg-output-file "group2/IBM_dialect_COMP_redefined_by_POINTER_as_64-bit.out" }
+
+ identification division.
+ program-id. prog.
+ data division.
+ working-storage section.
+ *> This is a test of the "-dialect ibm" special interpretation of a common
+ *> construction in IBM mainframe code. That machine is a 32-bit
+ *> big-endian architecture. We are assuming a 64-bit little-endian
+ *> x86_64 architecture. So, the COMP PIC S8(8) would usually be an 32-bit
+ *> big-endian value. But "-dialect ibm" means that the following
+ *> REDEFINES USAGE POINTER causes the prior "COMP" to actually be defined
+ *> as a 64-bit little-endian binary value.
+ 77 pointer-value COMP PIC S9(8) VALUE ZERO.
+ 77 point-at REDEFINES pointer-value USAGE POINTER.
+ procedure division.
+ *> The following value is 0x123456789
+ move 4886718345 to pointer-value
+ display point-at " should be 0x0000000123456789"
+ set point-at down by 4886718345
+ display point-at " should be 0x0000000000000000"
+ set point-at down by 4886718345
+ display point-at " should be 0xfffffffedcba9877"
+ set point-at up by 4886718345
+ display point-at " should be 0x0000000000000000"
+ subtract 1 from pointer-value
+ display point-at " should be 0xffffffffffffffff"
+ add 1 to pointer-value
+ display point-at " should be 0x0000000000000000"
+ goback.
+ end program prog.
+
--- /dev/null
+0x0000000123456789 should be 0x0000000123456789
+0x0000000000000000 should be 0x0000000000000000
+0xfffffffedcba9877 should be 0xfffffffedcba9877
+0x0000000000000000 should be 0x0000000000000000
+0xffffffffffffffff should be 0xffffffffffffffff
+0x0000000000000000 should be 0x0000000000000000
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-options "-ffixed-form" }
+ *> { dg-output-file "group2/Indicators_______________-____D__.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. FF2.
+ *Asterisk in correct column
+ /
+ PROCEDURE DIVISION.
+ DISPLAY "gekk
+ -"os rule".
+ DISPLAY "gerb
+ * ISO says blank and comment lines do not interfere with
+ * literal continuation
+
+ -"ils don't rule".
+ * "D" is a deprecated feature of COBOL dropped from
+ * the ISO-IEC standard. Lines with "D" in the indicator
+ * column were enabled when OBJECT COMPUTER contained
+ * "WITH DEBUG MODE". Otherwise they were treated as
+ * comments. This behavior is a "vendor extension" to
+ * the current standard but allows old code to be used
+ * as it was prior to the deprecation.
+ D DISPLAY 'Should not display'.
+ EXIT PROGRAM.
+
--- /dev/null
+gekkos rule
+gerbils don't rule
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/MULTIPLY_to_FIX4.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. onsize.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 FIX4DISPLAY PIC 9(4) DISPLAY.
+ 01 FIX4PACKED PIC 9(4) PACKED-DECIMAL.
+ 01 FIX4BINARY PIC 9(4) BINARY.
+ 01 FIX4COMP5 PIC 9(4) COMP-5.
+ 01 FLTSHORT FLOAT-SHORT.
+ 01 FLTLONG FLOAT-LONG.
+ 01 FLTEXT FLOAT-EXTENDED.
+
+ PROCEDURE DIVISION.
+
+ DISPLAY "Checking size error on FIX4DISPLAY"
+ MOVE 1 TO FIX4DISPLAY
+ PERFORM 10 TIMEs
+ DISPLAY " FIX4DISPLAY is : " FIX4DISPLAY
+ MULTIPLY 10 BY FIX4DISPLAY
+ ON SIZE ERROR DISPLAY " Got size error" GO TO DONE1
+ END-MULTIPLY
+ END-PERFORM.
+ DONE1.
+ DISPLAY " Final is : " FIX4DISPLAY
+ DISPLAY "."
+
+ DISPLAY "Checking size error on FIX4PACKED"
+ MOVE 1 TO FIX4PACKED
+ PERFORM 10 TIMEs
+ DISPLAY " FIX4PACKED is : " FIX4PACKED
+ MULTIPLY 10 BY FIX4PACKED
+ ON SIZE ERROR DISPLAY " Got size error" GO TO DONE2
+ END-MULTIPLY
+ END-PERFORM.
+ DONE2.
+ DISPLAY " Final is : " FIX4PACKED
+ DISPLAY "."
+
+ DISPLAY "Checking size error on FIX4BINARY"
+ MOVE 1 TO FIX4BINARY
+ PERFORM 10 TIMEs
+ DISPLAY " FIX4BINARY is : " FIX4BINARY
+ MULTIPLY 10 BY FIX4BINARY
+ ON SIZE ERROR DISPLAY " Got size error" GO TO DONE3
+ END-MULTIPLY
+ END-PERFORM.
+ DONE3.
+ DISPLAY " Final is : " FIX4BINARY
+ DISPLAY "."
+
+ DISPLAY "Checking size error on FIX4COMP5"
+ MOVE 1 TO FIX4COMP5
+ PERFORM 10 TIMEs
+ DISPLAY " FIX4COMP5 is : " FIX4COMP5
+ MULTIPLY 10 BY FIX4COMP5
+ ON SIZE ERROR DISPLAY " Got size error" GO TO DONE4
+ END-MULTIPLY
+ END-PERFORM.
+ DONE4.
+ DISPLAY " Final is : " FIX4COMP5
+ DISPLAY "."
+
+ DISPLAY "Checking size error on FLTSHORT"
+ MOVE 1.E34 TO FLTSHORT
+ PERFORM 10 TIMEs
+ DISPLAY " FLTSHORT is : " FLTSHORT
+ MULTIPLY 10 BY FLTSHORT
+ ON SIZE ERROR DISPLAY " Got size error" GO TO DONE5
+ END-MULTIPLY
+ END-PERFORM.
+ DONE5.
+ DISPLAY " Final is : " FLTSHORT
+ DISPLAY "."
+
+ MOVE 1.E304 TO FLTLONG
+ PERFORM 1000 TIMEs
+ DISPLAY " FLTLONG is : " FLTLONG
+ MULTIPLY 10 BY FLTLONG
+ ON SIZE ERROR DISPLAY " Got size error" GO TO DONE6
+ END-MULTIPLY
+ END-PERFORM.
+ DONE6.
+ DISPLAY " Final is : " FLTLONG
+ DISPLAY "."
+
+ MOVE 1.E4928 TO FLTEXT
+ PERFORM 10 TIMEs
+ DISPLAY " FLTEXT is : " FLTEXT
+ MULTIPLY 10 BY FLTEXT
+ ON SIZE ERROR DISPLAY " Got size error" GO TO DONE7
+ END-MULTIPLY
+ END-PERFORM.
+ DONE7.
+ DISPLAY " Final is : " FLTEXT
+ DISPLAY ".".
+
+ END PROGRAM onsize.
+
--- /dev/null
+Checking size error on FIX4DISPLAY
+ FIX4DISPLAY is : 0001
+ FIX4DISPLAY is : 0010
+ FIX4DISPLAY is : 0100
+ FIX4DISPLAY is : 1000
+ Got size error
+ Final is : 1000
+.
+Checking size error on FIX4PACKED
+ FIX4PACKED is : 0001
+ FIX4PACKED is : 0010
+ FIX4PACKED is : 0100
+ FIX4PACKED is : 1000
+ Got size error
+ Final is : 1000
+.
+Checking size error on FIX4BINARY
+ FIX4BINARY is : 0001
+ FIX4BINARY is : 0010
+ FIX4BINARY is : 0100
+ FIX4BINARY is : 1000
+ Got size error
+ Final is : 1000
+.
+Checking size error on FIX4COMP5
+ FIX4COMP5 is : 0001
+ FIX4COMP5 is : 0010
+ FIX4COMP5 is : 0100
+ FIX4COMP5 is : 1000
+ Got size error
+ Final is : 1000
+.
+Checking size error on FLTSHORT
+ FLTSHORT is : 9.99999979E+33
+ FLTSHORT is : 9.999999419E+34
+ FLTSHORT is : 9.999999617E+35
+ FLTSHORT is : 9.999999934E+36
+ FLTSHORT is : 9.99999968E+37
+ Got size error
+ Final is : 9.99999968E+37
+.
+ FLTLONG is : 9.99999999999999939E+303
+ FLTLONG is : 9.99999999999999939E+304
+ FLTLONG is : 9.99999999999999861E+305
+ FLTLONG is : 9.99999999999999861E+306
+ FLTLONG is : 9.99999999999999811E+307
+ Got size error
+ Final is : 9.99999999999999811E+307
+.
+ FLTEXT is : 9.999999999999999999999999999999999576E+4927
+ FLTEXT is : 9.999999999999999999999999999999999856E+4928
+ FLTEXT is : 1.000000000000000000000000000000000053E+4930
+ FLTEXT is : 1.000000000000000000000000000000000124E+4931
+ FLTEXT is : 1.000000000000000000000000000000000124E+4932
+ Got size error
+ Final is : 1.000000000000000000000000000000000124E+4932
+.
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/PACKED-DECIMAL_arithmetic.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. prog.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 X PIC 99 USAGE PACKED-DECIMAL VALUE 0.
+ 01 Y PIC 99 USAGE PACKED-DECIMAL VALUE 9.
+ PROCEDURE DIVISION.
+ COMPUTE X = 1
+ END-COMPUTE.
+ DISPLAY X
+ END-DISPLAY.
+ COMPUTE X = Y
+ END-COMPUTE.
+ DISPLAY X
+ END-DISPLAY.
+ COMPUTE X = X + Y
+ END-COMPUTE.
+ DISPLAY X
+ END-DISPLAY.
+ STOP RUN.
+
--- /dev/null
+01
+09
+18
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-options "-dialect mf" }
+ *> { dg-output-file "group2/PACKED-DECIMAL_basic_comp-3_comp-6__1_.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. prog.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 x1 PIC 9 COMP-3.
+ 01 x2 PIC 99 COMP-3.
+ 01 x3 PIC 999 COMP-3.
+ 01 x4 PIC 9999 COMP-3.
+ 01 x5 PIC 99999 COMP-3.
+ 01 x6 PIC 999999 COMP-3.
+ 01 y1 PIC 9 COMP-6.
+ 01 y2 PIC 99 COMP-6.
+ 01 y3 PIC 999 COMP-6.
+ 01 y4 PIC 9999 COMP-6.
+ 01 y5 PIC 99999 COMP-6.
+ 01 y6 PIC 999999 COMP-6.
+ procedure division.
+ display "check lengths of comp-3"
+ display FUNCTION LENGTH(x1) " should be 1"
+ display FUNCTION LENGTH(x2) " should be 2"
+ display FUNCTION LENGTH(x3) " should be 2"
+ display FUNCTION LENGTH(x4) " should be 3"
+ display FUNCTION LENGTH(x5) " should be 3"
+ display FUNCTION LENGTH(x6) " should be 4"
+ display "check lengths of comp-6"
+ display FUNCTION LENGTH(y1) " should be 1"
+ display FUNCTION LENGTH(y2) " should be 1"
+ display FUNCTION LENGTH(y3) " should be 2"
+ display FUNCTION LENGTH(y4) " should be 2"
+ display FUNCTION LENGTH(y5) " should be 3"
+ display FUNCTION LENGTH(y6) " should be 3"
+ move 654321 to x1 x2 x3 x4 x5 x6 y1 y2 y3 y4 y5 y6
+ display "results of MOVE TO COMP-3"
+ display x1
+ display x2
+ display x3
+ display x4
+ display x5
+ display x6
+ display "results of MOVE TO COMP-6"
+ display y1
+ display y2
+ display y3
+ display y4
+ display y5
+ display y6
+ goback.
+
--- /dev/null
+check lengths of comp-3
+1 should be 1
+2 should be 2
+2 should be 2
+3 should be 3
+3 should be 3
+4 should be 4
+check lengths of comp-6
+1 should be 1
+1 should be 1
+2 should be 2
+2 should be 2
+3 should be 3
+3 should be 3
+results of MOVE TO COMP-3
+1
+21
+321
+4321
+54321
+654321
+results of MOVE TO COMP-6
+1
+21
+321
+4321
+54321
+654321
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-options "-dialect mf" }
+ *> { dg-output-file "group2/PACKED-DECIMAL_basic_comp-3_comp-6__2_.out" }
+
+ identification division.
+ program-id. prog.
+ data division.
+ working-storage section.
+ 01 vars.
+ 05 var1d .
+ 10 var01 pic 99v99 comp-3 value 43.21 .
+ 10 filler binary-double value zero .
+ 05 var1 redefines var1d pointer .
+ 05 var2d .
+ 10 var02 pic s99v99 comp-3 value 43.21 .
+ 10 filler binary-double value zero .
+ 05 var2 redefines var2d pointer .
+ 05 var3d .
+ 10 var03 pic s99v99 comp-3 value -43.21 .
+ 10 filler binary-double value zero .
+ 05 var3 redefines var3d pointer .
+ 05 var4d .
+ 10 var04 pic 99v99 comp-6 value 43.21 .
+ 10 filler binary-double value zero .
+ 05 var4 redefines var4d pointer .
+ procedure division.
+ display length of var01 space var1 space space var01
+ display length of var02 space var2 space var02
+ display length of var03 space var3 space var03
+ display length of var04 space var4 space space var04
+ move 12.34 to var01
+ move 12.34 to var02
+ move 12.34 to var03
+ move 12.34 to var04
+ display function length(var01) space var1 space space var01
+ display function length(var02) space var2 space var02
+ display function length(var03) space var3 space var03
+ display function length(var04) space var4 space space var04
+ goback.
+ end program prog.
+
--- /dev/null
+3 0x00000000001f3204 43.21
+3 0x00000000001c3204 +43.21
+3 0x00000000001d3204 -43.21
+2 0x0000000000002143 43.21
+3 0x00000000004f2301 12.34
+3 0x00000000004c2301 +12.34
+3 0x00000000004c2301 +12.34
+2 0x0000000000003412 12.34
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/PACKED-DECIMAL_dump.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. prog.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 G-1.
+ 02 X-1 PIC 9(1) VALUE 1
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-2.
+ 02 X-2 PIC 9(2) VALUE 12
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-3.
+ 02 X-3 PIC 9(3) VALUE 123
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-4.
+ 02 X-4 PIC 9(4) VALUE 1234
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-5.
+ 02 X-5 PIC 9(5) VALUE 12345
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-6.
+ 02 X-6 PIC 9(6) VALUE 123456
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-7.
+ 02 X-7 PIC 9(7) VALUE 1234567
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-8.
+ 02 X-8 PIC 9(8) VALUE 12345678
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-9.
+ 02 X-9 PIC 9(9) VALUE 123456789
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-10.
+ 02 X-10 PIC 9(10) VALUE 1234567890
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-11.
+ 02 X-11 PIC 9(11) VALUE 12345678901
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-12.
+ 02 X-12 PIC 9(12) VALUE 123456789012
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-13.
+ 02 X-13 PIC 9(13) VALUE 1234567890123
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-14.
+ 02 X-14 PIC 9(14) VALUE 12345678901234
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-15.
+ 02 X-15 PIC 9(15) VALUE 123456789012345
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-16.
+ 02 X-16 PIC 9(16) VALUE 1234567890123456
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-17.
+ 02 X-17 PIC 9(17) VALUE 12345678901234567
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-18.
+ 02 X-18 PIC 9(18) VALUE 123456789012345678
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-S1.
+ 02 X-S1 PIC S9(1) VALUE -1
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-S2.
+ 02 X-S2 PIC S9(2) VALUE -12
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-S3.
+ 02 X-S3 PIC S9(3) VALUE -123
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-S4.
+ 02 X-S4 PIC S9(4) VALUE -1234
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-S5.
+ 02 X-S5 PIC S9(5) VALUE -12345
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-S6.
+ 02 X-S6 PIC S9(6) VALUE -123456
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-S7.
+ 02 X-S7 PIC S9(7) VALUE -1234567
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-S8.
+ 02 X-S8 PIC S9(8) VALUE -12345678
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-S9.
+ 02 X-S9 PIC S9(9) VALUE -123456789
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-S10.
+ 02 X-S10 PIC S9(10) VALUE -1234567890
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-S11.
+ 02 X-S11 PIC S9(11) VALUE -12345678901
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-S12.
+ 02 X-S12 PIC S9(12) VALUE -123456789012
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-S13.
+ 02 X-S13 PIC S9(13) VALUE -1234567890123
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-S14.
+ 02 X-S14 PIC S9(14) VALUE -12345678901234
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-S15.
+ 02 X-S15 PIC S9(15) VALUE -123456789012345
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-S16.
+ 02 X-S16 PIC S9(16) VALUE -1234567890123456
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-S17.
+ 02 X-S17 PIC S9(17) VALUE -12345678901234567
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ 01 G-S18.
+ 02 X-S18 PIC S9(18) VALUE -123456789012345678
+ COMP-3.
+ 02 FILLER PIC X(18) VALUE SPACE.
+ PROCEDURE DIVISION.
+ *> Dump all values
+ CALL "dump" USING G-1
+ END-CALL.
+ CALL "dump" USING G-2
+ END-CALL.
+ CALL "dump" USING G-3
+ END-CALL.
+ CALL "dump" USING G-4
+ END-CALL.
+ CALL "dump" USING G-5
+ END-CALL.
+ CALL "dump" USING G-6
+ END-CALL.
+ CALL "dump" USING G-7
+ END-CALL.
+ CALL "dump" USING G-8
+ END-CALL.
+ CALL "dump" USING G-9
+ END-CALL.
+ CALL "dump" USING G-10
+ END-CALL.
+ CALL "dump" USING G-11
+ END-CALL.
+ CALL "dump" USING G-12
+ END-CALL.
+ CALL "dump" USING G-13
+ END-CALL.
+ CALL "dump" USING G-14
+ END-CALL.
+ CALL "dump" USING G-15
+ END-CALL.
+ CALL "dump" USING G-16
+ END-CALL.
+ CALL "dump" USING G-17
+ END-CALL.
+ CALL "dump" USING G-18
+ END-CALL.
+ CALL "dump" USING G-S1
+ END-CALL.
+ CALL "dump" USING G-S2
+ END-CALL.
+ CALL "dump" USING G-S3
+ END-CALL.
+ CALL "dump" USING G-S4
+ END-CALL.
+ CALL "dump" USING G-S5
+ END-CALL.
+ CALL "dump" USING G-S6
+ END-CALL.
+ CALL "dump" USING G-S7
+ END-CALL.
+ CALL "dump" USING G-S8
+ END-CALL.
+ CALL "dump" USING G-S9
+ END-CALL.
+ CALL "dump" USING G-S10
+ END-CALL.
+ CALL "dump" USING G-S11
+ END-CALL.
+ CALL "dump" USING G-S12
+ END-CALL.
+ CALL "dump" USING G-S13
+ END-CALL.
+ CALL "dump" USING G-S14
+ END-CALL.
+ CALL "dump" USING G-S15
+ END-CALL.
+ CALL "dump" USING G-S16
+ END-CALL.
+ CALL "dump" USING G-S17
+ END-CALL.
+ CALL "dump" USING G-S18
+ END-CALL.
+ INITIALIZE X-1.
+ CALL "dump" USING G-1
+ END-CALL.
+ INITIALIZE X-2.
+ CALL "dump" USING G-2
+ END-CALL.
+ INITIALIZE X-3.
+ CALL "dump" USING G-3
+ END-CALL.
+ INITIALIZE X-4.
+ CALL "dump" USING G-4
+ END-CALL.
+ INITIALIZE X-5.
+ CALL "dump" USING G-5
+ END-CALL.
+ INITIALIZE X-6.
+ CALL "dump" USING G-6
+ END-CALL.
+ INITIALIZE X-7.
+ CALL "dump" USING G-7
+ END-CALL.
+ INITIALIZE X-8.
+ CALL "dump" USING G-8
+ END-CALL.
+ INITIALIZE X-9.
+ CALL "dump" USING G-9
+ END-CALL.
+ INITIALIZE X-10.
+ CALL "dump" USING G-10
+ END-CALL.
+ INITIALIZE X-11.
+ CALL "dump" USING G-11
+ END-CALL.
+ INITIALIZE X-12.
+ CALL "dump" USING G-12
+ END-CALL.
+ INITIALIZE X-13.
+ CALL "dump" USING G-13
+ END-CALL.
+ INITIALIZE X-14.
+ CALL "dump" USING G-14
+ END-CALL.
+ INITIALIZE X-15.
+ CALL "dump" USING G-15
+ END-CALL.
+ INITIALIZE X-16.
+ CALL "dump" USING G-16
+ END-CALL.
+ INITIALIZE X-17.
+ CALL "dump" USING G-17
+ END-CALL.
+ INITIALIZE X-18.
+ CALL "dump" USING G-18
+ END-CALL.
+ INITIALIZE X-S1.
+ CALL "dump" USING G-S1
+ END-CALL.
+ INITIALIZE X-S2.
+ CALL "dump" USING G-S2
+ END-CALL.
+ INITIALIZE X-S3.
+ CALL "dump" USING G-S3
+ END-CALL.
+ INITIALIZE X-S4.
+ CALL "dump" USING G-S4
+ END-CALL.
+ INITIALIZE X-S5.
+ CALL "dump" USING G-S5
+ END-CALL.
+ INITIALIZE X-S6.
+ CALL "dump" USING G-S6
+ END-CALL.
+ INITIALIZE X-S7.
+ CALL "dump" USING G-S7
+ END-CALL.
+ INITIALIZE X-S8.
+ CALL "dump" USING G-S8
+ END-CALL.
+ INITIALIZE X-S9.
+ CALL "dump" USING G-S9
+ END-CALL.
+ INITIALIZE X-S10.
+ CALL "dump" USING G-S10
+ END-CALL.
+ INITIALIZE X-S11.
+ CALL "dump" USING G-S11
+ END-CALL.
+ INITIALIZE X-S12.
+ CALL "dump" USING G-S12
+ END-CALL.
+ INITIALIZE X-S13.
+ CALL "dump" USING G-S13
+ END-CALL.
+ INITIALIZE X-S14.
+ CALL "dump" USING G-S14
+ END-CALL.
+ INITIALIZE X-S15.
+ CALL "dump" USING G-S15
+ END-CALL.
+ INITIALIZE X-S16.
+ CALL "dump" USING G-S16
+ END-CALL.
+ INITIALIZE X-S17.
+ CALL "dump" USING G-S17
+ END-CALL.
+ INITIALIZE X-S18.
+ CALL "dump" USING G-S18
+ END-CALL.
+ MOVE ZERO TO X-1.
+ CALL "dump" USING G-1
+ END-CALL.
+ MOVE ZERO TO X-2.
+ CALL "dump" USING G-2
+ END-CALL.
+ MOVE ZERO TO X-3.
+ CALL "dump" USING G-3
+ END-CALL.
+ MOVE ZERO TO X-4.
+ CALL "dump" USING G-4
+ END-CALL.
+ MOVE ZERO TO X-5.
+ CALL "dump" USING G-5
+ END-CALL.
+ MOVE ZERO TO X-6.
+ CALL "dump" USING G-6
+ END-CALL.
+ MOVE ZERO TO X-7.
+ CALL "dump" USING G-7
+ END-CALL.
+ MOVE ZERO TO X-8.
+ CALL "dump" USING G-8
+ END-CALL.
+ MOVE ZERO TO X-9.
+ CALL "dump" USING G-9
+ END-CALL.
+ MOVE ZERO TO X-10.
+ CALL "dump" USING G-10
+ END-CALL.
+ MOVE ZERO TO X-11.
+ CALL "dump" USING G-11
+ END-CALL.
+ MOVE ZERO TO X-12.
+ CALL "dump" USING G-12
+ END-CALL.
+ MOVE ZERO TO X-13.
+ CALL "dump" USING G-13
+ END-CALL.
+ MOVE ZERO TO X-14.
+ CALL "dump" USING G-14
+ END-CALL.
+ MOVE ZERO TO X-15.
+ CALL "dump" USING G-15
+ END-CALL.
+ MOVE ZERO TO X-16.
+ CALL "dump" USING G-16
+ END-CALL.
+ MOVE ZERO TO X-17.
+ CALL "dump" USING G-17
+ END-CALL.
+ MOVE ZERO TO X-18.
+ CALL "dump" USING G-18
+ END-CALL.
+ MOVE ZERO TO X-S1.
+ CALL "dump" USING G-S1
+ END-CALL.
+ MOVE ZERO TO X-S2.
+ CALL "dump" USING G-S2
+ END-CALL.
+ MOVE ZERO TO X-S3.
+ CALL "dump" USING G-S3
+ END-CALL.
+ MOVE ZERO TO X-S4.
+ CALL "dump" USING G-S4
+ END-CALL.
+ MOVE ZERO TO X-S5.
+ CALL "dump" USING G-S5
+ END-CALL.
+ MOVE ZERO TO X-S6.
+ CALL "dump" USING G-S6
+ END-CALL.
+ MOVE ZERO TO X-S7.
+ CALL "dump" USING G-S7
+ END-CALL.
+ MOVE ZERO TO X-S8.
+ CALL "dump" USING G-S8
+ END-CALL.
+ MOVE ZERO TO X-S9.
+ CALL "dump" USING G-S9
+ END-CALL.
+ MOVE ZERO TO X-S10.
+ CALL "dump" USING G-S10
+ END-CALL.
+ MOVE ZERO TO X-S11.
+ CALL "dump" USING G-S11
+ END-CALL.
+ MOVE ZERO TO X-S12.
+ CALL "dump" USING G-S12
+ END-CALL.
+ MOVE ZERO TO X-S13.
+ CALL "dump" USING G-S13
+ END-CALL.
+ MOVE ZERO TO X-S14.
+ CALL "dump" USING G-S14
+ END-CALL.
+ MOVE ZERO TO X-S15.
+ CALL "dump" USING G-S15
+ END-CALL.
+ MOVE ZERO TO X-S16.
+ CALL "dump" USING G-S16
+ END-CALL.
+ MOVE ZERO TO X-S17.
+ CALL "dump" USING G-S17
+ END-CALL.
+ MOVE ZERO TO X-S18.
+ CALL "dump" USING G-S18
+ END-CALL.
+ STOP RUN.
+ END PROGRAM prog.
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. dump.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 HEXCHARS.
+ 02 HEXCHART PIC X(16) VALUE "0123456789abcdef".
+ 02 HEXCHAR REDEFINES HEXCHART PIC X OCCURS 16.
+ 01 BYTE-TO-DUMP PIC X(1).
+ 01 FILLER.
+ 02 DUMPER1 PIC 9999 COMP-5.
+ 02 DUMPER2 REDEFINES DUMPER1 PIC X(1).
+ 01 THE-BYTE PIC 99.
+ 01 LADVANCE PIC 9.
+ LINKAGE SECTION.
+ 01 G-VAL PIC X(20).
+ 01 G-PTR REDEFINES G-VAL USAGE POINTER.
+ PROCEDURE DIVISION USING G-VAL.
+ MOVE 1 TO THE-BYTE
+ MOVE 0 TO LADVANCE
+ PERFORM UNTIL THE-BYTE GREATER THAN 10
+ MOVE G-VAL(THE-BYTE:1) TO BYTE-TO-DUMP
+ IF THE-BYTE EQUAL TO 10 MOVE 1 TO LADVANCE END-IF
+ PERFORM DUMP-BYTE
+ ADD 1 TO THE-BYTE
+ END-PERFORM.
+ GOBACK.
+ DUMP-BYTE.
+ MOVE ZERO TO DUMPER1
+ MOVE BYTE-TO-DUMP TO DUMPER2
+ DIVIDE DUMPER1 BY 16 GIVING DUMPER1
+ ADD 1 TO DUMPER1
+ DISPLAY HEXCHAR(DUMPER1) NO ADVANCING.
+ MOVE ZERO TO DUMPER1
+ MOVE BYTE-TO-DUMP TO DUMPER2
+ MOVE FUNCTION MOD(DUMPER1 16) TO DUMPER1
+ ADD 1 TO DUMPER1
+ IF LADVANCE EQUAL TO 1 THEN
+ DISPLAY HEXCHAR(DUMPER1)
+ ELSE
+ DISPLAY HEXCHAR(DUMPER1) NO ADVANCING
+ END-IF.
+ END PROGRAM dump.
+
--- /dev/null
+1f202020202020202020
+012f2020202020202020
+123f2020202020202020
+01234f20202020202020
+12345f20202020202020
+0123456f202020202020
+1234567f202020202020
+012345678f2020202020
+123456789f2020202020
+01234567890f20202020
+12345678901f20202020
+0123456789012f202020
+1234567890123f202020
+012345678901234f2020
+123456789012345f2020
+01234567890123456f20
+12345678901234567f20
+0123456789012345678f
+1d202020202020202020
+012d2020202020202020
+123d2020202020202020
+01234d20202020202020
+12345d20202020202020
+0123456d202020202020
+1234567d202020202020
+012345678d2020202020
+123456789d2020202020
+01234567890d20202020
+12345678901d20202020
+0123456789012d202020
+1234567890123d202020
+012345678901234d2020
+123456789012345d2020
+01234567890123456d20
+12345678901234567d20
+0123456789012345678d
+0f202020202020202020
+000f2020202020202020
+000f2020202020202020
+00000f20202020202020
+00000f20202020202020
+0000000f202020202020
+0000000f202020202020
+000000000f2020202020
+000000000f2020202020
+00000000000f20202020
+00000000000f20202020
+0000000000000f202020
+0000000000000f202020
+000000000000000f2020
+000000000000000f2020
+00000000000000000f20
+00000000000000000f20
+0000000000000000000f
+0c202020202020202020
+000c2020202020202020
+000c2020202020202020
+00000c20202020202020
+00000c20202020202020
+0000000c202020202020
+0000000c202020202020
+000000000c2020202020
+000000000c2020202020
+00000000000c20202020
+00000000000c20202020
+0000000000000c202020
+0000000000000c202020
+000000000000000c2020
+000000000000000c2020
+00000000000000000c20
+00000000000000000c20
+0000000000000000000c
+0f202020202020202020
+000f2020202020202020
+000f2020202020202020
+00000f20202020202020
+00000f20202020202020
+0000000f202020202020
+0000000f202020202020
+000000000f2020202020
+000000000f2020202020
+00000000000f20202020
+00000000000f20202020
+0000000000000f202020
+0000000000000f202020
+000000000000000f2020
+000000000000000f2020
+00000000000000000f20
+00000000000000000f20
+0000000000000000000f
+0c202020202020202020
+000c2020202020202020
+000c2020202020202020
+00000c20202020202020
+00000c20202020202020
+0000000c202020202020
+0000000c202020202020
+000000000c2020202020
+000000000c2020202020
+00000000000c20202020
+00000000000c20202020
+0000000000000c202020
+0000000000000c202020
+000000000000000c2020
+000000000000000c2020
+00000000000000000c20
+00000000000000000c20
+0000000000000000000c
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/PACKED-DECIMAL_numeric_test__1_.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. prog.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 G.
+ 02 X-2 PIC X(2).
+ 02 N-2 REDEFINES X-2 PIC 999 USAGE PACKED-DECIMAL.
+ 02 N-S2 REDEFINES X-2 PIC S999 USAGE PACKED-DECIMAL.
+ PROCEDURE DIVISION.
+ MOVE X"0000" TO X-2.
+ IF N-2 IS NUMERIC
+ DISPLAY "1 NG"
+ END-DISPLAY
+ ELSE
+ DISPLAY "OK"
+ END-DISPLAY
+ END-IF.
+ IF N-S2 IS NUMERIC
+ DISPLAY "2 NG"
+ END-DISPLAY
+ ELSE
+ DISPLAY "OK"
+ END-DISPLAY
+ END-IF.
+ MOVE X"000c" TO X-2.
+ IF N-2 IS NUMERIC
+ DISPLAY "3 NG"
+ END-DISPLAY
+ ELSE
+ DISPLAY "OK"
+ END-DISPLAY
+ END-IF.
+ IF N-S2 IS NUMERIC
+ DISPLAY "OK"
+ END-DISPLAY
+ ELSE
+ DISPLAY "4 NG"
+ END-DISPLAY
+ END-IF.
+ MOVE X"000d" TO X-2.
+ IF N-2 IS NUMERIC
+ DISPLAY "5 NG"
+ END-DISPLAY
+ ELSE
+ DISPLAY "OK"
+ END-DISPLAY
+ END-IF.
+ IF N-S2 IS NUMERIC
+ DISPLAY "OK"
+ END-DISPLAY
+ ELSE
+ DISPLAY "6 NG"
+ END-DISPLAY
+ END-IF.
+ MOVE X"000f" TO X-2.
+ IF N-2 IS NUMERIC
+ DISPLAY "OK"
+ END-DISPLAY
+ ELSE
+ DISPLAY "7 NG"
+ END-DISPLAY
+ END-IF.
+ IF N-S2 IS NUMERIC
+ DISPLAY "8 NG"
+ END-DISPLAY
+ ELSE
+ DISPLAY "OK"
+ END-DISPLAY
+ END-IF.
+ MOVE X"1234" TO X-2.
+ IF N-2 IS NUMERIC
+ DISPLAY "9 NG"
+ END-DISPLAY
+ ELSE
+ DISPLAY "OK"
+ END-DISPLAY
+ END-IF.
+ IF N-S2 IS NUMERIC
+ DISPLAY "10 NG"
+ END-DISPLAY
+ ELSE
+ DISPLAY "OK"
+ END-DISPLAY
+ END-IF.
+ MOVE X"999f" TO X-2.
+ IF N-2 IS NUMERIC
+ DISPLAY "OK"
+ END-DISPLAY
+ ELSE
+ DISPLAY "11 NG"
+ END-DISPLAY
+ END-IF.
+ IF N-S2 IS NUMERIC
+ DISPLAY "12 NG"
+ END-DISPLAY
+ ELSE
+ DISPLAY "OK"
+ END-DISPLAY
+ END-IF.
+ MOVE X"ffff" TO X-2.
+ IF N-2 IS NUMERIC
+ DISPLAY "13 NG"
+ END-DISPLAY
+ ELSE
+ DISPLAY "OK"
+ END-DISPLAY
+ END-IF.
+ IF N-S2 IS NUMERIC
+ DISPLAY "14 NG"
+ END-DISPLAY
+ ELSE
+ DISPLAY "OK"
+ END-DISPLAY
+ END-IF.
+ STOP RUN.
+
--- /dev/null
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/PACKED-DECIMAL_numeric_test__2_.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. prog.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 G.
+ 02 X-2 PIC X(2).
+ 02 N-2 REDEFINES X-2 PIC 999 USAGE PACKED-DECIMAL.
+ 02 N-S2 REDEFINES X-2 PIC S999 USAGE PACKED-DECIMAL.
+ PROCEDURE DIVISION.
+ MOVE X"0000" TO X-2.
+ IF N-2 IS NUMERIC
+ DISPLAY "NG 1"
+ ELSE
+ DISPLAY "OK"
+ END-IF.
+ IF N-S2 IS NUMERIC
+ DISPLAY "NG 2"
+ ELSE
+ DISPLAY "OK"
+ END-IF.
+ MOVE X"000c" TO X-2.
+ IF N-2 IS NUMERIC
+ DISPLAY "NG 3"
+ ELSE
+ DISPLAY "OK"
+ END-IF.
+ IF N-S2 IS NUMERIC
+ DISPLAY "OK"
+ ELSE
+ DISPLAY "NG 4"
+ END-IF.
+ MOVE X"000d" TO X-2.
+ IF N-2 IS NUMERIC
+ DISPLAY "NG 5"
+ ELSE
+ DISPLAY "OK"
+ END-IF.
+ IF N-S2 IS NUMERIC
+ DISPLAY "OK"
+ ELSE
+ DISPLAY "NG 6"
+ END-IF.
+ MOVE X"000f" TO X-2.
+ IF N-2 IS NUMERIC
+ DISPLAY "OK"
+ ELSE
+ DISPLAY "NG 7"
+ END-IF.
+ IF N-S2 IS NUMERIC
+ DISPLAY "NG 8"
+ ELSE
+ DISPLAY "OK"
+ END-IF.
+ MOVE X"1234" TO X-2.
+ IF N-2 IS NUMERIC
+ DISPLAY "NG 9"
+ ELSE
+ DISPLAY "OK"
+ END-IF.
+ IF N-S2 IS NUMERIC
+ DISPLAY "NG 10"
+ ELSE
+ DISPLAY "OK"
+ END-IF.
+ MOVE X"999f" TO X-2.
+ IF N-2 IS NUMERIC
+ DISPLAY "OK"
+ ELSE
+ DISPLAY "NG 11"
+ END-IF.
+ IF N-S2 IS NUMERIC
+ DISPLAY "NG 12"
+ ELSE
+ DISPLAY "OK"
+ END-IF.
+ MOVE X"ffff" TO X-2.
+ IF N-2 IS NUMERIC
+ DISPLAY "NG 13"
+ ELSE
+ DISPLAY "OK"
+ END-IF.
+ IF N-S2 IS NUMERIC
+ DISPLAY "NG 14"
+ ELSE
+ DISPLAY "OK"
+ END-IF.
+ STOP RUN.
+
--- /dev/null
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+OK
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/PACKED-DECIMAL_used_with_DISPLAY.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. prog.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 X-99 PIC 99 USAGE PACKED-DECIMAL.
+ 01 X-S99 PIC S99 USAGE PACKED-DECIMAL.
+ 01 X-999 PIC 999 USAGE PACKED-DECIMAL.
+ 01 X-S999 PIC S999 USAGE PACKED-DECIMAL.
+ PROCEDURE DIVISION.
+ MOVE 0 TO X-99.
+ DISPLAY X-99
+ END-DISPLAY.
+ MOVE 99 TO X-99.
+ DISPLAY X-99
+ END-DISPLAY.
+ MOVE 0 TO X-S99.
+ DISPLAY X-S99
+ END-DISPLAY.
+ MOVE -1 TO X-S99.
+ DISPLAY X-S99
+ END-DISPLAY.
+ MOVE 0 TO X-999.
+ DISPLAY X-999
+ END-DISPLAY.
+ MOVE 123 TO X-999.
+ DISPLAY X-999
+ END-DISPLAY.
+ MOVE 0 TO X-S999.
+ DISPLAY X-S999
+ END-DISPLAY.
+ MOVE -123 TO X-S999.
+ DISPLAY X-S999
+ END-DISPLAY.
+ STOP RUN.
+
--- /dev/null
+00
+99
++00
+-01
+000
+123
++000
+-123
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/PACKED-DECIMAL_used_with_INITIALIZE.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. prog.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 X-99 PIC 99 USAGE PACKED-DECIMAL.
+ 01 X-S99 PIC S99 USAGE PACKED-DECIMAL.
+ 01 X-999 PIC 999 USAGE PACKED-DECIMAL.
+ 01 X-S999 PIC S999 USAGE PACKED-DECIMAL.
+ PROCEDURE DIVISION.
+ INITIALIZE X-99.
+ DISPLAY X-99
+ END-DISPLAY.
+ INITIALIZE X-S99.
+ DISPLAY X-S99
+ END-DISPLAY.
+ INITIALIZE X-999.
+ DISPLAY X-999
+ END-DISPLAY.
+ INITIALIZE X-S999.
+ DISPLAY X-S999
+ END-DISPLAY.
+ STOP RUN.
+
--- /dev/null
+00
++00
+000
++000
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/PACKED-DECIMAL_used_with_MOVE.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. prog.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 X-99 PIC 99 USAGE PACKED-DECIMAL.
+ 01 X-S99 PIC S99 USAGE PACKED-DECIMAL.
+ 01 X-999 PIC 999 USAGE PACKED-DECIMAL.
+ 01 X-S999 PIC S999 USAGE PACKED-DECIMAL.
+ 01 C-P1234 PIC 9999 VALUE 1234.
+ 01 C-N1234 PIC S9999 VALUE -1234.
+ PROCEDURE DIVISION.
+ MOVE C-P1234 TO X-99.
+ DISPLAY X-99
+ END-DISPLAY.
+ MOVE C-P1234 TO X-S99.
+ DISPLAY X-S99
+ END-DISPLAY.
+ MOVE C-P1234 TO X-999.
+ DISPLAY X-999
+ END-DISPLAY.
+ MOVE C-P1234 TO X-S999.
+ DISPLAY X-S999
+ END-DISPLAY.
+ MOVE C-N1234 TO X-99.
+ DISPLAY X-99
+ END-DISPLAY.
+ MOVE C-N1234 TO X-S99.
+ DISPLAY X-S99
+ END-DISPLAY.
+ MOVE C-N1234 TO X-999.
+ DISPLAY X-999
+ END-DISPLAY.
+ MOVE C-N1234 TO X-S999.
+ DISPLAY X-S999
+ END-DISPLAY.
+ STOP RUN.
+
--- /dev/null
+34
++34
+234
++234
+34
+-34
+234
+-234
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/POINTER__display.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. prog.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 PTR USAGE POINTER VALUE NULL.
+ PROCEDURE DIVISION.
+ DISPLAY PTR
+ END-DISPLAY.
+ SET PTR UP BY 1
+ DISPLAY PTR
+ SET PTR DOWN BY 1
+ DISPLAY PTR
+ END-DISPLAY.
+ STOP RUN.
+
--- /dev/null
+0x0000000000000000
+0x0000000000000001
+0x0000000000000000
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/Simple_floating-point_MOVE.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. float-move.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 S1 PIC 999V99 DISPLAY VALUE 123.45 .
+ 01 S2 PIC 999V99 COMP VALUE 123.45 .
+ 01 S3 PIC 999V99 COMP-3 VALUE 123.45 .
+ 01 S4 PIC 999V99 COMP-5 VALUE 123.45 .
+ 01 S5 FLOAT-SHORT VALUE 123.45 .
+ 01 S6 FLOAT-LONG VALUE 123.45 .
+ 01 S7 FLOAT-EXTENDED VALUE 123.45 .
+ 01 D1 PIC 999V99 DISPLAY .
+ 01 D2 PIC 999V99 COMP .
+ 01 D3 PIC 999V99 COMP-3 .
+ 01 D4 PIC 999V99 COMP-5 .
+ 01 D5 FLOAT-SHORT .
+ 01 D6 FLOAT-LONG .
+ 01 D7 FLOAT-EXTENDED .
+ PROCEDURE DIVISION.
+ MOVE S1 TO D1 D2 D3 D4 D5 D6 D7
+ PERFORM DISPLAY-D.
+ MOVE S2 TO D1 D2 D3 D4 D5 D6 D7
+ PERFORM DISPLAY-D.
+ MOVE S3 TO D1 D2 D3 D4 D5 D6 D7
+ PERFORM DISPLAY-D.
+ MOVE S4 TO D1 D2 D3 D4 D5 D6 D7
+ PERFORM DISPLAY-D.
+ MOVE S5 TO D1 D2 D3 D4 D5 D6 D7
+ PERFORM DISPLAY-D.
+ MOVE S6 TO D1 D2 D3 D4 D5 D6 D7
+ PERFORM DISPLAY-D.
+ MOVE S7 TO D1 D2 D3 D4 D5 D6 D7
+ PERFORM DISPLAY-D.
+ GOBACK.
+ DISPLAY-D.
+ DISPLAY D1 SPACE
+ D2 SPACE
+ D3 SPACE
+ D4 SPACE
+ D5 SPACE
+ D6 SPACE
+ D7 .
+ MOVE 0 TO D1 D2 D3 D4 D5 D6 D7.
+ END PROGRAM float-move.
+
--- /dev/null
+123.45 123.45 123.45 123.45 123.4499969 123.450000000000003 123.4500000000000000000000000000000025
+123.45 123.45 123.45 123.45 123.4499969 123.450000000000003 123.4500000000000000000000000000000025
+123.45 123.45 123.45 123.45 123.4499969 123.450000000000003 123.4500000000000000000000000000000025
+123.45 123.45 123.45 123.45 123.4499969 123.450000000000003 123.4500000000000000000000000000000025
+123.44 123.45 123.44 123.45 123.4499969 123.449996948242188 123.4499969482421875
+123.45 123.45 123.45 123.45 123.4499969 123.450000000000003 123.4500000000000028421709430404007435
+123.45 123.45 123.45 123.45 123.4499969 123.450000000000003 123.4500000000000000000000000000000025
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/Simple_floating-point_VALUE_and_MOVE.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. float-demo.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 P-1 PIC 999PPPPPP COMP-5 VALUE 123000000.
+ 01 C-1A COMP-1 VALUE 12.3456E-7.
+ 01 C-1B COMP-1 VALUE 12.3456E-6.
+ 01 C-1C COMP-1 VALUE 12.3456E-5.
+ 01 C-1D COMP-1 VALUE 12.3456E-4.
+ 01 C-1E COMP-1 VALUE 12.3456E-3.
+ 01 C-1F COMP-1 VALUE 12.3456E-2.
+ 01 C-1G COMP-1 VALUE 12.3456E-1.
+ 01 C-1H COMP-1 VALUE 12.3456E0 .
+ 01 C-1I COMP-1 VALUE 12.3456E1 .
+ 01 C-1J COMP-1 VALUE 12.3456E2 .
+ 01 C-1K COMP-1 VALUE 12.3456E3 .
+ 01 C-1L COMP-1 VALUE 12.3456E4 .
+ 01 C-1M COMP-1 VALUE 12.3456E5 .
+ 01 C-1N COMP-1 VALUE 12.3456E6 .
+ 01 C-1O COMP-1 VALUE 12.3456E7 .
+ 01 C-1P COMP-1 VALUE 12.3456E8 .
+ 01 C-1Q COMP-1 VALUE 12.3456E9 .
+ 01 C-1R COMP-1 VALUE 12.3456E10.
+ 01 C-1S COMP-1 VALUE 12.3456E11.
+ 01 C-2A COMP-2 VALUE 12.3456789098765E-7.
+ 01 C-2B COMP-2 VALUE 12.3456789098765E-6.
+ 01 C-2C COMP-2 VALUE 12.3456789098765E-5.
+ 01 C-2D COMP-2 VALUE 12.3456789098765E-4.
+ 01 C-2E COMP-2 VALUE 12.3456789098765E-3.
+ 01 C-2F COMP-2 VALUE 12.3456789098765E-2.
+ 01 C-2G COMP-2 VALUE 12.3456789098765E-1.
+ 01 C-2H COMP-2 VALUE 12.3456789098765E0 .
+ 01 C-2I COMP-2 VALUE 12.3456789098765E1 .
+ 01 C-2J COMP-2 VALUE 12.3456789098765E2 .
+ 01 C-2K COMP-2 VALUE 12.3456789098765E3 .
+ 01 C-2L COMP-2 VALUE 12.3456789098765E4 .
+ 01 C-2M COMP-2 VALUE 12.3456789098765E5 .
+ 01 C-2N COMP-2 VALUE 12.3456789098765E6 .
+ 01 C-2O COMP-2 VALUE 12.3456789098765E7 .
+ 01 C-2P COMP-2 VALUE 12.3456789098765E8 .
+ 01 C-2Q COMP-2 VALUE 12.3456789098765E9 .
+ 01 C-2R COMP-2 VALUE 12.3456789098765E10.
+ 01 C-2S COMP-2 VALUE 12.3456789098765E11.
+ 01 C-2T COMP-2 VALUE 12.3456789098765E12.
+ 01 C-2U COMP-2 VALUE 12.3456789098765E13.
+ 01 C-2V COMP-2 VALUE 12.3456789098765E14.
+ 01 C-2W COMP-2 VALUE 12.3456789098765E15.
+ 01 C-2X COMP-2 VALUE 12.3456789098765E16.
+ 01 C-EA FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E-7.
+ 01 C-EB FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E-6.
+ 01 C-EC FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E-5.
+ 01 C-ED FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E-4.
+ 01 C-EE FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E-3.
+ 01 C-EF FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E-2.
+ 01 C-EG FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E-1.
+ 01 C-EH FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E0 .
+ 01 C-EI FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E1 .
+ 01 C-EJ FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E2 .
+ 01 C-EK FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E3 .
+ 01 C-EL FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E4 .
+ 01 C-EM FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E5 .
+ 01 C-EN FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E6 .
+ 01 C-EO FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E7 .
+ 01 C-EP FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E8 .
+ 01 C-EQ FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E9 .
+ 01 C-ER FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E10.
+ 01 C-ES FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E11.
+ 01 C-ET FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E12.
+ 01 C-EU FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E13.
+ 01 C-EV FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E14.
+ 01 C-EW FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E15.
+ 01 C-EX FLOAT-EXTENDED VALUE 11.11222233334444995555666677778888E16.
+ 01 A PIC X(24).
+ PROCEDURE DIVISION.
+ DISPLAY "Variations on COMP-1 12."
+ MOVE 12.E-7 TO C-1A .
+ MOVE 12.E-6 TO C-1B .
+ MOVE 12.E-5 TO C-1C .
+ MOVE 12.E-4 TO C-1D .
+ MOVE 12.E-3 TO C-1E .
+ MOVE 12.E-2 TO C-1F .
+ MOVE 12.E-1 TO C-1G .
+ MOVE 12.E0 TO C-1H .
+ MOVE 12.E1 TO C-1I .
+ MOVE 12.E2 TO C-1J .
+ MOVE 12.E3 TO C-1K .
+ MOVE 12.E4 TO C-1L .
+ MOVE 12.E5 TO C-1M .
+ MOVE 12.E6 TO C-1N .
+ MOVE 12.E7 TO C-1O .
+ MOVE 12.E8 TO C-1P .
+ MOVE 12.E9 TO C-1Q .
+ MOVE 12.E10 TO C-1R .
+ MOVE 12.E11 TO C-1S .
+ PERFORM DISPLAY-COMP-1.
+ DISPLAY "Variations on COMP-2 12.3456789098765"
+ PERFORM DISPLAY-COMP-2.
+ DISPLAY "Variations on COMP-2 12."
+ MOVE 12.E-7 TO C-2A .
+ MOVE 12.E-6 TO C-2B .
+ MOVE 12.E-5 TO C-2C .
+ MOVE 12.E-4 TO C-2D .
+ MOVE 12.E-3 TO C-2E .
+ MOVE 12.E-2 TO C-2F .
+ MOVE 12.E-1 TO C-2G .
+ MOVE 12.E0 TO C-2H .
+ MOVE 12.E1 TO C-2I .
+ MOVE 12.E2 TO C-2J .
+ MOVE 12.E3 TO C-2K .
+ MOVE 12.E4 TO C-2L .
+ MOVE 12.E5 TO C-2M .
+ MOVE 12.E6 TO C-2N .
+ MOVE 12.E7 TO C-2O .
+ MOVE 12.E8 TO C-2P .
+ MOVE 12.E9 TO C-2Q .
+ MOVE 12.E10 TO C-2R .
+ MOVE 12.E11 TO C-2S .
+ MOVE 12.E12 TO C-2T .
+ MOVE 12.E13 TO C-2U .
+ MOVE 12.E14 TO C-2V .
+ MOVE 12.E15 TO C-2W .
+ MOVE 12.E16 TO C-2X .
+ PERFORM DISPLAY-COMP-2.
+ DISPLAY "Variations on FLOAT-EXTENDED 11.11222233334444995555666677778888"
+ PERFORM DISPLAY-EXTENDED.
+ GOBACK.
+ DISPLAY-COMP-1.
+ DISPLAY C-1A
+ DISPLAY C-1B
+ DISPLAY C-1C
+ DISPLAY C-1D
+ DISPLAY C-1E
+ DISPLAY C-1F
+ DISPLAY C-1G
+ DISPLAY C-1H
+ DISPLAY C-1I
+ DISPLAY C-1J
+ DISPLAY C-1K
+ DISPLAY C-1L
+ DISPLAY C-1M
+ DISPLAY C-1N.
+ DISPLAY-COMP-2.
+ DISPLAY C-2A
+ DISPLAY C-2B
+ DISPLAY C-2C
+ DISPLAY C-2D
+ DISPLAY C-2E
+ DISPLAY C-2F
+ DISPLAY C-2G
+ DISPLAY C-2H
+ DISPLAY C-2I
+ DISPLAY C-2J
+ DISPLAY C-2K
+ DISPLAY C-2L
+ DISPLAY C-2M
+ DISPLAY C-2N.
+ DISPLAY-EXTENDED.
+ DISPLAY C-EA
+ DISPLAY C-EB
+ DISPLAY C-EC
+ DISPLAY C-ED
+ DISPLAY C-EE
+ DISPLAY C-EF
+ DISPLAY C-EG
+ DISPLAY C-EH
+ DISPLAY C-EI
+ DISPLAY C-EJ
+ DISPLAY C-EK
+ DISPLAY C-EL
+ DISPLAY C-EM
+ DISPLAY C-EN.
+ END PROGRAM float-demo.
+
--- /dev/null
+Variations on COMP-1 12.
+1.200000042E-06
+1.200000042E-05
+0.000119999997
+0.001200000057
+0.0120000001
+0.1199999973
+1.200000048
+12
+120
+1200
+12000
+120000
+1.2E+06
+1.2E+07
+Variations on COMP-2 12.3456789098765
+1.23456789098764994E-06
+1.23456789098764994E-05
+0.000123456789098764987
+0.00123456789098764998
+0.0123456789098764994
+0.123456789098764994
+1.23456789098765007
+12.3456789098765007
+123.456789098765
+1234.56789098764989
+12345.6789098765003
+123456.789098765003
+1.23456789098765003E+06
+1.23456789098764993E+07
+Variations on COMP-2 12.
+1.19999999999999995E-06
+1.20000000000000003E-05
+0.000120000000000000003
+0.00119999999999999989
+0.0120000000000000002
+0.119999999999999996
+1.19999999999999996
+12
+120
+1200
+12000
+120000
+1.2E+06
+1.2E+07
+Variations on FLOAT-EXTENDED 11.11222233334444995555666677778888
+1.111222233334444995555666677778887977E-06
+1.11122223333444499555566667777888794E-05
+0.0001111222233334444995555666677778887999
+0.001111222233334444995555666677778888046
+0.01111222233334444995555666677778887971
+0.1111222233334444995555666677778887971
+1.111222233334444995555666677778887923
+11.11222233334444995555666677778888
+111.1222233334444995555666677778888062
+1111.222233334444995555666677778888012
+11112.22233334444995555666677778888052
+111122.2233334444995555666677778887957
+1.111222233334444995555666677778887982E+06
+1.111222233334444995555666677778888023E+07
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/floating-point_ADD_FORMAT_1.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. float-arith1.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 S1 PIC 999V99 DISPLAY VALUE 123.45 .
+ 01 S2 PIC 999V99 COMP VALUE 123.45 .
+ 01 S3 PIC 999V99 COMP-3 VALUE 123.45 .
+ 01 S4 PIC 999V99 COMP-5 VALUE 123.45 .
+ 01 S5 FLOAT-SHORT VALUE 123.45 .
+ 01 S6 FLOAT-LONG VALUE 123.45 .
+ 01 S7 FLOAT-EXTENDED VALUE 123.45 .
+ 01 D1 PIC 999V99 DISPLAY .
+ 01 D2 PIC 999V99 COMP .
+ 01 D3 PIC 999V99 COMP-3 .
+ 01 D4 PIC 999V99 COMP-5 .
+ 01 D5 FLOAT-SHORT .
+ 01 D6 FLOAT-LONG .
+ 01 D7 FLOAT-EXTENDED .
+ PROCEDURE DIVISION.
+ MOVE S1 TO D1 ADD S1 TO D1
+ MOVE S2 TO D2 ADD S2 TO D2
+ MOVE S3 TO D3 ADD S3 TO D3
+ MOVE S4 TO D4 ADD S4 TO D4
+ MOVE S5 TO D5 ADD S5 TO D5
+ MOVE S6 TO D6 ADD S6 TO D6
+ MOVE S7 TO D7 ADD S7 TO D7
+ PERFORM DISPLAY-D.
+ MOVE S1 TO D1 ADD S2 TO D1
+ MOVE S2 TO D2 ADD S3 TO D2
+ MOVE S3 TO D3 ADD S4 TO D3
+ MOVE S4 TO D4 ADD S5 TO D4
+ MOVE S5 TO D5 ADD S6 TO D5
+ MOVE S6 TO D6 ADD S7 TO D6
+ MOVE S7 TO D7 ADD S1 TO D7
+ PERFORM DISPLAY-D.
+ MOVE S1 TO D1 ADD S3 TO D1
+ MOVE S2 TO D2 ADD S4 TO D2
+ MOVE S3 TO D3 ADD S5 TO D3
+ MOVE S4 TO D4 ADD S6 TO D4
+ MOVE S5 TO D5 ADD S7 TO D5
+ MOVE S6 TO D6 ADD S1 TO D6
+ MOVE S7 TO D7 ADD S2 TO D7
+ PERFORM DISPLAY-D.
+ MOVE S1 TO D1 ADD S4 TO D1
+ MOVE S2 TO D2 ADD S5 TO D2
+ MOVE S3 TO D3 ADD S6 TO D3
+ MOVE S4 TO D4 ADD S7 TO D4
+ MOVE S5 TO D5 ADD S1 TO D5
+ MOVE S6 TO D6 ADD S2 TO D6
+ MOVE S7 TO D7 ADD S3 TO D7
+ PERFORM DISPLAY-D.
+ MOVE S1 TO D1 ADD S5 TO D1
+ MOVE S2 TO D2 ADD S6 TO D2
+ MOVE S3 TO D3 ADD S7 TO D3
+ MOVE S4 TO D4 ADD S1 TO D4
+ MOVE S5 TO D5 ADD S2 TO D5
+ MOVE S6 TO D6 ADD S3 TO D6
+ MOVE S7 TO D7 ADD S4 TO D7
+ PERFORM DISPLAY-D.
+ MOVE S1 TO D1 ADD S6 TO D1
+ MOVE S2 TO D2 ADD S7 TO D2
+ MOVE S3 TO D3 ADD S1 TO D3
+ MOVE S4 TO D4 ADD S2 TO D4
+ MOVE S5 TO D5 ADD S3 TO D5
+ MOVE S6 TO D6 ADD S4 TO D6
+ MOVE S7 TO D7 ADD S5 TO D7
+ PERFORM DISPLAY-D.
+ MOVE S1 TO D1 ADD S7 TO D1
+ MOVE S2 TO D2 ADD S1 TO D2
+ MOVE S3 TO D3 ADD S2 TO D3
+ MOVE S4 TO D4 ADD S3 TO D4
+ MOVE S5 TO D5 ADD S4 TO D5
+ MOVE S6 TO D6 ADD S5 TO D6
+ MOVE S7 TO D7 ADD S6 TO D7
+ PERFORM DISPLAY-D.
+ GOBACK.
+ DISPLAY-D.
+ DISPLAY D1 SPACE
+ D2 SPACE
+ D3 SPACE
+ D4 SPACE
+ D5 SPACE
+ D6 SPACE
+ D7 .
+ MOVE 0 TO D1 D2 D3 D4 D5 D6 D7.
+ END PROGRAM float-arith1.
+
--- /dev/null
+246.90 246.90 246.90 246.90 246.8999939 246.900000000000006 246.9000000000000000000000000000000049
+246.90 246.90 246.90 246.89 246.8999939 246.900000000000006 246.9000000000000000000000000000000049
+246.90 246.90 246.89 246.90 246.8999939 246.900000000000006 246.9000000000000000000000000000000049
+246.90 246.89 246.90 246.90 246.8999939 246.900000000000006 246.9000000000000000000000000000000049
+246.89 246.90 246.90 246.90 246.8999939 246.900000000000006 246.9000000000000000000000000000000049
+246.90 246.90 246.90 246.90 246.8999939 246.900000000000006 246.8999969482421874999999999999999901
+246.90 246.90 246.90 246.90 246.8999939 246.899996948242176 246.9000000000000028421709430404007336
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/floating-point_ADD_FORMAT_2.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. float-add2.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 S1 PIC 999V99 DISPLAY VALUE 123.45 .
+ 01 S2 PIC 999V99 COMP VALUE 123.45 .
+ 01 S3 PIC 999V99 COMP-3 VALUE 123.45 .
+ 01 S4 PIC 999V99 COMP-5 VALUE 123.45 .
+ 01 S5 FLOAT-SHORT VALUE 123.45 .
+ 01 S6 FLOAT-LONG VALUE 123.45 .
+ 01 S7 FLOAT-EXTENDED VALUE 123.45 .
+ 01 D1 PIC 999V99 DISPLAY VALUE 543.21 .
+ 01 D2 PIC 999V99 COMP VALUE 543.21 .
+ 01 D3 PIC 999V99 COMP-3 VALUE 543.21 .
+ 01 D4 PIC 999V99 COMP-5 VALUE 543.21 .
+ 01 D5 FLOAT-SHORT VALUE 543.21 .
+ 01 D6 FLOAT-LONG VALUE 543.21 .
+ 01 D7 FLOAT-EXTENDED VALUE 543.21 .
+ 01 X1 PIC 999V99 DISPLAY .
+ 01 X2 PIC 999V99 COMP .
+ 01 X3 PIC 999V99 COMP-3 .
+ 01 X4 PIC 999V99 COMP-5 .
+ 01 X5 FLOAT-SHORT .
+ 01 X6 FLOAT-LONG .
+ 01 X7 FLOAT-EXTENDED .
+ PROCEDURE DIVISION.
+ ADD S1 TO D1 GIVING X1
+ ADD S2 TO D2 GIVING X2
+ ADD S3 TO D3 GIVING X3
+ ADD S4 TO D4 GIVING X4
+ ADD S5 TO D5 GIVING X5
+ ADD S6 TO D6 GIVING X6
+ ADD S7 TO D7 GIVING X7
+ PERFORM DISPLAY-X.
+ ADD S2 TO D1 GIVING X1
+ ADD S3 TO D2 GIVING X2
+ ADD S4 TO D3 GIVING X3
+ ADD S5 TO D4 GIVING X4
+ ADD S6 TO D5 GIVING X5
+ ADD S7 TO D6 GIVING X6
+ ADD S1 TO D7 GIVING X7
+ PERFORM DISPLAY-X.
+ ADD S3 TO D1 GIVING X1
+ ADD S4 TO D2 GIVING X2
+ ADD S5 TO D3 GIVING X3
+ ADD S6 TO D4 GIVING X4
+ ADD S7 TO D5 GIVING X5
+ ADD S1 TO D6 GIVING X6
+ ADD S2 TO D7 GIVING X7
+ PERFORM DISPLAY-X.
+ ADD S4 TO D1 GIVING X1
+ ADD S5 TO D2 GIVING X2
+ ADD S6 TO D3 GIVING X3
+ ADD S7 TO D4 GIVING X4
+ ADD S1 TO D5 GIVING X5
+ ADD S2 TO D6 GIVING X6
+ ADD S3 TO D7 GIVING X7
+ PERFORM DISPLAY-X.
+ ADD S5 TO D1 GIVING X1
+ ADD S6 TO D2 GIVING X2
+ ADD S7 TO D3 GIVING X3
+ ADD S1 TO D4 GIVING X4
+ ADD S2 TO D5 GIVING X5
+ ADD S3 TO D6 GIVING X6
+ ADD S4 TO D7 GIVING X7
+ PERFORM DISPLAY-X.
+ ADD S6 TO D1 GIVING X1
+ ADD S7 TO D2 GIVING X2
+ ADD S1 TO D3 GIVING X3
+ ADD S2 TO D4 GIVING X4
+ ADD S3 TO D5 GIVING X5
+ ADD S4 TO D6 GIVING X6
+ ADD S5 TO D7 GIVING X7
+ PERFORM DISPLAY-X.
+ ADD S7 TO D1 GIVING X1
+ ADD S1 TO D2 GIVING X2
+ ADD S2 TO D3 GIVING X3
+ ADD S3 TO D4 GIVING X4
+ ADD S4 TO D5 GIVING X5
+ ADD S5 TO D6 GIVING X6
+ ADD S6 TO D7 GIVING X7
+ PERFORM DISPLAY-X.
+ GOBACK.
+ DISPLAY-X.
+ DISPLAY X1 SPACE
+ X2 SPACE
+ X3 SPACE
+ X4 SPACE
+ X5 SPACE
+ X6 SPACE
+ X7 .
+ END PROGRAM float-add2.
+
--- /dev/null
+666.66 666.66 666.66 666.66 666.6600342 666.660000000000082 666.660000000000000000000000000000071
+666.66 666.66 666.66 666.65 666.6600342 666.660000000000082 666.660000000000000000000000000000071
+666.66 666.66 666.65 666.66 666.6600342 666.660000000000082 666.660000000000000000000000000000071
+666.66 666.65 666.66 666.66 666.6600342 666.660000000000082 666.660000000000000000000000000000071
+666.65 666.66 666.66 666.66 666.6600342 666.660000000000082 666.660000000000000000000000000000071
+666.66 666.66 666.66 666.66 666.6600342 666.660000000000082 666.6599969482421875000000000000000316
+666.66 666.66 666.66 666.66 666.6600342 666.659996948242224 666.660000000000002842170943040400775
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/floating-point_DIVIDE_FORMAT_1.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. float-div1.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 S1 PIC 999V99 DISPLAY VALUE 1.1 .
+ 01 S2 PIC 999V99 COMP VALUE 1.1 .
+ 01 S3 PIC 999V99 COMP-3 VALUE 1.1 .
+ 01 S4 PIC 999V99 COMP-5 VALUE 1.1 .
+ 01 S5 FLOAT-SHORT VALUE 1.1 .
+ 01 S6 FLOAT-LONG VALUE 1.1 .
+ 01 S7 FLOAT-EXTENDED VALUE 1.1 .
+ 01 D1 PIC 999V99 DISPLAY VALUE 611.05.
+ 01 D2 PIC 999V99 COMP VALUE 611.05.
+ 01 D3 PIC 999V99 COMP-3 VALUE 611.05.
+ 01 D4 PIC 999V99 COMP-5 VALUE 611.05.
+ 01 D5 FLOAT-SHORT VALUE 611.05.
+ 01 D6 FLOAT-LONG VALUE 611.05.
+ 01 D7 FLOAT-EXTENDED VALUE 611.05.
+ PROCEDURE DIVISION.
+ DIVIDE S1 INTO D1
+ DIVIDE S2 INTO D2
+ DIVIDE S3 INTO D3
+ DIVIDE S4 INTO D4
+ DIVIDE S5 INTO D5
+ DIVIDE S6 INTO D6
+ DIVIDE S7 INTO D7
+ PERFORM DISPLAY-D.
+ DIVIDE S1 INTO D2
+ DIVIDE S2 INTO D3
+ DIVIDE S3 INTO D4
+ DIVIDE S4 INTO D5
+ DIVIDE S5 INTO D6
+ DIVIDE S6 INTO D7
+ DIVIDE S7 INTO D1
+ PERFORM DISPLAY-D.
+ DIVIDE S1 INTO D3
+ DIVIDE S2 INTO D4
+ DIVIDE S3 INTO D5
+ DIVIDE S4 INTO D6
+ DIVIDE S5 INTO D7
+ DIVIDE S6 INTO D1
+ DIVIDE S7 INTO D2
+ PERFORM DISPLAY-D.
+ DIVIDE S1 INTO D4
+ DIVIDE S2 INTO D5
+ DIVIDE S3 INTO D6
+ DIVIDE S4 INTO D7
+ DIVIDE S5 INTO D1
+ DIVIDE S6 INTO D2
+ DIVIDE S7 INTO D3
+ PERFORM DISPLAY-D.
+ DIVIDE S1 INTO D5
+ DIVIDE S2 INTO D6
+ DIVIDE S3 INTO D7
+ DIVIDE S4 INTO D1
+ DIVIDE S5 INTO D2
+ DIVIDE S6 INTO D3
+ DIVIDE S7 INTO D4
+ PERFORM DISPLAY-D.
+ DIVIDE S1 INTO D6
+ DIVIDE S2 INTO D7
+ DIVIDE S3 INTO D1
+ DIVIDE S4 INTO D2
+ DIVIDE S5 INTO D3
+ DIVIDE S6 INTO D4
+ DIVIDE S7 INTO D5
+ PERFORM DISPLAY-D.
+ DIVIDE S1 INTO D7
+ DIVIDE S2 INTO D1
+ DIVIDE S3 INTO D2
+ DIVIDE S4 INTO D3
+ DIVIDE S5 INTO D4
+ DIVIDE S6 INTO D5
+ DIVIDE S7 INTO D6
+ PERFORM DISPLAY-D.
+ GOBACK.
+ DISPLAY-D.
+ DISPLAY D1 SPACE
+ D2 SPACE
+ D3 SPACE
+ D4 SPACE
+ D5 SPACE
+ D6 SPACE
+ D7 .
+ INITIALIZE D1 D2 D3 D4 D5 D6 D7 ALL VALUE.
+ END PROGRAM float-div1.
+
--- /dev/null
+555.50 555.50 555.50 555.50 555.5 555.499999999999886 555.4999999999999999999999999999999014
+555.49 555.50 555.50 555.50 555.5 555.499987959861983 555.4999999999999551469898051436793168
+555.49 555.49 555.50 555.50 555.5 555.5 555.4999879598620163340565002169066332
+555.49 555.49 555.49 555.50 555.5 555.5 555.4999999999999999999999999999999014
+555.50 555.49 555.49 555.49 555.5 555.5 555.4999999999999999999999999999999014
+555.50 555.50 555.49 555.49 555.5 555.5 555.4999999999999999999999999999999014
+555.50 555.50 555.50 555.49 555.5 555.5 555.4999999999999999999999999999999014
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/floating-point_DIVIDE_FORMAT_2.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. float-DIVIDE2.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 S1 PIC 999V99 DISPLAY VALUE 123.21 .
+ 01 S2 PIC 999V99 COMP VALUE 123.21 .
+ 01 S3 PIC 999V99 COMP-3 VALUE 123.21 .
+ 01 S4 PIC 999V99 COMP-5 VALUE 123.21 .
+ 01 S5 FLOAT-SHORT VALUE 123.21 .
+ 01 S6 FLOAT-LONG VALUE 123.21 .
+ 01 S7 FLOAT-EXTENDED VALUE 123.21 .
+ 01 D1 PIC 999V99 DISPLAY VALUE 111.00 .
+ 01 D2 PIC 999V99 COMP VALUE 111.00 .
+ 01 D3 PIC 999V99 COMP-3 VALUE 111.00 .
+ 01 D4 PIC 999V99 COMP-5 VALUE 111.00 .
+ 01 D5 FLOAT-SHORT VALUE 111.00 .
+ 01 D6 FLOAT-LONG VALUE 111.00 .
+ 01 D7 FLOAT-EXTENDED VALUE 111.00 .
+ 01 X1 PIC 999V99 DISPLAY .
+ 01 X2 PIC 999V99 COMP .
+ 01 X3 PIC 999V99 COMP-3 .
+ 01 X4 PIC 999V99 COMP-5 .
+ 01 X5 FLOAT-SHORT .
+ 01 X6 FLOAT-LONG .
+ 01 X7 FLOAT-EXTENDED .
+ PROCEDURE DIVISION.
+ DIVIDE S1 BY D1 GIVING X1
+ DIVIDE S2 BY D2 GIVING X2
+ DIVIDE S3 BY D3 GIVING X3
+ DIVIDE S4 BY D4 GIVING X4
+ DIVIDE S5 BY D5 GIVING X5
+ DIVIDE S6 BY D6 GIVING X6
+ DIVIDE S7 BY D7 GIVING X7
+ PERFORM DISPLAY-X.
+ DIVIDE S2 BY D1 GIVING X1
+ DIVIDE S3 BY D2 GIVING X2
+ DIVIDE S4 BY D3 GIVING X3
+ DIVIDE S5 BY D4 GIVING X4
+ DIVIDE S6 BY D5 GIVING X5
+ DIVIDE S7 BY D6 GIVING X6
+ DIVIDE S1 BY D7 GIVING X7
+ PERFORM DISPLAY-X.
+ DIVIDE S3 BY D1 GIVING X1
+ DIVIDE S4 BY D2 GIVING X2
+ DIVIDE S5 BY D3 GIVING X3
+ DIVIDE S6 BY D4 GIVING X4
+ DIVIDE S7 BY D5 GIVING X5
+ DIVIDE S1 BY D6 GIVING X6
+ DIVIDE S2 BY D7 GIVING X7
+ PERFORM DISPLAY-X.
+ DIVIDE S4 BY D1 GIVING X1
+ DIVIDE S5 BY D2 GIVING X2
+ DIVIDE S6 BY D3 GIVING X3
+ DIVIDE S7 BY D4 GIVING X4
+ DIVIDE S1 BY D5 GIVING X5
+ DIVIDE S2 BY D6 GIVING X6
+ DIVIDE S3 BY D7 GIVING X7
+ PERFORM DISPLAY-X.
+ DIVIDE S5 BY D1 GIVING X1
+ DIVIDE S6 BY D2 GIVING X2
+ DIVIDE S7 BY D3 GIVING X3
+ DIVIDE S1 BY D4 GIVING X4
+ DIVIDE S2 BY D5 GIVING X5
+ DIVIDE S3 BY D6 GIVING X6
+ DIVIDE S4 BY D7 GIVING X7
+ PERFORM DISPLAY-X.
+ DIVIDE S6 BY D1 GIVING X1
+ DIVIDE S7 BY D2 GIVING X2
+ DIVIDE S1 BY D3 GIVING X3
+ DIVIDE S2 BY D4 GIVING X4
+ DIVIDE S3 BY D5 GIVING X5
+ DIVIDE S4 BY D6 GIVING X6
+ DIVIDE S5 BY D7 GIVING X7
+ PERFORM DISPLAY-X.
+ DIVIDE S7 BY D1 GIVING X1
+ DIVIDE S1 BY D2 GIVING X2
+ DIVIDE S2 BY D3 GIVING X3
+ DIVIDE S3 BY D4 GIVING X4
+ DIVIDE S4 BY D5 GIVING X5
+ DIVIDE S5 BY D6 GIVING X6
+ DIVIDE S6 BY D7 GIVING X7
+ PERFORM DISPLAY-X.
+ GOBACK.
+ DISPLAY-X.
+ DISPLAY X1 SPACE
+ X2 SPACE
+ X3 SPACE
+ X4 SPACE
+ X5 SPACE
+ X6 SPACE
+ X7 .
+ END PROGRAM float-DIVIDE2.
+
--- /dev/null
+001.11 001.11 001.11 001.11 1.110000014 1.10999999999999988 1.109999999999999999999999999999999892
+001.11 001.11 001.11 001.10 1.110000014 1.1100000000000001 1.109999999999999999999999999999999892
+001.11 001.11 001.10 001.10 1.110000014 1.1100000000000001 1.109999999999999999999999999999999892
+001.11 001.10 001.10 001.10 1.110000014 1.1100000000000001 1.109999999999999999999999999999999892
+001.10 001.10 001.10 001.11 1.110000014 1.1100000000000001 1.109999999999999999999999999999999892
+001.10 001.10 001.11 001.11 1.110000014 1.1100000000000001 1.10999999175200591216216216216216224
+001.10 001.11 001.11 001.11 1.110000014 1.10999999175200581 1.109999999999999943668684011811877144
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/floating-point_MULTIPLY_FORMAT_1.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. float-mult1.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 S1 PIC 999V99 DISPLAY VALUE 1.2 .
+ 01 S2 PIC 999V99 COMP VALUE 1.2 .
+ 01 S3 PIC 999V99 COMP-3 VALUE 1.2 .
+ 01 S4 PIC 999V99 COMP-5 VALUE 1.2 .
+ 01 S5 FLOAT-SHORT VALUE 1.2 .
+ 01 S6 FLOAT-LONG VALUE 1.2 .
+ 01 S7 FLOAT-EXTENDED VALUE 1.2 .
+ 01 D1 PIC 999V99 DISPLAY VALUE 1.1.
+ 01 D2 PIC 999V99 COMP VALUE 1.1.
+ 01 D3 PIC 999V99 COMP-3 VALUE 1.1.
+ 01 D4 PIC 999V99 COMP-5 VALUE 1.1.
+ 01 D5 FLOAT-SHORT VALUE 1.1.
+ 01 D6 FLOAT-LONG VALUE 1.1.
+ 01 D7 FLOAT-EXTENDED VALUE 1.1.
+ PROCEDURE DIVISION.
+ MULTIPLY S1 BY D1
+ MULTIPLY S2 BY D2
+ MULTIPLY S3 BY D3
+ MULTIPLY S4 BY D4
+ MULTIPLY S5 BY D5
+ MULTIPLY S6 BY D6
+ MULTIPLY S7 BY D7
+ PERFORM DISPLAY-D.
+ MULTIPLY S1 BY D2
+ MULTIPLY S2 BY D3
+ MULTIPLY S3 BY D4
+ MULTIPLY S4 BY D5
+ MULTIPLY S5 BY D6
+ MULTIPLY S6 BY D7
+ MULTIPLY S7 BY D1
+ PERFORM DISPLAY-D.
+ MULTIPLY S1 BY D3
+ MULTIPLY S2 BY D4
+ MULTIPLY S3 BY D5
+ MULTIPLY S4 BY D6
+ MULTIPLY S5 BY D7
+ MULTIPLY S6 BY D1
+ MULTIPLY S7 BY D2
+ PERFORM DISPLAY-D.
+ MULTIPLY S1 BY D4
+ MULTIPLY S2 BY D5
+ MULTIPLY S3 BY D6
+ MULTIPLY S4 BY D7
+ MULTIPLY S5 BY D1
+ MULTIPLY S6 BY D2
+ MULTIPLY S7 BY D3
+ PERFORM DISPLAY-D.
+ MULTIPLY S1 BY D5
+ MULTIPLY S2 BY D6
+ MULTIPLY S3 BY D7
+ MULTIPLY S4 BY D1
+ MULTIPLY S5 BY D2
+ MULTIPLY S6 BY D3
+ MULTIPLY S7 BY D4
+ PERFORM DISPLAY-D.
+ MULTIPLY S1 BY D6
+ MULTIPLY S2 BY D7
+ MULTIPLY S3 BY D1
+ MULTIPLY S4 BY D2
+ MULTIPLY S5 BY D3
+ MULTIPLY S6 BY D4
+ MULTIPLY S7 BY D5
+ PERFORM DISPLAY-D.
+ MULTIPLY S1 BY D7
+ MULTIPLY S2 BY D1
+ MULTIPLY S3 BY D2
+ MULTIPLY S4 BY D3
+ MULTIPLY S5 BY D4
+ MULTIPLY S6 BY D5
+ MULTIPLY S7 BY D6
+ PERFORM DISPLAY-D.
+ GOBACK.
+ DISPLAY-D.
+ DISPLAY D1 SPACE
+ D2 SPACE
+ D3 SPACE
+ D4 SPACE
+ D5 SPACE
+ D6 SPACE
+ D7 .
+ INITIALIZE D1 D2 D3 D4 D5 D6 D7 ALL VALUE.
+ END PROGRAM float-mult1.
+
--- /dev/null
+001.32 001.32 001.32 001.32 1.320000052 1.32000000000000006 1.320000000000000000000000000000000054
+001.32 001.32 001.32 001.32 1.320000052 1.3200000524520874 1.319999999999999951150186916493112221
+001.31 001.32 001.32 001.32 1.320000052 1.32000000000000006 1.32000005245208740234375
+001.32 001.31 001.32 001.32 1.320000052 1.32000000000000006 1.320000000000000000000000000000000054
+001.32 001.32 001.31 001.32 1.320000052 1.32000000000000006 1.320000000000000000000000000000000054
+001.32 001.32 001.32 001.31 1.320000052 1.32000000000000006 1.320000000000000000000000000000000054
+001.32 001.32 001.32 001.32 1.320000052 1.32000000000000006 1.320000000000000000000000000000000054
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/floating-point_MULTIPLY_FORMAT_2.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. float-MULTIPLY2.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 S1 PIC 999V99 DISPLAY VALUE 111.00 .
+ 01 S2 PIC 999V99 COMP VALUE 111.00 .
+ 01 S3 PIC 999V99 COMP-3 VALUE 111.00 .
+ 01 S4 PIC 999V99 COMP-5 VALUE 111.00 .
+ 01 S5 FLOAT-SHORT VALUE 111.00 .
+ 01 S6 FLOAT-LONG VALUE 111.00 .
+ 01 S7 FLOAT-EXTENDED VALUE 111.00 .
+ 01 D1 PIC 999V99 DISPLAY VALUE 1.11 .
+ 01 D2 PIC 999V99 COMP VALUE 1.11 .
+ 01 D3 PIC 999V99 COMP-3 VALUE 1.11 .
+ 01 D4 PIC 999V99 COMP-5 VALUE 1.11 .
+ 01 D5 FLOAT-SHORT VALUE 1.11 .
+ 01 D6 FLOAT-LONG VALUE 1.11 .
+ 01 D7 FLOAT-EXTENDED VALUE 1.11 .
+ 01 X1 PIC 999V99 DISPLAY .
+ 01 X2 PIC 999V99 COMP .
+ 01 X3 PIC 999V99 COMP-3 .
+ 01 X4 PIC 999V99 COMP-5 .
+ 01 X5 FLOAT-SHORT .
+ 01 X6 FLOAT-LONG .
+ 01 X7 FLOAT-EXTENDED .
+ PROCEDURE DIVISION.
+ MULTIPLY S1 BY D1 GIVING X1
+ MULTIPLY S2 BY D2 GIVING X2
+ MULTIPLY S3 BY D3 GIVING X3
+ MULTIPLY S4 BY D4 GIVING X4
+ MULTIPLY S5 BY D5 GIVING X5
+ MULTIPLY S6 BY D6 GIVING X6
+ MULTIPLY S7 BY D7 GIVING X7
+ PERFORM DISPLAY-X.
+ MULTIPLY S2 BY D1 GIVING X1
+ MULTIPLY S3 BY D2 GIVING X2
+ MULTIPLY S4 BY D3 GIVING X3
+ MULTIPLY S5 BY D4 GIVING X4
+ MULTIPLY S6 BY D5 GIVING X5
+ MULTIPLY S7 BY D6 GIVING X6
+ MULTIPLY S1 BY D7 GIVING X7
+ PERFORM DISPLAY-X.
+ MULTIPLY S3 BY D1 GIVING X1
+ MULTIPLY S4 BY D2 GIVING X2
+ MULTIPLY S5 BY D3 GIVING X3
+ MULTIPLY S6 BY D4 GIVING X4
+ MULTIPLY S7 BY D5 GIVING X5
+ MULTIPLY S1 BY D6 GIVING X6
+ MULTIPLY S2 BY D7 GIVING X7
+ PERFORM DISPLAY-X.
+ MULTIPLY S4 BY D1 GIVING X1
+ MULTIPLY S5 BY D2 GIVING X2
+ MULTIPLY S6 BY D3 GIVING X3
+ MULTIPLY S7 BY D4 GIVING X4
+ MULTIPLY S1 BY D5 GIVING X5
+ MULTIPLY S2 BY D6 GIVING X6
+ MULTIPLY S3 BY D7 GIVING X7
+ PERFORM DISPLAY-X.
+ MULTIPLY S5 BY D1 GIVING X1
+ MULTIPLY S6 BY D2 GIVING X2
+ MULTIPLY S7 BY D3 GIVING X3
+ MULTIPLY S1 BY D4 GIVING X4
+ MULTIPLY S2 BY D5 GIVING X5
+ MULTIPLY S3 BY D6 GIVING X6
+ MULTIPLY S4 BY D7 GIVING X7
+ PERFORM DISPLAY-X.
+ MULTIPLY S6 BY D1 GIVING X1
+ MULTIPLY S7 BY D2 GIVING X2
+ MULTIPLY S1 BY D3 GIVING X3
+ MULTIPLY S2 BY D4 GIVING X4
+ MULTIPLY S3 BY D5 GIVING X5
+ MULTIPLY S4 BY D6 GIVING X6
+ MULTIPLY S5 BY D7 GIVING X7
+ PERFORM DISPLAY-X.
+ MULTIPLY S7 BY D1 GIVING X1
+ MULTIPLY S1 BY D2 GIVING X2
+ MULTIPLY S2 BY D3 GIVING X3
+ MULTIPLY S3 BY D4 GIVING X4
+ MULTIPLY S4 BY D5 GIVING X5
+ MULTIPLY S5 BY D6 GIVING X6
+ MULTIPLY S6 BY D7 GIVING X7
+ PERFORM DISPLAY-X.
+ GOBACK.
+ DISPLAY-X.
+ DISPLAY X1 SPACE
+ X2 SPACE
+ X3 SPACE
+ X4 SPACE
+ X5 SPACE
+ X6 SPACE
+ X7 .
+ END PROGRAM float-MULTIPLY2.
+
--- /dev/null
+123.21 123.21 123.21 123.21 123.2099991 123.210000000000008 123.2100000000000000000000000000000069
+123.21 123.21 123.21 123.21 123.2099991 123.210000000000008 123.2100000000000000000000000000000069
+123.21 123.21 123.21 123.21 123.2099991 123.210000000000008 123.2100000000000000000000000000000069
+123.21 123.21 123.21 123.21 123.2099991 123.210000000000008 123.2100000000000000000000000000000069
+123.21 123.21 123.21 123.21 123.2099991 123.210000000000008 123.2100000000000000000000000000000069
+123.21 123.21 123.21 123.21 123.2099991 123.210000000000008 123.2100000000000000000000000000000069
+123.21 123.21 123.21 123.21 123.2099991 123.210000000000008 123.2100000000000000000000000000000069
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/floating-point_SUBTRACT_FORMAT_1.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. float-sub1.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 S1 PIC 999V99 DISPLAY VALUE 111.11 .
+ 01 S2 PIC 999V99 COMP VALUE 111.11 .
+ 01 S3 PIC 999V99 COMP-3 VALUE 111.11 .
+ 01 S4 PIC 999V99 COMP-5 VALUE 111.11 .
+ 01 S5 FLOAT-SHORT VALUE 111.11 .
+ 01 S6 FLOAT-LONG VALUE 111.11 .
+ 01 S7 FLOAT-EXTENDED VALUE 111.11 .
+ 01 D1 PIC 999V99 DISPLAY VALUE 666.66.
+ 01 D2 PIC 999V99 COMP VALUE 666.66.
+ 01 D3 PIC 999V99 COMP-3 VALUE 666.66.
+ 01 D4 PIC 999V99 COMP-5 VALUE 666.66.
+ 01 D5 FLOAT-SHORT VALUE 666.66.
+ 01 D6 FLOAT-LONG VALUE 666.66.
+ 01 D7 FLOAT-EXTENDED VALUE 666.66.
+ PROCEDURE DIVISION.
+ SUBTRACT S1 FROM D1
+ SUBTRACT S1 FROM D2
+ SUBTRACT S1 FROM D3
+ SUBTRACT S1 FROM D4
+ SUBTRACT S1 FROM D5
+ SUBTRACT S1 FROM D6
+ SUBTRACT S1 FROM D7
+ PERFORM DISPLAY-D.
+ SUBTRACT S2 FROM D2
+ SUBTRACT S2 FROM D3
+ SUBTRACT S2 FROM D4
+ SUBTRACT S2 FROM D5
+ SUBTRACT S2 FROM D6
+ SUBTRACT S2 FROM D7
+ SUBTRACT S2 FROM D1
+ PERFORM DISPLAY-D.
+ SUBTRACT S3 FROM D3
+ SUBTRACT S3 FROM D4
+ SUBTRACT S3 FROM D5
+ SUBTRACT S3 FROM D6
+ SUBTRACT S3 FROM D7
+ SUBTRACT S3 FROM D1
+ SUBTRACT S3 FROM D2
+ PERFORM DISPLAY-D.
+ SUBTRACT S4 FROM D4
+ SUBTRACT S4 FROM D5
+ SUBTRACT S4 FROM D6
+ SUBTRACT S4 FROM D7
+ SUBTRACT S4 FROM D1
+ SUBTRACT S4 FROM D2
+ SUBTRACT S4 FROM D3
+ PERFORM DISPLAY-D.
+ SUBTRACT S5 FROM D5
+ SUBTRACT S5 FROM D6
+ SUBTRACT S5 FROM D7
+ SUBTRACT S5 FROM D1
+ SUBTRACT S5 FROM D2
+ SUBTRACT S5 FROM D3
+ SUBTRACT S5 FROM D4
+ PERFORM DISPLAY-D.
+ SUBTRACT S6 FROM D6
+ SUBTRACT S6 FROM D7
+ SUBTRACT S6 FROM D1
+ SUBTRACT S6 FROM D2
+ SUBTRACT S6 FROM D3
+ SUBTRACT S6 FROM D4
+ SUBTRACT S6 FROM D5
+ PERFORM DISPLAY-D.
+ SUBTRACT S7 FROM D7
+ SUBTRACT S7 FROM D1
+ SUBTRACT S7 FROM D2
+ SUBTRACT S7 FROM D3
+ SUBTRACT S7 FROM D4
+ SUBTRACT S7 FROM D5
+ SUBTRACT S7 FROM D6
+ PERFORM DISPLAY-D.
+ GOBACK.
+ DISPLAY-D.
+ DISPLAY D1 SPACE
+ D2 SPACE
+ D3 SPACE
+ D4 SPACE
+ D5 SPACE
+ D6 SPACE
+ D7 .
+ INITIALIZE D1 D2 D3 D4 D5 D6 D7 ALL VALUE.
+ END PROGRAM float-sub1.
+
--- /dev/null
+555.55 555.55 555.55 555.55 555.5499878 555.549999999999955 555.5499999999999999999999999999999606
+555.55 555.55 555.55 555.55 555.5499878 555.549999999999955 555.5499999999999999999999999999999606
+555.55 555.55 555.55 555.55 555.5499878 555.549999999999955 555.5499999999999999999999999999999606
+555.55 555.55 555.55 555.55 555.5499878 555.549999999999955 555.5499999999999999999999999999999606
+555.54 555.54 555.54 555.54 555.5499878 555.549999389648406 555.5499993896484374999999999999999724
+555.55 555.55 555.55 555.55 555.5499878 555.549999999999955 555.5500000000000005684341886080801211
+555.54 555.54 555.54 555.54 555.5499878 555.549999999999955 555.5499999999999999999999999999999606
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/floating-point_SUBTRACT_FORMAT_2.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. float-SUBTRACT2.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 S1 PIC 999V99 DISPLAY VALUE 123.45 .
+ 01 S2 PIC 999V99 COMP VALUE 123.45 .
+ 01 S3 PIC 999V99 COMP-3 VALUE 123.45 .
+ 01 S4 PIC 999V99 COMP-5 VALUE 123.45 .
+ 01 S5 FLOAT-SHORT VALUE 123.45 .
+ 01 S6 FLOAT-LONG VALUE 123.45 .
+ 01 S7 FLOAT-EXTENDED VALUE 123.45 .
+ 01 D1 PIC 999V99 DISPLAY VALUE 678.55 .
+ 01 D2 PIC 999V99 COMP VALUE 678.55 .
+ 01 D3 PIC 999V99 COMP-3 VALUE 678.55 .
+ 01 D4 PIC 999V99 COMP-5 VALUE 678.55 .
+ 01 D5 FLOAT-SHORT VALUE 678.55 .
+ 01 D6 FLOAT-LONG VALUE 678.55 .
+ 01 D7 FLOAT-EXTENDED VALUE 678.55 .
+ 01 X1 PIC 999V99 DISPLAY .
+ 01 X2 PIC 999V99 COMP .
+ 01 X3 PIC 999V99 COMP-3 .
+ 01 X4 PIC 999V99 COMP-5 .
+ 01 X5 FLOAT-SHORT .
+ 01 X6 FLOAT-LONG .
+ 01 X7 FLOAT-EXTENDED .
+ PROCEDURE DIVISION.
+ SUBTRACT S1 FROM D1 GIVING X1
+ SUBTRACT S2 FROM D2 GIVING X2
+ SUBTRACT S3 FROM D3 GIVING X3
+ SUBTRACT S4 FROM D4 GIVING X4
+ SUBTRACT S5 FROM D5 GIVING X5
+ SUBTRACT S6 FROM D6 GIVING X6
+ SUBTRACT S7 FROM D7 GIVING X7
+ PERFORM DISPLAY-X.
+ SUBTRACT S2 FROM D1 GIVING X1
+ SUBTRACT S3 FROM D2 GIVING X2
+ SUBTRACT S4 FROM D3 GIVING X3
+ SUBTRACT S5 FROM D4 GIVING X4
+ SUBTRACT S6 FROM D5 GIVING X5
+ SUBTRACT S7 FROM D6 GIVING X6
+ SUBTRACT S1 FROM D7 GIVING X7
+ PERFORM DISPLAY-X.
+ SUBTRACT S3 FROM D1 GIVING X1
+ SUBTRACT S4 FROM D2 GIVING X2
+ SUBTRACT S5 FROM D3 GIVING X3
+ SUBTRACT S6 FROM D4 GIVING X4
+ SUBTRACT S7 FROM D5 GIVING X5
+ SUBTRACT S1 FROM D6 GIVING X6
+ SUBTRACT S2 FROM D7 GIVING X7
+ PERFORM DISPLAY-X.
+ SUBTRACT S4 FROM D1 GIVING X1
+ SUBTRACT S5 FROM D2 GIVING X2
+ SUBTRACT S6 FROM D3 GIVING X3
+ SUBTRACT S7 FROM D4 GIVING X4
+ SUBTRACT S1 FROM D5 GIVING X5
+ SUBTRACT S2 FROM D6 GIVING X6
+ SUBTRACT S3 FROM D7 GIVING X7
+ PERFORM DISPLAY-X.
+ SUBTRACT S5 FROM D1 GIVING X1
+ SUBTRACT S6 FROM D2 GIVING X2
+ SUBTRACT S7 FROM D3 GIVING X3
+ SUBTRACT S1 FROM D4 GIVING X4
+ SUBTRACT S2 FROM D5 GIVING X5
+ SUBTRACT S3 FROM D6 GIVING X6
+ SUBTRACT S4 FROM D7 GIVING X7
+ PERFORM DISPLAY-X.
+ SUBTRACT S6 FROM D1 GIVING X1
+ SUBTRACT S7 FROM D2 GIVING X2
+ SUBTRACT S1 FROM D3 GIVING X3
+ SUBTRACT S2 FROM D4 GIVING X4
+ SUBTRACT S3 FROM D5 GIVING X5
+ SUBTRACT S4 FROM D6 GIVING X6
+ SUBTRACT S5 FROM D7 GIVING X7
+ PERFORM DISPLAY-X.
+ SUBTRACT S7 FROM D1 GIVING X1
+ SUBTRACT S1 FROM D2 GIVING X2
+ SUBTRACT S2 FROM D3 GIVING X3
+ SUBTRACT S3 FROM D4 GIVING X4
+ SUBTRACT S4 FROM D5 GIVING X5
+ SUBTRACT S5 FROM D6 GIVING X6
+ SUBTRACT S6 FROM D7 GIVING X7
+ PERFORM DISPLAY-X.
+ GOBACK.
+ DISPLAY-X.
+ DISPLAY X1 SPACE
+ X2 SPACE
+ X3 SPACE
+ X4 SPACE
+ X5 SPACE
+ X6 SPACE
+ X7 .
+ END PROGRAM float-SUBTRACT2.
+
--- /dev/null
+555.10 555.10 555.10 555.10 555.0999756 555.100000000000023 555.1000000000000000000000000000000197
+555.10 555.10 555.10 555.10 555.0999756 555.100000000000023 555.1000000000000000000000000000000197
+555.10 555.10 555.10 555.10 555.0999756 555.100000000000023 555.1000000000000000000000000000000197
+555.10 555.10 555.10 555.10 555.0999756 555.100000000000023 555.1000000000000000000000000000000197
+555.10 555.10 555.10 555.10 555.0999756 555.100000000000023 555.1000000000000000000000000000000197
+555.10 555.10 555.10 555.10 555.0999756 555.100000000000023 555.1000000000000000000000000000000197
+555.10 555.10 555.10 555.10 555.0999756 555.100000000000023 555.1000000000000000000000000000000197
+
--- /dev/null
+ *> { dg-do run }
+ *> { dg-output-file "group2/floating-point_literals.out" }
+
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. float-literal.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 D1 PIC 999V9999 DISPLAY .
+ 01 D2 PIC 999V9999 COMP .
+ 01 D3 PIC 999V9999 COMP-3 .
+ 01 D4 PIC 999V9999 COMP-5 .
+ 01 D5 FLOAT-SHORT .
+ 01 D6 FLOAT-LONG .
+ 01 D7 FLOAT-EXTENDED .
+ PROCEDURE DIVISION.
+ DISPLAY -555
+ DISPLAY -555.55
+ DISPLAY -555.55e206
+ DISPLAY 555
+ DISPLAY 555.55
+ DISPLAY 555.55e206
+ MOVE 333.33 TO D1
+ MOVE 333.33 TO D2
+ MOVE 333.33 TO D3
+ MOVE 333.33 TO D4
+ MOVE 333.33e20 TO D5
+ MOVE 333.33e100 TO D6
+ MOVE 333.33e200 TO D7
+ PERFORM DISPLAY-D.
+ ADD 222.22 TO D1
+ ADD 222.22 TO D2
+ ADD 222.22 TO D3
+ ADD 222.22 TO D4
+ ADD 222.22e20 TO D5
+ ADD 222.22e100 TO D6
+ ADD 222.22e200 TO D7
+ PERFORM DISPLAY-D.
+ GOBACK.
+ DISPLAY-D.
+ DISPLAY D1 SPACE
+ D2 SPACE
+ D3 SPACE
+ D4 SPACE
+ D5 SPACE
+ D6 SPACE
+ D7 .
+ END PROGRAM float-literal.
+
--- /dev/null
+-555
+-555.55
+-5.5555E+208
+555
+555.55
+5.5555E+208
+333.3300 333.3300 333.3300 333.3300 3.333300083E+22 3.33329999999999994E+102 3.333300000000000000000000000000000168E+202
+555.5500 555.5500 555.5500 555.5500 5.555499988E+22 5.55549999999999973E+102 5.555500000000000000000000000000000029E+202
+