[J3] Consideration of Paper 18-242 at Meeting 218 (Was: 18-242)
Clune, Thomas L. (GSFC-6101)
thomas.l.clune at nasa.gov
Mon Dec 3 15:31:11 EST 2018
Thinking a bit further, I now want to retract my statement. If the only concern is regarding shadowing external entities with the same-spelling, I am happy with the proposed feature.
But I expect that there are deeper issues around the actual wording for the existing DO statement that might be very difficult to rewrite without breaking things.
> On Dec 3, 2018, at 3:10 PM, Clune, Thomas L. (GSFC-6101) via J3 <j3 at mailman.j3-fortran.org> wrote:
>
> Bill,
>
> Thanks. I’d not looked closely and was not certain that I understood what the concern was. Your example makes it very clear.
>
> It is unfortunate - I personally would gladly give up backward compatibility for this, but fully accept why that’s not a good idea in the broader picture.
>
> Cheers,
>
> - Tom
>
>
>> On Dec 3, 2018, at 1:45 PM, Bill Long via J3 <j3 at mailman.j3-fortran.org> wrote:
>>
>>
>>> On Dec 1, 2018, at 2:29 PM, Van Snyder via J3 <j3 at mailman.j3-fortran.org> wrote:
>>>
>>>
>>> A loop-control declared in the statement would be a construct entity.
>>> That's the point! It's not an accidental defect.
>>
>> But the do-variable in an ordinary DO look is NOT a construct entity. The DO semantics depend on this. I was not part of the JoR discussion, but it seems you are really proposing a whole new, separate form of DO. For example:
>>
>> integer(4) :: i
>>
>> do integer(8) :: i = n,m
>> if (a(i) < 0) exit
>> end do
>>
>> call histo(i) ! Corresponding dummy variable to i is integer(4)
>>
>> If the integer(8) :: is removed, then this is an ordinary loop. If the 3rd iteration exits, the argument to histo has the value n+2 (assuming m > n+2), and has kind 4, which is what histo is expecting. With the integer(8)::, if I understand your email description, the value if i is undefined at the call to histo. If you really want this behavior, then write
>>
>> block
>> integer(8) :: i
>> do i = n,m
>> if (a(i) < 0) exit
>> end do
>> end block
>>
>> At the end block, it is at least obvious to the programmer that the i declared in the block cannot be used. At least this version does not violate the principle of least surprise.
>>
>> I think I have to agree with the JoR decision. The benefit vs confusion balance favors not adding this feature.
>>
>> Cheers,
>> Bill
>>
>>
>>
>> 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