[Info-vax] Fortran

Bill Gunshannon bill.gunshannon at gmail.com
Wed Dec 5 20:23:30 EST 2018


On 12/5/18 1:29 PM, Scott Dorsey 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...

The scarier part is when you find a program that has been
around for decades with such errors and still works just fine. :-)

Hint: the PL/M compiler

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

And Dijkstra said GOTO's should, too.  How did that work out?

bill





More information about the Info-vax mailing list