(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