[Info-vax] Userland programming languages on VMS.

Arne Vajhøj arne at vajhoej.dk
Fri Jan 28 19:28:04 EST 2022


On 1/28/2022 6:38 PM, Bill Gunshannon wrote:
> On 1/28/22 16:38, Arne Vajhøj wrote:
>> On 1/28/2022 3:44 PM, Bill Gunshannon wrote:
>>> On 1/28/22 14:46, Arne Vajhøj wrote:
>>>> On 1/28/2022 12:37 PM, John Reagan wrote:
>>>>> On Friday, January 28, 2022 at 8:51:57 AM UTC-5, Arne Vajhøj wrote:
>>>>>> On 1/28/2022 4:06 AM, cao... at pitbulluk.org wrote:
>>>>>>> On Friday, January 28, 2022 at 6:29:10 AM UTC, Steven Schweda wrote:
>>>>>>>>> Which I do not consider exotic.
>>>>>>>> Sure, fine, but look at the results from the current blend of (what
>>>>>>>> are, I assume) defaults. Whether or not better results are so 
>>>>>>>> "easy",
>>>>>>>> the existing situation (mess) is the existing situation (mess).
>>>>>>>>
>>>>>>>> As I said, "unrealistic". That was an inference, not a postulate.
>>>>>>>
>>>>>>> Aren't C/C++ the only VMS languages capable of using the full 64 
>>>>>>> bit address space?
>>>>>>> Perhaps some others are (partially) capable but it doesn't look 
>>>>>>> at all convenient.
>>>>>>> Pascal has IADDRESS64 in addition to IADDRESS but why bother to 
>>>>>>> call a _64 system service when you can't really do much else with 
>>>>>>> it?
>>>>>> I believe Fortran supports usage of P2 space.
>>>>>>
>>>>> Fortran lets you allocate COMMON in P2 and it has the CDEC$ 
>>>>> POINTER64 (or however it is spelled)
>>>>> attribute.   You can have "top level" 64-bit pointers but you can't 
>>>>> get 64-bit pointers as fields in a structure.
>>>>
>>>> Real Fortran programmer does not use pointers.
>>>>
>>>> :-)
>>>>
>>>> Example with common:
>>>>
>>>> $ type f64.for
>>>>        program f64
>>>>        implicit none
>>>>        real*8 x(10),y(10)
>>>>        common /cx/x
>>>>        !DEC$ATTRIBUTES ADDRESS64::cy
>>>>        common /cy/y
>>>>        write(*,'(1x,z16.16)') %loc(x)
>>>>        write(*,'(1x,z16.16)') %loc(y)
>>>>        end
>>>> $ for f64
>>>> $ link f64
>>>> $ run f64
>>>> 0000000000040000
>>>> 0000000080000000
>>>>
>>>
>>> I ran that thru every FORTRAN compiler I had.  Sorry, it's not
>>> FORTRAN.
>>
>> It should work with Fortran on VMS Alpha and VMS I64.
>>
>> Above test is on VMS Alpha.
> 
> And which Fortran standard includes "!DEC$ATTRIBUTES ADDRESS64::cy"?

Anything newer than 90 or none depending on perspective.

It is a comment in standard Fortran 90+.

But only VMS Fortran Alpha, I64 and I assume x86-64 does something
based on it.

On the other hand these are the only platforms moving a common block
from P0 space to P2 space are relevant.

So it is actually pretty cool - does what it should on the platforms
where it is needed and treated as harmless comment on other
platforms.

And it does compile with GFortran. Although with a warning
about %loc being a legacy extension. One can use loc instead
of %loc.

Arne









More information about the Info-vax mailing list