Common block usage in Fortran

Posted by Crystal on Stack Overflow See other posts from Stack Overflow or by Crystal
Published on 2010-06-14T22:39:40Z Indexed on 2010/06/14 22:42 UTC
Read the original article Hit count: 150

Filed under:

I'm new to Fortran and just doing some simple things for work. And as a new programmer in general, not sure exactly how this works, so excuse me if my explanation or notation is not the best. At the top of the .F file there are common declarations. The person explaining it to me said think of it like a struct in C, and that they are global. Also in that same .F file, they have it declared with what type. So it's something like:

COMMON SOMEVAR

INTEGER*2 SOMEVAR

And then when I actually see it being used in some other file, they declare local variables, (e.g. SOMEVAR_LOCAL) and depending on the condition, they set SOMEVAR_LOCAL = 1 or 0.

Then there is another conditional later down the line that will say something like

IF (SOMEVAR_LOCAL. eq. 1) 
SOMEVAR(PARAM) = 1;

(Again I apologize if this is not proper Fortran, but I don't have access to the code right now). So it seems to me that there is a "struct" like variable called SOMEVAR that is of some length (2 bytes of data?), then there is a local variable that is used as a flag so that later down the line, the global struct SOMEVAR can be set to that value. But because there is (PARAM), it's like an array for that particular instance? Thanks. Sorry for my bad explanation, but hopefully you will understand what I am asking.

© Stack Overflow or respective owner

Related posts about fortran