re PR fortran/38439 (I/O PD edit descriptor inconsistency)
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Mon, 12 Oct 2009 00:54:11 +0000 (00:54 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Mon, 12 Oct 2009 00:54:11 +0000 (00:54 +0000)
2009-10-11  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR libgfortran/38439
* gfortran.dg/fmt_error_9.f: New test.
* gfortran.dg/fmt_error_10.f: New test.

From-SVN: r152658

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/fmt_error_10.f [new file with mode: 0644]
gcc/testsuite/gfortran.dg/fmt_error_9.f [new file with mode: 0644]

index a7b18d0..4865c0d 100644 (file)
@@ -1,3 +1,9 @@
+2009-10-11  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR libgfortran/38439
+       * gfortran.dg/fmt_error_9.f: New test.
+       * gfortran.dg/fmt_error_10.f: New test.
+       
 2009-10-11  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/41583
diff --git a/gcc/testsuite/gfortran.dg/fmt_error_10.f b/gcc/testsuite/gfortran.dg/fmt_error_10.f
new file mode 100644 (file)
index 0000000..c2a9117
--- /dev/null
@@ -0,0 +1,29 @@
+! { dg-do run }
+! { dg-options "-std=legacy" }
+! PR38439 I/O PD edit descriptor inconsistency
+! Test case prepared by Jerry DeLisle <jvdelisle@gcc.gnu.org>
+      character(len=25) :: str
+      character(len=132) :: msg, line
+      str = '(1pd24.15e6)'
+      line = "initial string"
+      x = 555.25
+      
+      write (line,str,iostat=istat, iomsg=msg) 1.0d0, 1.234
+      if (istat.ne.0) call abort
+      if (line.ne."   1.000000000000000D+001.E+00") call abort
+      
+      write (line,'(1pd24.15e6)',iostat=istat, iomsg=msg) 1.0d0, 1.234 ! { dg-warning "Period required" }
+      if (istat.ne.0) call abort
+      if (line.ne."   1.000000000000000D+001.E+00") call abort
+
+      str = '(1pd0.15)'
+      write (line,str,iostat=istat, iomsg=msg) 1.0d0
+      if (istat.ne.5006 .or. msg(1:15).ne."Positive width ") call abort
+      read (*,str,iostat=istat, iomsg=msg) x
+      if (istat.ne.5006 .or. msg(1:15).ne."Positive width ") call abort
+      if (x.ne.555.25) call abort
+      
+      write (line,'(1pd24.15e11.3)') 1.0d0, 1.234
+      if (line.ne."   1.000000000000000D+00  1.234E+00") call abort
+      
+      end
diff --git a/gcc/testsuite/gfortran.dg/fmt_error_9.f b/gcc/testsuite/gfortran.dg/fmt_error_9.f
new file mode 100644 (file)
index 0000000..0f2b63b
--- /dev/null
@@ -0,0 +1,25 @@
+! { dg-do run }
+! { dg-options "-std=gnu" }
+! PR38439 I/O PD edit descriptor inconsistency
+! Test case prepared by Jerry DeLisle <jvdelisle@gcc.gnu.org>
+      character(len=25) :: str
+      character(len=132) :: msg, line
+      str = '(1pd24.15e6)'
+      line = "initial string"
+      x = 555.25
+      
+      write (line,str,iostat=istat, iomsg=msg) 1.0d0, 1.234
+      if (istat.ne.5006 .or. msg(1:15).ne."Period required") call abort
+      if (line.ne."initial string") call abort
+
+      str = '(1pf0.15)'
+      write (line,str,iostat=istat, iomsg=msg) 1.0d0
+      if (istat.ne.0) call abort
+      read (*,str,iostat=istat, iomsg=msg) x
+      if (istat.ne.5006 .or. msg(1:15).ne."Positive width ") call abort
+      if (x.ne.555.25) call abort
+      
+      write (line,'(1pd24.15e11.3)') 1.0d0, 1.234
+      if (line.ne."   1.000000000000000D+00  1.234E+00") call abort
+      
+      end