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
|