(j3.2006) C-Interop question about establishing the bounds
Daniel C Chen
cdchen
Fri Feb 6 15:36:52 EST 2015
Hello,
Please consider the following code:
Program main
interface
subroutine sub(c_arg) bind(c)
integer n !! Local auto var
character(*) :: c_arg(n,5)
end subroutine
end interface
character(3) :: ccc(10)
call sub(ccc)
end program
Question:
1. Is the program standard conforming?
2. If it is legal, what would be the rank of the effective argument that is
passed to sub?
3. If it is legal, what would be the ubound of the effecive argument?
Discussion:
I found the following statement [99:5-9, 5.3.8.2p2].
"An explicit-shape array that is a named local variable of
a subprogram or BLOCK construct may have bounds that are not
constant expressions. The bounds, and hence shape, are
determined on entry to a procedure defined by the subprogram,
or on execution of the BLOCK statement, by evaluating
the bounds? expressions."
Does it mean in order to determine the bounds of c_arg on entry to sub,
'n' must be a dummy argument itself since 'n' may not be defined at the
Entry to sub if it is automatic variable?
How does it apply to the BLOCK statement?
Thanks,
Daniel
XL Fortran Development - 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.j3-fortran.org/pipermail/j3/attachments/20150206/a5cf8eaa/attachment.html
More information about the J3
mailing list