(j3.2006) (SC22WG5.4636) Issue with C1255 in Interop TS

Bill Long longb
Tue Mar 13 16:36:29 EDT 2012

On 3/13/12 12:06 PM, John Reid wrote:
> N.M. Maclaren wrote:
>> On Mar 13 2012, Malcolm Cohen wrote:
>>>> It appears to me to be a good idea to enforce interoperable
>>>> type and type parameters for non-assumed-type dummy entities.
>>> Absolutely.
>> The more I think about it, the more I agree. I think, however, that
>> this is a reason NOT to constrain assumed-type more than strictly
>> necessary.

I also agree (if not already obvious from earlier messages).

> We seem to be reaching consensus that along with my suggested change:
> Page 10, C1255, line 2, change "or" to
> ", a variable that has the ALLOCATABLE or POINTER attribute, a variable
> of assumed shape, a variable of assumed type, a variable of assumed
> character length, or".


Separately, I worry that the resulting sentence has the "does not have 
both the OPTIONAL and VALUE attributes" separated from the insertion far 
enough that it is not clear whether it applies.  Maybe if it were reversed:

"C1255 (R1229) If <proc-language-binding-spec> is specified for a 
procedure, each dummy argument shall be an interoperable procedure 
(15.3.7) or a variable that does not have both the OPTIONAL and VALUE 
attributes and is interoperable (15.3.5, 15.3.6),  assumed shape, 
assumed rank, assumed type, of assumed character length, or has the 

> we need to add these constraints:
> C524a A coarray shall not be a dummy argument of a procedure that
> has a <proc-language-binding-spec>.
> C1255a A variable that not of assumed type and is a dummy argument of a
> procedure that has a <proc-language-binding-spec> shall be of
> interoperable type.

Right - those patch up holes created by the new C1255.

In a different email, Malcolm pointed out (in arguing for modifying 
C1255 instead of 15.3.5):

"These are not interoperable in the old sense of having the same 
representation, but in the new sense of having an automatic conversion 
between the Fortran entity and the C entity. "

This classification makes sense to me. My assumption is that 15.3.5/6 is 
intended to specify the "old sense".  If so, I think that the 15.3.5 
text might still need modification because of all the new capabilities 
we added.  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 expression."

Among things that would appear to qualify as "interoperable" variables 
according to this:

1)  an assumed-type dummy argument associated with an interoperable 
effective argument.

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

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.


> Cheers,
> John.
> _______________________________________________
> J3 mailing list
> J3 at j3-fortran.org
> http://j3-fortran.org/mailman/listinfo/j3

Bill Long                                           longb at cray.com
Fortran Technical Support    &                 voice: 651-605-9024
Bioinformatics Software Development            fax:   651-605-9142
Cray Inc./Cray Plaza, Suite 210/380 Jackson St./St. Paul, MN 55101

More information about the J3 mailing list