This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: character arrays in format tags (bug?)


Brian Barnes wrote:
I have a program which uses conditional format tags, similar to this testcase which is taken from page 187 of Metcalf, Reid and Cohen's Fortran 95/2003 explained:

---
      program testcase
      integer :: ival(30),key,i
      character(30) :: buffer
      character(6) :: form2(3) = (/ '(30i1)', '(15i2)', '(10i3)' /)

      read (*, '(a30,i1)') buffer, key
      read (buffer, form2 (key)) (ival(i), i=1,30/key)

      end
---

When compiled with -std=gnu (gfortran 4.2.2, darwin8), no warning is issued (which is good). But when compiled with -std=f95 or -std=f2003, the following error results:

---
nell:~/work/bit barnes$ gfortran -std=f95 testcase.f
testcase.f:7.19:

      read (buffer, form2 (key)) (ival(i), i=1,30/key)
                  1
Error: Extension: Character array in FORMAT tag at (1)
---

Intel Fortran 10 gives no warning or error, at its "-warn all -stand=f95" level. Is this a gfortran bug or is the Metcalf example bad?

This is a bug, can you please file a bug report in http://gcc.gnu.org/bugzilla so that it doesn't get lost?


As an aside, if anyone knows how to create a formatting string that does something like:
write(6,'(NUMI3)') variable(1:NUM)
...where NUM is an integer that is determined at runtime, I would love to know how to write that code. Right now I am enumerating the various cases, which kind of sucks. I tried a couple different ways to work the integer variable into the format expression, with no luck.

You have two options: use a large enough number in the format string, or, if such a number doesn't exist, use an internal write to create the format string and then use that format string, say
charater*4 :: f
write(f, "(i2,'i3')") num
write(6, f) variable(1:num)


Cheers,
- Tobi


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]