[comp.lang.fortran] COMMON

cudat@warwick.ac.uk (J M Hicks) (08/15/88)

In article <271@quintus.UUCP> ok@quintus.UUCP (Richard A. O'Keefe) writes:
>Trivia point:  in Fortran 66 this applied to COMMON blocks as well.
>...
>...  So, for example, you
>could arrange overlays of COMMON blocks quite legally, though a
>compiler was not required to support this.  Does anyone know of any
>Fortran compiler which _didn't_ allocate COMMON blocks statically?

I have used two Fortran IV compilers that allowed COMMON blocks not to be
in the root of the overlay tree: one was on an IBM 370, the other on
a PDP-11/70 under IAS (now RSX11-D, I think).  Whether such a feature was
of any use is another matter...
--
J. M. Hicks (a.k.a. Hilary),
Computing Services, Warwick University, Coventry, England. CV4 7AL
On JANET:       cudat@UK.AC.WARWICK.CU (in the U.K.)
From BITNET:    cudat@CU.WARWICK.AC.UK
From ARPAnet: try  cudat%cu.warwick.ac.uk@cunyvm.cuny.edu   (untested)
On Usenet:      ...!ihnp4!mcvax!ukc!warwick!cudat
                                It helps if you spell "cudat" in lower case.

mcdonald@uxe.cso.uiuc.edu (08/17/88)

>...
>...  So, for example, you
>could arrange overlays of COMMON blocks quite legally, though a
>compiler was not required to support this.  Does anyone know of any
>Fortran compiler which _didn't_ allocate COMMON blocks statically?

Yes. Absoft Fortran for the Mac, marketed by Microsoft. Not only
are commons dynamic, this compiler has no concept of static initialized
data! That is, every data item that is initialized, whether in common
or not, is allocated on a heap at run time and then initialized by
copying in the data, word by word or even byte by byte, from data
stored as immediate operands in the code segment !!!!!!! 

A statement such as
         character*1 a
         data a/'a'/

generates 7 bytes of code! If you initialize, say, 1000 character *1
entities you get 7000 bytes of code!   

Doug McDonald