Fortran Fortran issue. HEEEEELP? Not a human error, somethings buggy ?

AI Thread Summary
The discussion revolves around troubleshooting a Fortran programming issue involving errors related to module usage and random number generation. The user reports encountering strange errors despite following examples correctly. Key points include the necessity of linking object files when compiling separately, as highlighted by multiple contributors. One suggested command sequence for compiling and linking is provided, which involves creating object files for both the module and the main program. Additionally, the user experiences an error with the `random_number` function, initially believing it to be unrelated to the module issue. However, it is clarified that the error arises from passing an integer argument instead of a real argument. The importance of calling `random_seed` before using `random_number` is discussed, but it's noted that omitting it does not prevent compilation; it merely results in the same output each time the program runs. The conversation emphasizes the need for proper linking and correct data types in Fortran programming.
bobbo7410
Messages
36
Reaction score
0
Fortran issue. HEEEEELP? Not a human error, somethings buggy...?

I have no clue why this is acting like this, I'm getting a strange error. I don't believe this is a human error, I've followed the examples perfectly.

The picture shows it all. I ran it once trying to use a random function and again trying to use a module, both a similar error.

http://img27.imageshack.us/img27/7163/37186177.png

(also, the teacher uses a windows compiler(g95.org), I use a unix one.)
 
Last edited by a moderator:
Technology news on Phys.org


It looks like you have compiled the two files separately, so Randy does not see TestMod and vice versa. Unless you compile and place the object of GetX in an established library, you will need to link them together, usually simply stacking one after in the same file.
Hope that sovles your problem.
 


Well that's the thing, I should be able to compile separately, as the Randy calls to use TestMod, which is in the same directory.

Moreover, when I take out the module in general, Random_Number(x) seems to give a very similar error, and I knowww that should work fine.

THANK YOU SO MUCH THUS FAR!
 


I not familiar with this particular tool, but can't you set the project or batch file to simply compile two source files, then link the two created object files along with any common libraries needed?
 


I believe the errors with the random_number case and the module case are from two different situations.

As Jeff Reid said, you need to link the object files. So if you do want to compile them separately (instead of in one line), you can do something like:

Code:
g95 testmod.f95 -c
g95 randy.f95 -c
g95 -o po testmod.o randy.o

which creates the executable po.exe .

The error with the random_number subroutine appears to be because you gave it an integer argument (r1), but it needs a real argument.
 


THANK YOU!

You're right I don't know what I was thinking, I have to link the two together.

And the random_number issue was because I didn't call "random_seed" before it. Unrelated.

Thanks again for all the help!
 


bobbo7410 said:
THANK YOU!

You're right I don't know what I was thinking, I have to link the two together.

And the random_number issue was because I didn't call "random_seed" before it. Unrelated.

Thanks again for all the help!

Perhaps it's not important, but I don't think the issue with random_number was that, because you are not required to call random_seed in your program. For example, you can have:

Code:
program test
implicit none
real::r1
call random_number(r1)
print*,r1
end program test

and it will compile and run fine (it will just give the same number every time you run the program). Inserting the line "call random_seed()" at the appropriate place will give a different number every time.

However, if r1 is declared as integer (as in your sample program), then it will not compile with g95.
 

Similar threads

Replies
9
Views
2K
Replies
3
Views
3K
Replies
9
Views
5K
Replies
6
Views
3K
Replies
3
Views
8K
Replies
1
Views
3K
Replies
4
Views
16K
Back
Top