Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Fortran77 end-of-file error reading formatted input

  1. Feb 10, 2012 #1
    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
     
  2. jcsd
  3. Feb 10, 2012 #2

    AlephZero

    User Avatar
    Science Advisor
    Homework Helper

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

    Do something like
    Code (Text):

    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)
     
  4. Feb 10, 2012 #3
    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?
     
  5. Feb 10, 2012 #4

    AlephZero

    User Avatar
    Science Advisor
    Homework Helper

    If you post the message, we might be able to help. If you don't, we can't.

    I would do it the way I already posted.
     
  6. Feb 12, 2012 #5
    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
     
  7. Mar 15, 2012 #6
    You need to post the program.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Fortran77 end-of-file error reading formatted input
Loading...