Hi!

On 2025-04-04T15:17:53-0500, Robert Dubner <rdub...@symas.com> wrote:
>             * cobol.dg/group2/FUNCTION_DATE___TIME_OMNIBUS.cob: Likewise.

OK to push to trunk branch (and releases/gcc-15 branch, eventually)
"Fix time zone for 'cobol.dg/group2/FUNCTION_DATE___TIME_OMNIBUS.cob' 
[PR119818]",
see attached?  Or, is another approach preferable?


Grüße
 Thomas


    --- /dev/null
    +++ b/gcc/testsuite/cobol.dg/group2/FUNCTION_DATE___TIME_OMNIBUS.cob
    @@ -0,0 +1,334 @@
    +       *> { dg-do run }
    +
    +        identification division.
    +        program-id. test.
    +      *>  Tests all the DATE and TIME functions
    +      *>
    +      *>  The various functions are used to test each other.
    +      *>
    +      *>  COMBINED-DATETIME             OK
    +      *>  CURRENT_DATE                  OK
    +      *>  DATE-OF-INTEGER               OK
    +      *>  DATE-TO-YYYYMMDD              OK
    +      *>  DAY-OF-INTEGER                OK
    +      *>  DAY-TO-YYYYDDD                OK
    +      *>  FORMATTED-CURRENT-DATE        OK
    +      *>  FORMATTED-DATE                OK
    +      *>  FORMATTED-DATETIME            OK
    +      *>  FORMATTED-TIME                OK
    +      *>  INTEGER-OF-DATE               OK
    +      *>  INTEGER-OF-DAY                OK
    +      *>  INTEGER-OF-FORMATTED-DATE     OK
    +      *>  SECONDS-FROM-FORMATTED-TIME   OK
    +      *>  SECONDS-PAST-MIDNIGHT         OK
    +      *>  TEST-DATE-YYYYMMDD            OK
    +      *>  TEST-DAY-YYYYDDD              OK
    +      *>  TEST-FORMATTED-DATETIME       OK
    +      *>
    +        data division.
    +        working-storage section.
    +
    +        01 checking  pic x(80).
    +        01 should-be pic x(32).
    +        01 but-is    pic x(32).
    +        01 but-is-n redefines but-is pic 99999999.999999.
    +        01 but-is-integer_part pic 99999.
    +
    +        01 jd1601 pic 9(7).
    +        01 jd9999 pic 9(7).
    +        01 jd     pic s9(7).
    +
    +        01 integer-date pic s9(7).
    +        01 integer-result pic 99.
    +        01 standard-date-form pic 9(8).
    +        01 julian-date-form PIC 9(8).
    +
    +        01 date1.
    +            02 YYYY pic 9999.
    +            02 MM     pic 99.
    +            02 DD     pic 99.
    +        01 date2.
    +            02 YYYY   pic 9999.
    +            02 filler pic x value "-".
    +            02 MM     pic 99.
    +            02 filler pic x value "-".
    +            02 DD     pic 99.
    +        01 date3.
    +            02 YYYY   pic 9999.
    +            02 DDD    pic 999.
    +        01 date4.
    +            02 YYYY   pic 9999.
    +            02 filler pic x value "-".
    +            02 DDD     pic 999.
    +        01 date5.
    +            02 YYYY   pic 9999.
    +            02 filler pic x value "W".
    +            02 ww     pic 99.
    +            02 d      pic 9.
    +        01 date6.
    +            02 YYYY   pic 9999.
    +            02 filler pic xx value "-W".
    +            02 ww     pic 99.
    +            02 filler pic x value "-".
    +            02 d      pic 9.
    +
    +        01 yymmdd.
    +            02 YY pic 99.
    +            02 MM pic 99.
    +            02 DD pic 99.
    +
    +        01 minus10 pic s99 value -10.
    +
    +        01 forced_date_n pic X(64) VALUE Z"COB_CURRENT_DATE".
    +        01 forced_date_v pic X(64) VALUE Z"1945/06/01 12:34:56".
    +
    +        procedure division.
    +        CALL "setenv" using forced_date_n, forced_date_v
    +
    +        move "SECONDS-PAST-MIDNIGHT" to checking
    +        move "45296" to should-be
    +        MOVE FUNCTION SECONDS-PAST-MIDNIGHT to but-is-integer_part
    +        move but-is-integer_part to but-is
    +        perform checkit
    +
    +      *>    Establish the initial date integer
    +        move "integer-of-date" to checking
    +        move function integer-of-date(19000101) to jd1601
    +        move "integer-of-date(19000101)" to checking
    +        move 0109208 to should-be
    +        move jd1601 to but-is
    +        perform checkit
    +
    +      *>    Establish the final date integer
    +        move "integer-of-date" to checking
    +        move function integer-of-date(21011231) to jd9999
    +        move "integer-of-date(21001231)" to checking
    +        move 0182986 to should-be
    +        move jd9999 to but-is
    +        perform checkit
    +
    +      *>    We are going to do the following tests over all valid dates:
    +        perform varying jd from jd1601 by 1 until jd > jd9999
    +
    +      *>    Convert JD to all six DATE types:
    +            move FUNCTION FORMATTED-DATE("YYYYMMDD"   jd) TO date1
    +            move FUNCTION FORMATTED-DATE("YYYY-MM-DD" jd) TO date2
    +            move FUNCTION FORMATTED-DATE("YYYYDDD"    jd) TO date3
    +            move FUNCTION FORMATTED-DATE("YYYY-DDD"   jd) TO date4
    +            move FUNCTION FORMATTED-DATE("YYYYWwwD"   jd) TO date5
    +            move FUNCTION FORMATTED-DATE("YYYY-Www-D" jd) TO date6
    +
    +      *>    Test the routines that check DATE types
    +            move zero to should-be
    +            move FUNCTION TEST-FORMATTED-DATETIME("YYYYMMDD"   date1) TO 
