[Info-vax] Fortran

Scott Dorsey kludge at panix.com
Wed Dec 5 16:00:23 EST 2018


Simon Clubley  <clubley at remove_me.eisner.decus.org-Earth.UFP> wrote:
>On 2018-12-05, Scott Dorsey <kludge at panix.com> wrote:
>> 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 ?

Same problem.  These days it's normal practice to put the common block
in a file and then INCLUDE it as needed.  This means every routine always
has the same common block definitions.  This dramatically reduces the number
of things that can go wrong, but unfortunately the case above is one of the
big ones still left.

>This is exactly why we have Makefiles BTW...

Indeed.
--scott
-- 
"C'est un Nagra. C'est suisse, et tres, tres precis."



More information about the Info-vax mailing list