Fortran77 end-of-file error reading formatted input

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
5 replies · 7K views
gcc2012
Messages
3
Reaction score
0
Hi,

I am new to the forum, apologies if I break any rule posting a new thread. I could not find the answer in similar threads came up after searching the forum.

I want to read a formatted file of six column data. Reading works OK, but I want to put it into a do loop with the repeat as many as number of lines(rows) in the file and stops when reaching the end without complaining about the 'end of file'. I find in various sites that there is END parameter that can be used in READ, WRITE statements, e.g.,

READ (UNIT=15, FMT=2000, END=999)
and '999' at the end of file, but this does not work..

I am not so much into Fortran, so I do not understand the explanations of 'sequential', 'list directed', etc. exceptions to using END. And I do not know any other way of handling this.
Any help would be great!

gcc2012
 
on Phys.org
The 999 is a statement label in your program, not the data on the last line of the input file.

Do something like
Code:
do i = 1,n
  READ (UNIT=15, FMT=2000, END=999) a(i),b(i),c(i),d(i),e(i),f(i)
enddo
999 npoints = i - 1
where "npoints" will be the number of lines that you read from the file (or it will be equal to n, if the file contained more than n lines of data)
 
Thanks AlephZero, I tried that way and it gives syntax error.
How would you read the data file organized as follows:

- sequential formatted
- six columns of real numbers
- number of rows are not always known

My immediate goal is to get the data read and each column would form an individual array. It is easy if one knows the number of lines. But, I did not see any elegant way of getting the number of rows and using it for do loops later, or getting the data read until end-of-file and code continues to run without 'end of file' error.

any suggestion?
 
gcc2012 said:
I tried that way and it gives syntax error.
If you post the message, we might be able to help. If you don't, we can't.

How would you read the data file organized as follows:

- sequential formatted
- six columns of real numbers
- number of rows are not always known
I would do it the way I already posted.
 
Thanks AlephZero.

I sorted out the syntax error, it was due to the variable type declaration.

But, now I have another problem. It does not execute the do loop at all. I print out 'npoints' and the value is 0.

What would be wrong?

No error message in this case.

gcc2012
 
You need to post the program.