[J3] Standard conformance of parameterized derived type usage
Van Snyder
van.snyder at sbcglobal.net
Tue Nov 10 21:33:26 EST 2020
On Tue, 2020-11-10 at 18:03 -0800, Van Snyder via J3 wrote:
> I can see the need for the C762 if initialization provides values.
>
>
> For pointer initialization, all the processor does is fill a
> descriptor,
> the extents of whose internal pieces do not depend upon lengths or
> extents of the component.
> That's the same as what a processor does for an allocatable
> component.
>
> I couldn't find a constraint that requires a length parameter of an
> allocatable component to be a
> colon or a constant expression, so I assume processors can fill its
> descriptors for allocatable
> components that have lengths that depend upon length parameters.
>
> I couldn't find a constraint that the bounds in <initial-data-target>
> in pointer component initialization are required to be constants, so
> I
> assume processors can fill their descriptors in that case.
Actually, I just found it at C765. I was looking under <designator>.
> The constraint appears to be unhelpful in the case of pointer
> components,
> especially if initialized to NULL().
>
>
> Is it really necessary for pointers? Even if not initialized to
> NULL()?
> =====================================================================
> ====
> No, it is not conforming, it violates a constraint:
>
> C762 (R737) If component-initialization appears, every type parameter
> and
> array bound of the component shall be a colon or constant expression.
>
> Cheers,
> --
> ..............Malcolm Cohen, NAG Oxford/Tokyo.
>
> -----Original Message-----
> From: J3 <j3-bounces at mailman.j3-fortran.org> On Behalf Of William
> Clodius
> via J3
> Sent: Wednesday, November 11, 2020 9:36 AM
> To: General J3 interest list <j3 at mailman.j3-fortran.org>
> Cc: William Clodius <w.clodius at icloud.com>
> Subject: [J3] Standard conformance of parameterized derived type
> usage
>
> Is the following program standard conforming?
>
> PROGRAM TEST_LEN_PARAMETER
> IMPLICIT NONE
> TYPE :: T(N)
> iNTEGER, LEN :: N
> TYPE(T(N+1)), POINTER :: P => NULL()
> END TYPE T
> TYPE(T(0)) :: A
> ALLOCATE(A % P)
> ALLOCATE(A % P % P)
> WRITE(*,'(A, I0)') 'A % N = ', A % N
> WRITE(*,'(A, I0)') 'A % P % N = ', A % P % N
> WRITE(*,'(A, I0)') 'A % P % P % N = ', A % P % P % N
> END PROGRAM TEST_LEN_PARAMETER
>
> If so what should be the output?
>
> If so are there any processors that successfully process the code?
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.j3-fortran.org/pipermail/j3/attachments/20201110/4dbc6e89/attachment-0001.htm>
More information about the J3
mailing list