[J3] type definitions

Kurt W Hirchert kurthirchert at gmail.com
Sat Aug 13 19:38:40 UTC 2022


On 8/10/2022 5:18 PM, Robert Corbett via J3 wrote:
> Is the program
>
>       PROGRAM MAIN
>         TYPE T
>           REAL(KIND=KIND(X)) Y
>         END TYPE T
>       END
>
> standard conformant?
>
> What about the program
>
>       PROGRAM MAIN
>         DOUBLE PRECISION X
>         TYPE T
>           REAL(KIND=KIND(X)) X
>         END TYPE T
>       END
>
> ?
>
> Some of the text in the Fortran 2008
> standard and Corrigendum 1 that
> applies to these programs seems to
> be missing in the Fortran 2018
> standard and the 2023 draft.
>
> Robert Corbett
>
Several people have said thought that both programs conform.  I come to 
a different conclusion, so I would appreciate it if people could point 
out where they disagree with my reasoning.  (It's been nearly two 
decades since I was on the committee, so my grasp of the fine details of 
the standard may not be what it used to be.)

I see the first program as conforming, independent of the question of 
the "missing" text.  Since X is not declared explicitly, it is 
implicitly declared to be default real, so the KIND for Y is established 
regardless of the question of whether X is a part of T or of MAIN.  For 
reasons having nothing to do with this example, it is important that X 
not be part of T (because we don't want undeclared components in T), so 
I hope that Malcolm's comments that the "missing" text was unnecessary 
means that this is expressed more clearly somewhere else in the draft.  
Could we get a hint as to where?

I see the second program as not confirming.  The explicit declaration of 
a component X in T prevents T from accessing the X in MAIN by host 
association, so KIND(X) can only be referencing the component X, but 
this violates the requirement that the explicit declaration of X precede 
the KIND(X) reference.  I can imagine reasons why a compiler might fail 
to diagnose this, so I don't take compiler acceptance of this program as 
a strong indication of how the standard should be interpreted in this 
regard.

Am I missing something?

-Kurt
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.j3-fortran.org/pipermail/j3/attachments/20220813/2b221ecb/attachment.htm>


More information about the J3 mailing list