but-is
    +              move "TEST-FORMATTED-DATETIME(""YYYYMMDD""   date1)" to 
checking
    +              perform checkit
    +            move FUNCTION TEST-FORMATTED-DATETIME("YYYY-MM-DD" date2) TO 
but-is
    +              move "TEST-FORMATTED-DATETIME(""YYYY-MM-DD"" date2)" to 
checking
    +              perform checkit
    +            move FUNCTION TEST-FORMATTED-DATETIME("YYYYDDD"    date3) TO 
but-is
    +              move "TEST-FORMATTED-DATETIME(""YYYYDDD""    date3)" to 
checking
    +              perform checkit
    +            move FUNCTION TEST-FORMATTED-DATETIME("YYYY-DDD"   date4) TO 
but-is
    +              move "TEST-FORMATTED-DATETIME(""YYYY-DDD""   date4)" to 
checking
    +              perform checkit
    +            move FUNCTION TEST-FORMATTED-DATETIME("YYYYWwwD"   date5) TO 
but-is
    +              move "TEST-FORMATTED-DATETIME(""YYYYWwwD""   date5)" to 
checking
    +              perform checkit
    +            move FUNCTION TEST-FORMATTED-DATETIME("YYYY-Www-D" date6) TO 
but-is
    +              move "TEST-FORMATTED-DATETIME(""YYYY-Www-D"" date6)" to 
checking
    +              perform checkit
    +
    +      *>    Test the routines that extract the integer date
    +
    +            move function INTEGER-OF-FORMATTED-DATE("YYYYMMDD"   date1) TO 
integer-date
    +              move "INTEGER-OF-FORMATTED-DATE(""YYYYMMDD""   date1)" to 
checking
    +              move jd to should-be
    +              move integer-date to but-is
    +              perform checkit
    +
    +            move function INTEGER-OF-FORMATTED-DATE("YYYY-MM-DD"   date2) 
TO integer-date
    +              move "INTEGER-OF-FORMATTED-DATE(""YYYY-MM-DD""   date2)" to 
checking
    +              move jd to should-be
    +              move integer-date to but-is
    +              perform checkit
    +
    +            move function INTEGER-OF-FORMATTED-DATE("YYYYDDD"   date3) TO 
integer-date
    +              move "INTEGER-OF-FORMATTED-DATE(""YYYYDDD""   date3)" to 
checking
    +              move jd to should-be
    +              move integer-date to but-is
    +              perform checkit
    +
    +            move function INTEGER-OF-FORMATTED-DATE("YYYY-DDD"   date4) TO 
integer-date
    +              move "INTEGER-OF-FORMATTED-DATE(""YYYY-DDD""   date4)" to 
checking
    +              move jd to should-be
    +              move integer-date to but-is
    +              perform checkit
    +
    +            move function INTEGER-OF-FORMATTED-DATE("YYYYWwwD"   date5) TO 
integer-date
    +              move "INTEGER-OF-FORMATTED-DATE(""YYYYWwwD""   date5)" to 
checking
    +              move jd to should-be
    +              move integer-date to but-is
    +              perform checkit
    +
    +            move function INTEGER-OF-FORMATTED-DATE("YYYY-Www-D"   date6) 
TO integer-date
    +              move "INTEGER-OF-FORMATTED-DATE(""YYYY-Www-D""   date6)" to 
checking
    +              move jd to should-be
    +              move integer-date to but-is
    +              perform checkit
    +
    +            move function DATE-OF-INTEGER(jd) to standard-date-form
    +            move function INTEGER-OF-DATE(standard-date-form) to 
