It's not the format '(2g25.8e3)' that is causing the error. I tried it out with a large nmax1 making the read loop read more than the available data and the abort specifically says formatted sequential IO error with this given format. Here is my error.

>apparent state: unit 2 named RW-total-tadmix4pi-6pi-DY.dat
>last format: (2g25.8e3)
>lately reading sequential formatted external IO
>Aborted

If you recall, his error was a list IO error which leads me to suspect he is using a read(2,*) somewhere in his code whose argument list does not match up with the data columns in the file.



Matthias Schroeder wrote:
Christoph P. Kukulies wrote:
On Thu, Sep 20, 2007 at 10:12:50AM +0200, Klaus Wacker wrote:
On Wed, Sep 19, 2007 at 10:25:55AM -0500, Hendrik van Hees wrote:
Thank you very much for all the responses. I think I didn't make the problem clear. With the older version of gcc (I am using the fortran compiler, g77)

gcc version 3.3.5 20050117 (prerelease) (SUSE Linux)

the little code runs fine.

With the newer version, which is definitely in my installation of SL 5 (I use yum as a package manager),

gcc version 3.4.6 20060404 (Red Hat 3.4.6-4)

the same code does not work any more. Perhaps it helps, when I give the relevant piece of code:

cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

      open(unit=1,
     $     file='RW-total-tadmix4pi-6pi-DY.dat')

      do x=0.2d0,1.45d0,0.01d0
         erg=ipol(x1,set1,x)+ipol(x2,set2,x)+ipol(x3,set3,x)
     $        +ipol(x4,set4,x)+ipol(x5,set5,x)
         write(unit=1,fmt='(2g25.8e3)')      $        x,erg
      end do
            close(unit=1)
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
c     add omega and phi (all pT)
      open (unit=2, file='RW-total-tadmix4pi-6pi-DY.dat',
     $     status='old')
      do j=1,nmax1
         read(unit=2,fmt='(2g25.8e3)') x1(j),set1(j)
c         write(*,*) x1(j),set1(j)
      end do
      close(unit=2)
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

As you see. It simply writes some columns of double precision, and in the next step it reads the same in again.


Somehow the code you show doesn't fit the error message. You seem to be
using unit 1 only for writing, whereas the error message talks about
reading from unit 1.

the crucial statement is

read(unit=2,fmt='(2g25.8e3)') x1(j),set1(j)

Maybe, but I would not bet on that. As Klaus pointed out the number of interations in the first loop is not defined. By chance the OP apparently got away with that on the first systems he used.

We don't know which value nmax1 has, so maybe he is trying to read one more element than he has written????

I anyhow don't quite understand why he first writes the values to a file (in a not well defined format ("format real as decimal or exponential" )) only to read it back in a later stage by the same program. To me it looks as if there are a few things that are not well defined, which is not always a good thing in programming...

Matthias


albeit the error message talks about unit 1 in the OP (but I guess he
changed the unit numbers in the code snippet).

The format '(2g25.8e3)' is obviously triggering the error message I would
assume.  It could be a matter of the math libs used or also the fortran
runtime library may have changed in that point. Have you (OP) looked at
the intermediate data file and compared it under the different
platforms?

--
Chris Christoph P. U. Kukulies kukulies (at) rwth-aachen.de

Reply via email to