(j3.2006) binding labels and global identifiers
Bill Long
longb
Wed Jun 22 17:20:48 EDT 2011
On 6/22/11 4:08 PM, Van Snyder wrote:
>
> On Wed, 2011-06-22 at 12:41 -0700, Bill Long wrote:
>> In any case, this is a candidate for an Interp.
>
> The interp question would have to be of the form "were you guys
> serious?" Or maybe "Wouldn't it be OK to have more global identifiers
> that aren't specified in 16.2p1?"
>
> 16.2p1 is pretty clear:
>
> The global identifier of an external procedure with no binding label
> [that is, with no BIND attribute] is the name of the procedure. It goes
> on to say that a binding label is a global identifier. One might ask
> for clarification whether the name of the procedure that has a binding
> label is also a global identifier, but it's not in the list in 16.2p1,
> so I'd be inclined to say "no" to both questions.
The name of a procedure that has a binding label is explicitly listed in
the list of Local identifiers in 16.3.1. So, solidly, no.
>
> So, in the interface block from a few days ago
>
> interface
> subroutine subr () bind(C,name='subr_')
> ...
> end subroutine subr
> end interface
>
> "subr" is not a global identifier. This was already the subject of an
> interp. If in some other scoping unit one has written
>
> interface
> subroutine subr () bind(C,name='foo_')
> ...
> end subroutine subr
> end interface
This is not the issue. If one has written
subroutine subr()
end subroutine subr
(not an interface block, but an actual subroutine definition), then this
and an interface of the form
interface
subroutine localname() bind(c, name="subr_")
end subroutine localname
end interface
have a collision on a Unix system. This is the case that I was hoping
to see addressed in the interp.
Cheers,
Bill
--
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