integer-date
    +              move "DATE-OF-INTEGER and INTEGER-OF-DATE" to checking
    +              move jd to should-be
    +              move integer-date to but-is
    +              perform checkit
    +
    +            move function TEST-DATE-YYYYMMDD(standard-date-form) to 
integer-result
    +              move "TEST-DATE-YYYYMMDD" to checking
    +              move zero to should-be
    +              move integer-result to but-is
    +              perform checkit
    +
    +            move function DAY-OF-INTEGER(jd) to julian-date-form
    +            move function INTEGER-OF-DAY(julian-date-form) to integer-date
    +              move "DAY-OF-INTEGER and INTEGER-OF-DAY" to checking
    +              move jd to should-be
    +              move integer-date to but-is
    +              perform checkit
    +
    +            move function TEST-DAY-YYYYDDD(julian-date-form) to 
integer-result
    +              move "TEST-DAY-YYYYDDD" to checking
    +              move zero to should-be
    +              move integer-result to but-is
    +              perform checkit
    +            end-perform.
    +
    +        move function integer-of-date(19980101) to jd1601
    +        move function integer-of-date(19981231) to jd9999
    +        perform varying jd from jd1601 by 1 until jd > jd9999
    +            move FUNCTION FORMATTED-DATE("YYYYMMDD"   jd) TO date1
    +            move FUNCTION FORMATTED-DATE("YYYYDDD"    jd) TO date3
    +
    +            move FUNCTION MOD( YYYY of date1 100) to yy of yymmdd
    +            move MM of date1 to MM of yymmdd
    +            move DD of date1 to DD of yymmdd
    +
    +            move FUNCTION DATE-TO-YYYYMMDD(yymmdd, minus10, 1994)
    +                        to standard-date-form
    +              move "DATE-TO-YYYYMMDD" to checking
    +              move "18" to date1(1:2)
    +              move date1 to should-be
    +              move standard-date-form to but-is
    +              perform checkit
    +            end-perform.
    +
    +        move "DAY-TO-YYYYDDD" to checking
    +        MOVE 1910004 to should-be
    +        MOVE FUNCTION DAY-TO-YYYYDDD(10004 -20 2002) TO but-is
    +        perform checkit
    +        MOVE 1810004 to should-be
    +        MOVE FUNCTION DAY-TO-YYYYDDD(10004 -120 2002) TO but-is
    +        perform checkit
    +        MOVE 2010004 to should-be
    +        MOVE FUNCTION DAY-TO-YYYYDDD(10004 20 2002) TO but-is
    +        perform checkit
    +        MOVE 1995005 to should-be
    +        MOVE FUNCTION DAY-TO-YYYYDDD(95005 -10 2013) TO but-is
    +        perform checkit
    +
    +        move "COMBINED-DATETIME" to checking
    +        MOVE "19450601.123456" TO should-be
    +        MOVE FUNCTION COMBINED-DATETIME(19450601 123456) TO but-is-n
    +        perform checkit
    +
    +        move "CURRENT_DATE" to checking
    +        MOVE "1945060112345600+0000" TO should-be
    +        MOVE FUNCTION CURRENT-DATE TO but-is
    +        move "+0000" to but-is(17:5)
    +        perform checkit
    +
    +        move "FORMATTED-CURRENT-DATE (1)" to checking
    +        MOVE "1945-06-01T12:34:56" TO should-be
    +        MOVE FUNCTION FORMATTED-CURRENT-DATE("YYYY-MM-DDThh:mm:ss") TO 
but-is
    +        perform blot-zulu
    +        perform checkit
    +
    +        move "FORMATTED-CURRENT-DATE (2)" to checking
    +        MOVE "1945-06-01T12:34:56Z" TO should-be
    +        MOVE FUNCTION FORMATTED-CURRENT-DATE("YYYY-MM-DDThh:mm:ssZ") TO 
but-is
    +        perform blot-zulu
    +        perform checkit
    +
    +        move "FORMATTED-CURRENT-DATE (3)" to checking
    +        MOVE "1945-06-01T12:34:56-05:00" TO should-be
    +        MOVE FUNCTION FORMATTED-CURRENT-DATE("YYYY-MM-DDThh:mm:ss+hh:mm") 
