Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Beginner
26 Views

File corrupted when writing unformatted binary

Hi,

I'm using ifort, and experiencing the file corruption when writing an unformatted binary.

ifort -V prints out "Intel(R) Fortran Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 17.0.4.196 Build 20170411"

Here is simple test code..

program test

real*8 :: array(20000)

array = 0d0

open(11,file='test.bin',form='unformatted')

write(11) 'string'
write(11) array

close(11)

end

 

compiling this code with compiler flag -convert big_endian and executing the program generates 'test.bin' unformatted binary file.

However, this output file seems to be corrupted.

When removing "write(11) 'string'" line in the code, the file is not corrupted.

When I compile the test code with lower version of ifort, the file is not corrupted.

Is it a compiler bug of this version of ifort, or is there any compiler flag I missed?

0 Kudos
2 Replies
Highlighted
Black Belt Retired Employee
26 Views

Define "corrupted".

0 Kudos
Highlighted
Beginner
26 Views

I'm sorry.

I rewrite the test code to generate an error message.

program test

real*8 :: array(20000)
character(len=6) :: str

array = 0d0
str = 'string'

open(11,file='test.bin',form='unformatted')

write(11) str
write(11) array

close(11)

open(11,file='test.bin',form='unformatted')
read(11) str
read(11) array
close(11)

end

Executing the program prints out an error.

"forrtl: severe (67): input statement requires too much data, unit 11"

And, trying to read the 'test.bin' with IDL language prints out "Corrupted f77 unformatted file detected."

Reducing the array size from 20000 to small value like 2000 eliminates the error.

ifort version is 17.0.4.196.

Thanks.

0 Kudos