[Info-vax] VMS Software Q1 '23 Update
    Arne Vajhøj 
    arne at vajhoej.dk
       
    Wed Jan 25 21:28:47 EST 2023
    
    
  
On 1/25/2023 9:24 PM, Arne Vajhøj wrote:
> On 1/25/2023 8:36 PM, Dave Froble wrote:
>> Perhaps some would not want variants, but I for one have used them 
>> many times.
>>
>>          Map (D) Long D1%
>>          Map (D) String D1$=4
>>
>> Now in a MAP statement, whiich is rather similar to a COMMON block, 
>> multiple definitions of the MAP statement allows for a similar 
>> redefinition of the same memory.  In the above, a longword value is 
>> stored in 4 bytes of memory.  The redefinition of the MAP statement 
>> allows the same memory to be labeled as a string or a longword.
>>
>> It's been useful to me in the past.
> 
> I am not arguing against this.
> 
> But in Fortran this should not be done using common blocks but
> via equivalence.
> 
>        integer*4 iv
>        character*4 sv
>        equivalence (iv,sv)
> 
> It has local scope and is readable.
> 
> And if necessary it can be combined with a common block.
I am in the lucky situation to have an example.
https://www.vajhoej.dk/arne/articles/vmsipc.html#wrtshrimg_link
Fortran code:
       byte mem(memsiz)
       common /msgpsect/mem
       character*100 msg(maxmsgs)
       equivalence (mem,msg)
Basic code:
map (msgpsect) byte mem(memsiz1)
map (msgpsect) string msg(maxmsgs1) = maxmsgsiz
Arne
    
    
More information about the Info-vax
mailing list