(j3.2006) Binding label and bind(c) procedure name scopes

Van Snyder van.snyder
Tue May 26 04:14:08 EDT 2015


Are binding labels for dummy procedures relevant?

On Tue, 2015-05-26 at 15:23 +0900, Malcolm Cohen wrote:
> <<<
> Case 1:
> 
> Interface
>   Subroutine sub() Bind(C, name = "csub")
>   End
>   Subroutine csub() Bind(C, name = "sub")
>   End
> End interface
> End
> 
> 
> Is this code standard conforming? It seems fine to me, but the standard seems 
> disallow it as 16.3.1p2 [474:13-18]
> >>>
> 
> I do not see anything wrong here, because the global identifier that is the 
> binding label is not used in the scope.  The global identifiers that are binding 
> labels being csub and sub.  The character string literals are character string 
> literals, they are not global identifiers.  Within the scope only the local 
> identifiers sub and csub are used.  So no problem.
> 
> <<<
> Case 2:
> 
> Module m
> Contains
>   Subroutine sub1()
>     Interface
>       Subroutine s() Bind(C, name="csub")
>       End
>     End interface
>   End
>   Subroutine sub2()
>     Interface
>       Subroutine s() Bind(C, name="sub")
>       End
>     End interface
>   End
> End module
> 
> 
> Is this code legal? Again, it seems fine to me, but it seems disallowed by the 
> standard at [474:26]
> "An entity of the program shall not be identified by more than one binding 
> label."
> >>>
> 
> Yes, this is invalid and rejected by some existing compilers.  This has been 
> discussed in the past.
> 
> If we want to allow this we are going to have to reword 16.2p1 much much more 
> carefully; for a start, so that external procedures with binding labels don't 
> appear twice in the list, to avoid confusion.  I am sympathetic to such a 
> request.
> 
> <<<
> Case 3:
> 
> Module m
> Contains
>   Subroutine sub1()
>     Interface
>       Subroutine s() Bind(C, name="sub")
>       End
>     End interface
>   End
>   Subroutine sub2()
>     Interface
>       Subroutine s() Bind(C, name="sub")
>       End
>     End interface
>   End
> End module
> 
> 
> A slighly modification from Case 2 that the binding labels are also the same, 
> and again, Is this code legal?
> >>>
> 
> I don't see why not.  The external procedure S is described by two interface 
> blocks, both of which are consistent, including the binding label parts.
> 
> Cheers,





More information about the J3 mailing list