TO but-is
    +        perform blot-zulu
    +        perform checkit
    +
    +        move "formatted-time" to checking
    +        move "01:12:34Z" to should-be
    +        MOVE FUNCTION formatted-time("hh:mm:ssZ" 754 -60 ) to but-is
    +        perform checkit.
    +
    +        move "00:12:34Z" to should-be
    +        MOVE FUNCTION formatted-time("hh:mm:ssZ" 754   0 ) to but-is
    +        perform checkit.
    +
    +        move "23:12:34Z" to should-be
    +        MOVE FUNCTION formatted-time("hh:mm:ssZ" 754  60 ) to but-is
    +        perform checkit.
    +
    +        move "formatted-datetime" to checking
    +        MOVE "1900-01-01T00:00:00-01:00" TO SHOULD-BE
    +        MOVE FUNCTION formatted-datetime("YYYY-MM-DDThh:mm:ss+hh:mm" 
0109208 0 -60 ) TO but-is
    +        perform checkit.
    +
    +        MOVE "1900-01-01T00:00:00+00:00" TO SHOULD-BE
    +        MOVE FUNCTION formatted-datetime("YYYY-MM-DDThh:mm:ss+hh:mm" 
0109208 0 -0 )  TO but-is
    +        perform checkit.
    +
    +        MOVE "1900-01-01T00:00:00+01:00" TO SHOULD-BE
    +        MOVE FUNCTION formatted-datetime("YYYY-MM-DDThh:mm:ss+hh:mm" 
0109208 0 +60 ) TO but-is
    +        perform checkit.
    +
    +        move "SECONDS-FROM-FORMATTED-TIME" to checking
    +        MOVE "00043200.000000" TO SHOULD-BE
    +        MOVE SPACE TO but-is
    +        MOVE FUNCTION SECONDS-FROM-FORMATTED-TIME("hh:mm:ss" "12:00:00") 
TO but-is-n
    +        perform checkit.
    +
    +        stop run.
    +
    +        checkit.
    +      *>      display "checkit " """" should-be """" space """" but-is """"
    +            if FUNCTION TRIM(should-be) IS NUMERIC AND FUNCTION 
TRIM(but-is) IS NUMERIC
    +                if FUNCTION NUMVAL(should-be)
    +                        not equal to FUNCTION NUMVAL(but-is)
    +                    and should-be not equal to but-is
    +                    then
    +                    display function trim (checking) ":"
    +                            " should be " """" function trim (should-be) 
""""
    +                            " but is "    """" function trim (but-is) """"
    +                    move 1 to return-code
    +                    end-if
    +            else
    +                if should-be not equal to but-is
    +                    and should-be not equal to but-is
    +                    then
    +                    display function trim (checking) ":"
    +                            " should be " """" function trim (should-be) 
""""
    +                            " but is "    """" function trim (but-is) """"
    +                    move 1 to return-code
    +                end-if
    +        .
    +        blot-zulu.
    +            move "hh:mm" TO but-is(12:5)
    +            move "hh:mm" TO should-be(12:5)
    +            if but-is(21:1) not equal to space
    +                move "+hh:mm" TO but-is(20:6)
    +                move "+hh:mm" TO should-be(20:6)
    +                end-if
    +        .
    +        end program test.
    +


>From 2241bd7915dd3dc655809aec57b056060c052ea9 Mon Sep 17 00:00:00 2001
From: Thomas Schwinge <tschwi...@baylibre.com>
Date: Fri, 18 Apr 2025 13:01:57 +0200
Subject: [PATCH] Fix time zone for
 'cobol.dg/group2/FUNCTION_DATE___TIME_OMNIBUS.cob' [PR119818]

This progresses:

    PASS: cobol.dg/group2/FUNCTION_DATE___TIME_OMNIBUS.cob   -O0  (test for excess errors)
    [-FAIL:-]{+PASS:+} cobol.dg/group2/FUNCTION_DATE___TIME_OMNIBUS.cob   -O0  execution test
    [Etc.]

	PR cobol/119818
	gcc/testsuite/
	* cobol.dg/group2/FUNCTION_DATE___TIME_OMNIBUS.cob:
	'dg-set-target-env-var TZ UTC0'.
---
 gcc/testsuite/cobol.dg/group2/FUNCTION_DATE___TIME_OMNIBUS.cob | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gcc/testsuite/cobol.dg/group2/FUNCTION_DATE___TIME_OMNIBUS.cob b/gcc/testsuite/cobol.dg/group2/FUNCTION_DATE___TIME_OMNIBUS.cob
index bb48bb0f427..d3017e7e67b 100644
--- a/gcc/testsuite/cobol.dg/group2/FUNCTION_DATE___TIME_OMNIBUS.cob
+++ b/gcc/testsuite/cobol.dg/group2/FUNCTION_DATE___TIME_OMNIBUS.cob
@@ -1,4 +1,5 @@
        *> { dg-do run }
+       *> { dg-set-target-env-var TZ UTC0 }
 
         identification division.
         program-id. test.
-- 
2.34.1

Reply via email to