I have a .txt file containing 1 column and 101 rows. For example the first 4 rows are as follows:
I want to read the values in and store them for use in calculations.
How would I tackle this?
This is a very basic question. Is it a homework assignment?
Any textbook on Fortran ought to give you the clues for solving this "problem". But here are some clues: use an array and the open and read statements
Ah, that explains it :). Well, certainly there is. There is a wide variety of possibilities actually.
Since you are doing an introductory course, try the following (without giving you a ready-made solution by the way):
write(*,*) mydata(10) ! Print the tenth element
This is a straightforward way to read the data, but it assumes:
If these conditions are not met, you will get a run-time error.
If you need to make your program more robust or more flexible, there is more work involved, but the above sketch should get you going.
My code is as follows:
integer :: err
character(256) :: err_msg
real, dimension(101) :: flux
open(10, file='flux.txt', status='old', iostat=err, iomsg=err_msg)
if(err /= 0) then
write (*,*) 'Error ', trim(err_msg)
but this error message is showing:
Error: Syntax error in PRINT statement at (1)
What am I doing wrong?
Can you please share here just what kind on instructional material (textbook(s) and/or lecture notes and/or blogs or videos?) do you have for this introductory course in Fortran? Have you gone through such material with a thoroughness the instructor would expect of anyone taking the course? Because you're asking the most basic questions. The material you have should show the following is invalid:
print (*,*) !<-- Invalid syntax
Re: each statements in Fortran (or any other learning for that matter), why not adopt the RTFM approach? e.g., consult the information available at your fingertips such as Intel documentation online. Here it is for PRINT statement:
In case you find your instructional material inadequate, you can start with some free stuff online to get you going immediately like the following from UNLV:
Or, you can look into getting your hands on a formal textbook such as this one:
Look at your read statement from your first attempt
and compare it to the read statement from your second attempt.
What is missing?
And more important, what is the relationship between the read and what is missing?
Due to Covid everything has been online so the teaching hasn't been great. I have been given 5 PowerPoints each with about 10 slides on so haven't been given much information to go off. I haven't been given access to a manual so I'm sure you can see that a RTFM approach could be quite difficult without a manual.
The manual you have given me here seems excellent though so thank you very much for that it will be a great help. I will go through this today and hopefully that will solve the problems I am having.
As part of your studies, note if you're interested in computing generally and also the upcoming fields in "data sciences" and numerical programming, you can get a book bundle for $12 that includes a good book on "modern Fortran" as well: https://www.humblebundle.com/books/math-for-programmers-manning-publications-books
In terms of readily accessible resources online, do keep in mind the Fortran Wiki site:
Ok thanks for this I will make sure to check them out.
The "Introduction to Programming using Fortran 95/2003/2008" pdf you sent me has been brilliant so far I have learnt more from this in the past hour or so than I have across the entire course I am on so thanks a lot for that I would highly recommend it for beginners.
You can download the Intel Fortran manuals - search for the PDF versions, there are simple examples available to anyone with each reference example in the manual. These help more than most textbooks.
You have hit the right place, but to ensure you learn, these guys will make you work for it, but they mean well.
I learnt lisp alone from the reference manual -- I can remember one line took a week to debug.
You are in world class company - so good luck --