[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