On May 3, 2004, at 7:21 PM, Ted Stern wrote:
> On 3 May 2004 at 09:35 PDT, Drew McCormack wrote:
>>
>> Is the following legal fortran 90?
>>
>>
>> module A
>> contains
>> subroutine sub( array )
>> real :: array(10)
>> end subroutine
>> end module
>>
>>
>> program main
>> use A
>> real :: a, b(10), c(10,10)
>> call sub(a)
>> call sub(b)
>> call sub(c)
>> end program
>>
>
> No. Sorry I can't cite chapter and verse for you.
>
> There are ways to get around this for specific compilers (e.g. Cray
> pointers)
> but they should be used with *extreme* caution. In your example, you
> could
> easily step out of bounds with the "call sub(a)" call.
I can see that if I set a(10) in sub, that I will have an out of bounds
problem, but if I tried to set array(1), would the compiler be entitled
to cause problems (according to the standard)? Is the compiler obligued
to make array(1) correspond to a in main, or is it just an error to
pass a scalar for an array with an explicit interface?
(If so, why isn't my compiler flagging this as an error? I know... I
should buy the cray compiler ;-) )
Drew
>
> Ted
> --
> Ted Stern Applications Group
> Cray Inc. office: 206-701-2182
> 411 First Avenue South, Suite 600 cell: 206-383-1049
> Seattle, WA 98104-2860 FAX: 206-701-2500
>
> Frango ut patefaciam -- I break that I may reveal
> (The Paleontological Society motto, equally apropos for debugging)
>
|