[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