[J3] Is BIND (C [ , NAME = scalar-default-char-constant-expr ]) where scalar-default-char-constant-expr has zero length legal?
Bill Long
longb at cray.com
Tue Jan 8 18:02:28 EST 2019
> On Jan 8, 2019, at 2:20 PM, Daniel C Chen via J3 <j3 at mailman.j3-fortran.org> wrote:
>
> Hi Bill and Vipul,
>
> It is down to if "subroutine foo() bind(c, name='')" should be treated as:
> 1. subroutine foo() bind(c), or
> 2. subroutine foo()
3) Neither.
Option 1 says that there is a binding label with the value ‘foo’.
Option 2 says no binding label and no BIND(C) semantics.
Option 3 is for no binding label, but with the BIND(C) semantics. That is what corresponds to specifying bind(c,name=s) where s is a character variable with zero length of all blank characters.
>
> BIND attribute is part of the characteristic of a procedure, so option 1 and options 2 are significantly different.
Correct.
>
> It seems option 1 is preferred, and I think it makes more sense too. The problem is I couldn't find any wording in the standard that makes it clear.
18.10.2 para 2.
Cheers,
Bill
>
> Thanks,
>
> Daniel
>
> XL Fortran Development, Fortran Standard Representative
> IBM Toronto Software Lab
> Phone: 905-413-3056
> Tie: 969-3056
> Email: cdchen at ca.ibm.com
> http://www.ibm.com/software/awdtools/fortran/xlfortran
>
> <graycol.gif>Vipul Parekh via J3 ---01/08/2019 03:01:48 PM---On Tue, Jan 8, 2019 at 11:06 AM Daniel C Chen via J3 <j3 at mailman.j3-fortran.org> wrote:
>
> From: Vipul Parekh via J3 <j3 at mailman.j3-fortran.org>
> To: General J3 interest list <j3 at mailman.j3-fortran.org>
> Cc: Vipul Parekh <parekhvs at gmail.com>
> Date: 01/08/2019 03:01 PM
> Subject: Re: [J3] Is BIND (C [ , NAME = scalar-default-char-constant-expr ]) where scalar-default-char-constant-expr has zero length legal?
> Sent by: "J3" <j3-bounces at mailman.j3-fortran.org>
>
>
>
>
> On Tue, Jan 8, 2019 at 11:06 AM Daniel C Chen via J3
> <j3 at mailman.j3-fortran.org> wrote:
> >
> > .. the standard doesn't specify what if the scalar-default-char-constant-exprhas zero length.
> >
> > Question: Should it be treated
> > 1. as if the NAME specified is not specified or
> > 2. the compiler should ignore the BIND attribute all together?
> >
>
> Hi Daniel,
>
> You must have seen Jon's and Bill's responses. Just for your
> reference, here's a (related?) thread from comp,lang.fortran on NAME
> specifier with BIND attribute:
> https://groups.google.com/d/msg/comp.lang.fortran/x3hMN4chYtc/ewskOS5oDAAJ
>
>
> On Tue, Jan 8, 2019 at 11:31 AM Steidel, Jon L via J3
> <j3 at mailman.j3-fortran.org> wrote:
> > ..
> > Both compilers compile without error or warning, and fail in the link/load step with an undefined reference to “foo” or “foo_”. So it looks like the Fortran name is used when NAME= is a zero length string.
> > ..
>
> Hi Jon,
>
> Interestingly and (dare I say!) correctly and thankfully, your example
> compiled using Intel Fortran can be linked with the object created by
> that same compiler toward this code on Windows x64 platform
>
> subroutine foo( arg ) bind(C, name="foo")
> real arg
> print *, "foo: arg = ", arg
> end subroutine
>
> and executed to produce the following output:
>
> foo: arg = 1.000000
>
> Regards,
> Vipul
>
>
>
>
Bill Long longb at cray.com
Principal Engineer, Fortran Technical Support & voice: 651-605-9024
Bioinformatics Software Development fax: 651-605-9143
Cray Inc./ 2131 Lindau Lane/ Suite 1000/ Bloomington, MN 55425
More information about the J3
mailing list