[Info-vax] VMS Software Q1 '23 Update

Arne Vajhøj arne at vajhoej.dk
Wed Jan 25 18:50:16 EST 2023


On 1/25/2023 5:55 PM, John Reagan wrote:
> G2L recurses down the symbol table and converts the static variables in each block as it finds
> them.  The difference is that GEM frontends can record the desired offset into the PSECT in
> any order.  We sort by offset in each block, but we need to hoist all the static variables out in
> another pass, sort them, and do them all at the module level.  PSECTs are created by the linker.
> They exist outside the control of the compiler.
> 
> Here's a nasty Fortran program where each subroutine initializes and reinitializes parts of the
> same common block in a particular order.
> 
>          subroutine print_common
>          common /mypsect/ i1,i2
>          integer*4 :: i1,i2
>          write (*,10) i1,i2
> 10      format (' ',Z8,' ',Z8)
>          return
>          end
> 
>          subroutine update_longwords
>          common /mypsect/ i1,i2
> c start with putting hex AAAAAAAA into both longwords
>          integer*4 :: i1='AAAAAAAA'X,i2='AAAAAAAA'X
>          return
>          end
> 
>          subroutine update_words
> c and update bottom words with BBBB
>          common /mypsect/ w1,w2,w3,w4
>          integer*2 :: w1,w2='BBBB'X,w3,w4='BBBB'X
>          return
>          end
> 
>          subroutine update_bytes
> c and update bottom bytes with CC
>          common /mypsect/ b1,b2,b3,b4,b5,b6,b7,b8
>          integer*1 :: b1,b2,b3,b4='CC'X,b5,b6,b7,b8='CC'X
>          return
>          end
> 
>          program main
> c by now, the two longwords in the common should be
> c CCBBAAAA CCBBAAAA
>          call print_common
>          end

That is horrible code IMHO.

Initializing the same common block in multiple subroutines
is not something I would ever do.

I would expect either an error or undefined result due to
order of processing being undefined.

But then I don't know what the Fortran standard and the
VMS Fortran documentation says on the topic.

Someone is actually using such constructs?

Arne




More information about the Info-vax mailing list