07-212 To: J3 From: Van Snyder Subject: UTI 102 Date: 2007 May 03 1. Introduction --------------- At meeting 179 paper 07-161 proposed that C_PTR and C_FUNPTR ought to have pointer components. The discussion that led to the conclusion in 07-161r1 that they ought not to have pointer components was apparently at least partly based on the negligible impact this change would have on the wording of some constraints related to co-arrays. If C_PTR and C_FUNPTR had pointer components there would be no reason to insert the change proposed in UTI 102, let alone to ponder whether the wordsmithing were perfect and future-proof. The functions C_FUNLOC and C_LOC are described as if C_FUNPTR and C_PTR had pointer components, so no change is needed, although a bit of polishing might be desirable. "16.5.2.2.1 Events that cause pointers to become associated" uses "The pointer is pointer-assigned to a target...," which is how C_FUNLOC and C_LOC are described, so no change is needed. 2. Edits w.r.t 07-007r1 ----------------------- [466:3] Replace ``or a pointer'' by ``. Objects of type C_PTR have a direct component that is a data pointer. Objects of type C_FUNPTR have a direct component that is a procedure pointer.''. [467:0+2] Insert Note 15.11a: Note 15.11a Although objects of these types have pointer components, the components are private. Therefore a program cannot depend upon the characteristics of those components as Fortran objects, and the processor can choose the representation of these objects to be identical to the representations the companion processor uses for C pointers, which might be different from the representation of any Fortran pointer or Fortran derived-type object. [493:46-50] Delete items (18) and (19). [494:1-2] Delete item (20). [494:4-7] Delete items (22) and (23). [494:UTI 102] Delete if resolved. 3. Polishing C_FUNLOC and C_LOC ------------------------------- [463:8] Replace "C_FUNPTR ... containing" by "the pointer component of C_FUNPTR (15.3.3) were" [463:22] Replace "C_PTR ... containing" by "the pointer component of C_PTR (15.3.3) were" [463:25] Replace "C_PTR ... containing" by "the pointer component of C_PTR (15.3.3) were" 4. Co-array stuff related to C_PTR and C_FUNPTR ----------------------------------------------- [65:19-20] Since a co-array component can evidently be of a type that is an extension of C_PTR or C_FUNPTR, or has a component of type C_PTR or C_FUNPTR, or has the POINTER attribute, what's the point of C446? Delete C446. [93:12] Since a co-array can evidently be of a type that is an extension of C_PTR or C_FUNPTR, or has a component of type C_PTR or C_FUNPTR, or has the POINTER attribute, what's the point of C526? Delete C526. [121:8] Since neither C446 nor C526 constrains against components or objects of types that are extensions of C_PTR or C_FUNPTR, or that have components of type C_PTR or C_FUNPTR, and there are no constraints against being of a type with a pointer component (more pointedly only pointer components) if appears, C617 doesn't really appear to do anything. Delete C617. [128:21-24] Since neither C446 nor C526 constrains against components or objects of types that are extensions of C_PTR or C_FUNPTR, or that have components of type C_PTR or C_FUNPTR, and there are no constraints against or being of a type with a pointer component (more pointedly only pointer components) if is a co-array, C640 and C641 don't really appear to do anything. Delete C640 and C641.