[Info-vax] Fortran

Simon Clubley clubley at remove_me.eisner.decus.org-Earth.UFP
Wed Dec 5 13:56:28 EST 2018


On 2018-12-05, Scott Dorsey <kludge at panix.com> wrote:
> Simon Clubley  <clubley at remove_me.eisner.decus.org-Earth.UFP> wrote:
>>On 2018-12-05, Bill Gunshannon <bill.gunshannon at gmail.com> wrote:
>>>
>>> The only problem I have ever seen with COMMON BLOCKS was inconsistent
>>> definitions.  :-)
>>
>>And _that_ is _exactly_ the point. In any modern language, the
>>common block would be defined _once_ as a data type and then
>>multiple instances of that data type used as required.
>
> But in Fortran someone modifies the common block and recompiles all the
> routines that they think uses the common block and then relinks, but 
> unbeknownst to him there's an .OBJ file hidden in some subdirectory
> somewhere which was compiled with the old common block definition.
> And now we have a problem which very intermittently pops up in a seemingly 
> unrelated piece of code using a variable that isn't even in the common block 
> (but is located in memory right after the common block).  Six months of
> DEBUG hell later...
>

What happens if you use a module instead of a common definition ?

Does that solve this problem in Fortran or do Fortran compilers
allow you to link .obj files which have different versions of the
same module definition ?

This is exactly why we have Makefiles BTW...

>>Fortunately, there are language enhancements which also help tackle
>>this problem in modern Fortran.
>
> Didn't Knuth say that global variables should be banned?

If so, he's not the only one who thinks that...

Simon.

-- 
Simon Clubley, clubley at remove_me.eisner.decus.org-Earth.UFP
Microsoft: Bringing you 1980s technology to a 21st century world



More information about the Info-vax mailing list