public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "harper at msor dot vuw.ac.nz" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug fortran/105473] semicolon allowed when list-directed read integer with decimal='point'
Date: Thu, 19 May 2022 00:10:44 +0000	[thread overview]
Message-ID: <bug-105473-4-nuW0RBQWmv@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-105473-4@http.gcc.gnu.org/bugzilla/>

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105473

--- Comment #19 from harper at msor dot vuw.ac.nz ---
Thank you. To make the outputs from my test program testdecimal.f90 easier 
to compare when using different compilers, and to clarify where a reading 
error happened, I have revised the program to make its results clearer.
Below is the new version of the program. I see no point in sending its
output with my gfortran, which does not have Jerry's latest corrections,
but I do provide its output with ifort, which it is not your job to debug!

john@johns-laptop:~/Jfh$ cat testdecimal.f90
! Test list-directed reading with decimal='point' and 'comma' by
! printing one line for each of 32 cases, reading input(1:16) with each
! of 'point' or 'comma', using s(ios) to give ERR, OK or end according
! to the iostat=ios value from reading. Before reading, x=[666,999].
   implicit none
   real x(2)
   integer ios,i,j
   character(*),parameter:: punc=",; .",fmt='(1X,A,I2,1X,5A,2F7.1,1X,A)'
   integer,parameter:: lpunc =len(punc)
   character:: dec(2)*5=['point','comma'], input(lpunc**2)*4 = &
        [(("2"//punc(i:i)//"5"//punc(j:j),i=1,lpunc),j=1,lpunc)]

   do i = 1,size(input)
      do j = 1,2
         x = [666, 999]
         read(input(i),*,decimal=dec(j),iostat=ios) x
         print fmt,'i=',i,' input="',input(i),'" with ',dec(j),&
              ' x =',x,s(ios)
      end do
   end do

contains
   character(3) function s(ios) ! ERR, OK ,end if ios>0, ==0, <0
     integer,intent(in)::  ios
     s = merge('ERR',merge(' OK','end',ios==0),ios>0)
   end function s
end program

john@johns-laptop:~/Jfh$ ifort testdecimal.f90; ./a.out
Compiling "ifort testdecimal.f90"
  i= 1  input="2,5," with point x =    2.0    5.0  OK
  i= 1  input="2,5," with comma x =  666.0  999.0 ERR
  i= 2  input="2;5," with point x =  666.0  999.0 ERR
  i= 2  input="2;5," with comma x =    2.0    5.0  OK
  i= 3  input="2 5," with point x =    2.0    5.0  OK
  i= 3  input="2 5," with comma x =    2.0    5.0  OK
  i= 4  input="2.5," with point x =    2.5  999.0 end
  i= 4  input="2.5," with comma x =  666.0  999.0 ERR
  i= 5  input="2,5;" with point x =    2.0  999.0 ERR
  i= 5  input="2,5;" with comma x =    2.5  999.0 end
  i= 6  input="2;5;" with point x =  666.0  999.0 ERR
  i= 6  input="2;5;" with comma x =    2.0    5.0  OK
  i= 7  input="2 5;" with point x =    2.0  999.0 ERR
  i= 7  input="2 5;" with comma x =    2.0    5.0  OK
  i= 8  input="2.5;" with point x =  666.0  999.0 ERR
  i= 8  input="2.5;" with comma x =  666.0  999.0 ERR
  i= 9  input="2,5 " with point x =    2.0    5.0  OK
  i= 9  input="2,5 " with comma x =    2.5  999.0 end
  i=10  input="2;5 " with point x =  666.0  999.0 ERR
  i=10  input="2;5 " with comma x =    2.0    5.0  OK
  i=11  input="2 5 " with point x =    2.0    5.0  OK
  i=11  input="2 5 " with comma x =    2.0    5.0  OK
  i=12  input="2.5 " with point x =    2.5  999.0 end
  i=12  input="2.5 " with comma x =  666.0  999.0 ERR
  i=13  input="2,5." with point x =    2.0    5.0  OK
  i=13  input="2,5." with comma x =  666.0  999.0 ERR
  i=14  input="2;5." with point x =  666.0  999.0 ERR
  i=14  input="2;5." with comma x =    2.0  999.0 ERR
  i=15  input="2 5." with point x =    2.0    5.0  OK
  i=15  input="2 5." with comma x =    2.0  999.0 ERR
  i=16  input="2.5." with point x =  666.0  999.0 ERR
  i=16  input="2.5." with comma x =  666.0  999.0 ERR
john@johns-laptop:~/Jfh$


On Wed, 18 May 2022, jvdelisle at gcc dot gnu.org wrote:

> Date: Wed, 18 May 2022 02:52:26 +0000
> From: jvdelisle at gcc dot gnu.org <gcc-bugzilla@gcc.gnu.org>
> To: John Harper <john.harper@vuw.ac.nz>
> Subject: [Bug fortran/105473] semicolon allowed when list-directed read
>     integer with decimal='point'
> Resent-Date: Wed, 18 May 2022 14:52:38 +1200 (NZST)
> Resent-From: <john.harper@vuw.ac.nz>
> 
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105473
>
> --- Comment #18 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> ---
> (In reply to harper from comment #17)
>> On comparing that with ifort's result I think that the only remaining bug
>> is that if decimal='comma' then '.' is neither a decimal symbol nor a
>> separator (see f2018 13.6).
>
> Making this easier for others to see.
>
> With gfortran I see with the 8th sub-case:
>
> i=           8 input(i) = "2.5;"
> with decimal=point x(:) =2.5 666.0  ios=5010
> with decimal=comma x(:) =2.5 666.0  ios=-1
>
> i=          12 input(i) = "2.5 "
> with decimal=point x(:) =2.5 666.0  ios=-1
> with decimal=comma x(:) =2.5 666.0  ios=-1
>
> In these cases the decimal=comma should have never seen 2.5
>
> With ifort:
>
> i=           8 input(i) = "2.5;"
> with decimal=point x(:) =   2.50000000       5.00000000      ios=        5010
> with decimal=comma x(:) =   2.50000000       666.000000      ios=          -1
>
> I don't think ifort has the decimal=point part right, as if it backed up and
> read the digit 5 a second time.
>
> Regardless, getting closer here.  I will work on the gfortran comma issue.
>
> -- 
> You are receiving this mail because:
> You reported the bug.
>


-- John Harper, School of Mathematics and Statistics
Victoria Univ. of Wellington, PO Box 600, Wellington 6140, New Zealand.
e-mail john.harper@vuw.ac.nz phone +64(0) 4 463 5276

  parent reply	other threads:[~2022-05-19  0:10 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-04  8:38 [Bug fortran/105473] New: " john.harper at vuw dot ac.nz
2022-05-05  2:14 ` [Bug fortran/105473] " jvdelisle2 at gmail dot com
2022-05-05  2:21 ` jvdelisle2 at gmail dot com
2022-05-05  2:50 ` harper at msor dot vuw.ac.nz
2022-05-06  1:26 ` jvdelisle2 at gmail dot com
2022-05-06 20:39 ` anlauf at gcc dot gnu.org
2022-05-08 14:54 ` jvdelisle at gcc dot gnu.org
2022-05-14 22:00 ` jvdelisle at gcc dot gnu.org
2022-05-15  8:59 ` harper at msor dot vuw.ac.nz
2022-05-15 14:37 ` jvdelisle at gcc dot gnu.org
2022-05-15 15:56 ` jvdelisle at gcc dot gnu.org
2022-05-16  0:10 ` harper at msor dot vuw.ac.nz
2022-05-16  0:42 ` jvdelisle at gcc dot gnu.org
2022-05-16  0:49 ` jvdelisle at gcc dot gnu.org
2022-05-16  0:55 ` jvdelisle at gcc dot gnu.org
2022-05-16  1:44 ` harper at msor dot vuw.ac.nz
2022-05-16  4:12 ` harper at msor dot vuw.ac.nz
2022-05-16 21:13 ` harper at msor dot vuw.ac.nz
2022-05-18  2:52 ` jvdelisle at gcc dot gnu.org
2022-05-19  0:10 ` harper at msor dot vuw.ac.nz [this message]
2022-06-03  4:33 ` jvdelisle at gcc dot gnu.org
2022-06-03  9:11 ` harper at msor dot vuw.ac.nz
2022-06-03 21:04 ` jvdelisle at gcc dot gnu.org
2022-06-04  3:47 ` harper at msor dot vuw.ac.nz
2022-07-02 17:14 ` jvdelisle at gcc dot gnu.org
2022-07-03  3:52 ` harper at msor dot vuw.ac.nz
2022-07-04  3:48 ` jvdelisle at gcc dot gnu.org
2024-02-17 18:04 ` cvs-commit at gcc dot gnu.org
2024-03-08  0:29 ` cvs-commit at gcc dot gnu.org
2024-03-08  0:30 ` jvdelisle at gcc dot gnu.org
2024-03-08  7:21 ` john.harper at vuw dot ac.nz
2024-03-09 19:12 ` jvdelisle at gcc dot gnu.org
2024-03-11 12:48 ` burnus at gcc dot gnu.org
2024-03-11 22:48 ` jvdelisle at gcc dot gnu.org
2024-03-14  8:40 ` burnus at gcc dot gnu.org
2024-03-14  9:16 ` burnus at gcc dot gnu.org
2024-04-03  3:36 ` jvdelisle at gcc dot gnu.org
2024-04-03  3:50 ` jvdelisle at gcc dot gnu.org
2024-04-06 13:56 ` cvs-commit at gcc dot gnu.org
2024-04-22  4:23 ` cvs-commit at gcc dot gnu.org
2024-04-22  4:25 ` jvdelisle at gcc dot gnu.org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-105473-4-nuW0RBQWmv@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).