(j3.2006) nonstandard specifics of standard intrinsic generics

Bill Long longb
Fri Apr 25 19:53:49 EDT 2008



Robert Corbett wrote:
> Malcolm Cohen wrote:
>
>   
>> On Thu, 17 Apr 2008 18:16:21 +0900, Robert Corbett <Robert.Corbett at sun.com> wrote:
>>
>>     
>>> I stated that the implementation provides a nonstandard specific
>>> interface for SQRT that takes an INTEGER argument.  That interface
>>> conflicts with the specific interface of the generic interface.
>>> The characteristics of the nonstandard intrinsic procedure and the
>>> procedure in the interface do not differ as specified in 16.2.3.
>>> Therefore, constraint C547 is violated.
>>>       
>> No.  If the user provides a specific that would override some
>> "specific" of an intrinsic, that intrinsic specific is not part
>> of the generic identifier (it is inaccessible by that generic name).
>>     
>
> I assume you are using the word "inaccessible" is a different sense
> than the sense of its use in the second sentence of the first
> paragraph of Section 16.2.3 of Fortran 2003.  I assume that the
> sense you intend is that, for the purpose of the conditions set
> out in constraint C547 in Section 5.1.2.8 of Fortran 2003, it is
> as if those "specific intrinsic procedures" do not exist in the
> scoping unit.
>
> If that is the case, is it possible for a program to violate
> constraint C547?  Constraint C547 states
>
>       C547 (R503) (R1216)  If the name of a generic intrinsic
>            procedure is explicitly declared to have the
>            INTRINSIC attribute, and it is also the generic
>            name in one or more generic interfaces (12.3.2.1)
>            accessible in the same scoping unit, the procedures
>            in the interfaces and the specific intrinsic
>            procedures shall all be functions or all be
>            subroutines, and the characteristics of the
>            specific intrinsic procedures and the procedures in
>            the interfaces shall differ as specified in 16.2.3.
>
> For example, based on my understanding of what you wrote, the
> program
>
>        PROGRAM MAIN
>          INTRINSIC SQRT
>          INTERFACE SQRT
>            REAL FUNCTION MY_SQRT(X)
>            END FUNCTION
>          END INTERFACE
>        END
>
> would not violate constraint C547 because the specific interface
> for MY_SQRT in the generic interface would mask the specific
> intrinsic procedure with the same characteristics as MY_SQRT.  If
> the constraint does not apply in that case, I do not see how it
> can ever apply to any code.
>   

How about this one:

program test
 intrinsic sqrt
 interface sqrt
   subroutine my_sqrt(x)
   end subroutine
 end interface
end program


Cheers,
Bill


-- 
Bill Long                                   longb at cray.com
Fortran Technical Support    &              voice: 651-605-9024
Bioinformatics Software Development         fax:   651-605-9142
Cray Inc., 1340 Mendota Heights Rd., Mendota Heights, MN, 55120

            




More information about the J3 mailing list