[J3] surprisingly PURE

Robert Corbett rpcorbett at att.net
Sat Apr 18 21:31:44 EDT 2020


I assume you mean C1594 (1).

No part of C1594 applies to
this example.  The variable Y is
a local variable of SUBR.  The
variable Y does not satisfy any
of the conditions listed at the
start of C1594.

Robert Corbett

> On Apr 18, 2020, at 4:38 PM, Steven G. Kargl <kargl at troutmask.apl.washington.edu> wrote:
> 
>> On Sat, Apr 18, 2020 at 11:12:27PM +0000, Robert Corbett via J3 wrote:
>>       REAL, TARGET :: X = 1.0
>>       TYPE T
>>         REAL, POINTER :: P => X
>>       END TYPE T
>>       CALL SUBR
>>       PRINT *, X
>>       CONTAINS
>>         PURE SUBROUTINE SUBR
>>           TYPE(T) Y
>>           Y%P = 2.0
>>         END SUBROUTINE SUBR
>>       END
>> -------------------------------
>> 
>> I think the program given above is standard conformant.
>> If it is not standard conformant, please let me know
>> why it is not.  I know that it should not be standard
>> conformant, but I see no reason it is not.
>> 
>> The key point here is that default component
>> initialization does not give the variable the SAVE
>> attribute.  If Y had the SAVE attribute, the program
>> would not be conformant.
>> 
>> This program is my third attempt to show this problem.
>> My first program was not conformant, and my second did
>> not properly demonstrate the problem.
>> 
> 
> Doesn't f2018:C1593(1) apply?  I admit I have troubling reading
> this section of the Fortran standard. 
> 
> -- 
> Steve



More information about the J3 mailing list