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

Retake: Reading an existing file into a fortran code

  1. Dec 25, 2013 #1
    Thank you very much for the reply. I placed the file in the same directory as the program and opened the file before executing and everything was just perfect. But my other problem is that, in my data, there consists of negative numbers. Is there a way to read the positive inputs without the negative ones? I tried adding an IF statement to the code, but still the negative is being read.
    I am attaching the a sample of the code i wrote.
    Thanks very much

    Attached Files:

  2. jcsd
  3. Dec 25, 2013 #2


    User Avatar
    Staff Emeritus
    Science Advisor
    Homework Helper

    It's not clear why you don't want to read negative values from your data file.

    Can you just test the value read to see if it is less than zero and discard it?
  4. Dec 25, 2013 #3


    Staff: Mentor

    OP, here is your code. I don't see the point in attaching a Word document instead of inserting the code directly into the input pane here.
    Where? I don't see that IF statement in your code. It's pretty simple really - each time you read from the file check to see if the number is negative. If so, skip to the next loop iteration.

    Code (Text):
    Program rainfall
    !This program calculates the total monthly rainfall and the average by reading in the values from an opened file.
    !List of variables:
    CHARACTER(len = 20):: filename  !Input file name
    CHARACTER(len = 20)::month      !Month to be read
    INTEGER::n = 0  !Number of input values.
    INTEGER:: ierror  !Status flag of i/o statement
    REAL:: x  !An input data value
    REAL:: sum_x = 0  ! Sum of input values
    REAL:: x_bar = 0  !Average of input samples

    !Prompt the user and get the name of file for input
    WRITE(*,*)'enter the name of the file:'
    READ(*,*) filename

    !Prompt the user for the month
    WRITE(*,*)' enter the month:'
    READ(*,*) month
    !Open the input file
    OPEN (Unit = 3, FILE = filename, STATUS = 'OLD', ACTION = 'READ', IOSTAT = ierror)
     !Check to see if the file opened successfully
    errorcheck: IF (ierror > 0) THEN
     WRITE(*,*) filename
    !file opened successfully. Read input values x from the file
       READ ( 3,*,iostat= ierror)  x
    IF ( ierror /= 0) EXIT
     n = n + 1
    sum_x = sum_x + x         !Calculate sum

    END DO

    !Calculate the mean rainfall
    x_bar = sum_x / real(n)

    !Tell user

    WRITE(*,*)'Number of data points = ',n
    WRITE(*,*)'Monthly total = ', sum_x
    WRITE(*,*)'Monthly average = ', x_bar

    !Close input file
    CLOSE(Unit = 8)

    End if errorcheck

    End program rainfall

Share this great discussion with others via Reddit, Google+, Twitter, or Facebook