07-212r2
To: J3
From: Aleksandar Donev
Subject: UTI 102
Date: 2007 May 09
References: 07-007r1, 07-161
1. Discussion
---------------
Van proposed that C_PTR and C_FUNPTR ought to
have pointer components as a possible resolution to UTI 102.
Subgroup disagrees with this recommendation. We believe that such
a change at this stage would be late in the process and not in
accord with Fortran 2003. The types C_PTR and C_FUNPTR would
need to be excluded from other rules, for example, they would
be interoperable even though they would have pointer components.
Instead, we propose an alternative fix for UTI 102 as recommended by
the editor. We did not find it easy to word the restrictions in
terms of what would have happened to a Fortran pointer, so we simply
repeat the words that apply to Fortran pointers.
Edits:
Unrelated nearby editorial corrections
-----------------------------------------
[467:12] Insert "C" before "struct"
[468:3] Set "pointer" and "allocatable" in all caps.
-----------------
[493:47,50] and [494:2] Delete "any part of"
[494:7+] Add new events to the list:
(+1) When termination of a BLOCK construct causes a variable to become
undefined, any variable of type C_PTR becomes undefined if its value
is the C address of the variable that became undefined.
(+2) Execution of the allocation transfer procedure (13.7.125) where
an object without the target attribute is pointer associated with
the argument TO causes any variable of type C_PTR to become undefined
if its value is the C address of any part of the variable associated
with the argument FROM."