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

  • Context: Fortran 
  • Thread starter Thread starter bobbo7410
  • Start date Start date
  • Tags Tags
    Error Fortran Human
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
6 replies · 3K views
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:
Physics 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.