To: J3 12-130r2 From: Reinhold Bader/Bill Long Subject: Edits to 12-119 Date: 2012 February 15 References: 12-119 The changes proposed are from an email sent by Reinhold Bader 11-feb-2012. Edits to 12-119: -------------------- In 7.2 RANK, The example does not really make clear why this function is needed. Replacing the existing sentence by "If X is a dummy argument declared with REAL X(..) and is argument associated with an effective argument that was declared REAL Y(:,:,:), RANK(X) has the value 3." {Modified slightly from Reinhold's original.} --------------------- In 8.3.5.5 CFI_establish, in the paragraph following the extents description, in the penultimate sentence change "... but does not describe a Fortran assumed-shape array". to "... but does not describe a data object." {Objects other that assumed-shape arrays are included in the list of things not described.} --------------------- In 8.6 Restrictions on lifetimes, paragraph 2, last sentence, change "object it describes" to " object described by the C descriptor". {Clarify "it".} ----------------------- In 8.7 Interoperability of procedures and procedure interfaces, paragraph 5, second sentence (top of page 31) change: "The C descriptor shall describe an object with the same characteristics as the effective argument; the type member" to "The value of the \cf{attribute} member of the C descriptor shall be compatible with the characteristics of the dummy argument. The members of the C descriptor other than \cf{attribute} and \cf{type} shall describe an object with the same characteristics as the effective argument. The \cf{type} member" {In a call from Fortran to C, the attribute member of a C descriptor pointed to by a formal parameter gets its value from the corresponding dummy argument in the Fortran interface. This is necessary because of cases such as an allocatable actual argument corresponding to an assumed-shape dummy in the interface. The attribute has to be determined by the assumed-shape dummy and not the allocatable actual. The other members in the descriptor get their values from the corresponding effective argument, because the corresponding dummy in the interface could be assumed type or assumed rank. Whether an object is allocatable, pointer, or neither is a characteristic, so the current sentence is misleading.} ------------------------ In 8.7 Interoperability of procedures and procedure interfaces, in the last paragraph add a sentence: "An absent optional dummy argument in a reference to an interoperable procedure from a C function is indicated by a corresponding argument with the value of a null pointer." {Cover the case of a called procedure in Fortran.} -------------------- In 9.8 Edits to clause 13, in the edits for 12.7.137a RANK, Replacing the existing sentence following "Example." with "If X is a dummy argument declared with REAL X(..) and is argument associated with an effective argument that was declared REAL Y(:,:,:), RANK(X) has the value 3." --------------------- In 9.9, in the second set of edits for 15.3.7, replace the last sentence of the first paragraph: "The C descriptor shall describe an object with the same characteristics as the effective argument." with "The value of the \cf{attribute} member of the C descriptor shall be compatible with the characteristics of the dummy argument. The members of the C descriptor other than \cf{attribute} and \cf{type} shall describe an object with the same characteristics as the effective argument. The \cf{type} member shall have a value from Table 8.2 that depends on the effective argument as follows: \begin{itemize} \item if the dynamic type of the effective argument is an interoperable type listed in Table 8.2, the corresponding value for that type; \item if the dynamic type of the effective argument is an intrinsic type with no corresponding type listed in Table 8.2, or a noninteroperable derived type that does not have type parameters, type-bound procedures, final procedures, nor components that have the ALLOCATABLE or POINTER attributes, or correspond to CFI_type_other, one of the processor-dependent nonnegative type specifier values; \item otherwise, CFI_type_other. \end{itemize}" ---------------------- In 9.9 in the second edit for 15.3.7, at the end of the last paragraph add a sentence: "An absent optional dummy argument in a reference to an interoperable procedure from a C function is indicated by a corresponding argument with the value of a null pointer."