(j3.2006) (SC22WG5.4638) [ukfortran] Issue with C1255 in Interop TS

Malcolm Cohen malcolm
Tue Mar 13 19:51:09 EDT 2012

>The current para 1 of 15.3.5 is:
>"A named scalar Fortran variable is interoperable if and only if its type and 
>type parameters are interoperable, it is not a coarray, it has neither the 
>ALLOCATABLE nor the POINTER attribute, and if it is of type character its 
>length is not assumed or declared by an expression that is not a constant 
>Among things that would appear to qualify as "interoperable" variables 
>according to this:
>1)  an assumed-type dummy argument associated with an interoperable effective 

No.  An assumed-type dummy argument has no declared type so cannot satisfy the 
requirements.  (Also see final comments.)

>2) an assumed-shape or assumed-rank dummy argument with type and type 
>parameters that are interoperable.

Assumed-shape dummy arguments are not scalar.

There might be a problem if we think of assumed-rank variables as being scalar. 
Which as it stands I guess we do think of them as being "conditionally" scalar. 

So can we have an elemental procedure with an assumed-rank argument?  Oh dear.

Maybe we should just change the definition of "scalar" to exclude 

>Certainly the assumed-rank and assumed-shape cases come under the "new sense" 
>of interoperable.  Assumed-type is different, but I think still not anticipated 
>by the current text.

It is covered in precisely the same way that CLASS(*) is.  No-one has been 
confused about that, so I see no reason for confusion now.

Remember that unless clear otherwise from the context, "type" means both 
declared and dynamic type.  It might be a harmless clarification to insert 
"declared" into that sentence, but I'd need to think about it more; excluding 
dynamic type parameters from consideration certainly looks potentially 
problematic, whereas leaving it as the default both declared and dynamic is 
definitely ok.

................................Malcolm Cohen, Nihon NAG, Tokyo. 

More information about the J3 mailing list