[J3] Is this standard-conforming?
Van Snyder
van.snyder at jpl.nasa.gov
Thu Jul 26 23:45:56 EDT 2018
On Thu, 2018-07-26 at 16:23 +0000, Bill Long via J3 wrote:
> Hi Damian,
>
> I’m guessing that this program does compile :
>
> program main
> implicit none
>
> type ugg
> integer :: n
> end type ugg
>
> interface
> type(ugg) function foo()
> import ugg
> end function foo
> end interface
>
> end program
>
> Similar to your case, the import of ugg from the host occurs on the
> statement after the one where ugg is used. In the case of a type
> definition like this there is no practical alternative, so compilers
> have been taught to ‘look ahead’ for a type definition.
The standard says this explicitly, for the type declaration. But (I
believe) not for the NAME= value in the BIND declaration. If it doesn't
say so, maybe an interp is needed to get it said explicitly.
> I suspect we intended to allow the case you described, but the
> vendors did not anticipate needing to do a look-ahead for anything
> other that the function type. If Malcolm disagrees about the intent,
> I’m ok with that. I think it boils down to whether the FUNCTION
> statement itself is part of the scoping unit of the function.
>
> Cheers,
> Bill
>
>
> > On Jul 26, 2018, at 5:12 AM, Damian Rouson via J3 <j3 at mailman.j3-fortran.org> wrote:
> >
> > One processor accepts the code below. Three others generate error messages related to the binding label c_name and either report a syntax error or report that the binding label is a variable that does not reduce to a constant expression.
> >
> > Damian
> >
> > program main
> > implicit none
> >
> > character(len=5), parameter :: c_name="c_foo"
> >
> > interface
> > subroutine foo() bind(C,name=c_name)
> > import c_name
> > end subroutine
> > end interface
> >
> > call foo()
> >
> > end program
> >
>
> 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