J3/14-236r1 To: J3 From: Van Snyder Subject: Finish integrating new C_F_POINTER functionality from 29113 Date: 2014 October 13 Reference: 14-007r2, 14-135 1. Discussion ============= In 2003, there was no prohibition against FPTR having deferred length parameters. This wasn't needed because FPTR had to be interoperable, and a pointer of a parameterized derived type with length parameters, or a character pointer with a length with a value that is not 1, is not interoperable. After TS 29113, FPTR is no longer required to be of interoperable type, and can be a character with length other than 1. If we don't do something, deferred length parameters of FPTR are necessarily undefined, and there is thereafter apparently nothing conformant that can be done with FPTR other than copying its undefined length type parameter values using pointer assignment. What's wrong with noninteroperable arrays? I.e., why does [445:21] say "scalar"? This has nothing to do with C_F_POINTER, and rectifying it, if we want to, would be the topic of another paper, and might be considered to be a new work item. 2. Edits ======== [445:15 15.2.3.3p3] After "pointer" insert ", shall not have a deferred length parameter". [445:21 15.2.3.3p3] Replace "type parameters" with "type parameter values". [446:4+] Insert an Example paragraph: "<> \begin{jalltt} CHARACTER(42), POINTER :: C1 CHARACTER(:), POINTER C2 CALL C_F_POINTER ( CPTR, C1 ) C2 => C1 \end{jalltt} associates C2 with the entity at the C address specified by CPTR, and specifies its length to be the same as the length of C1. " 3. Purely editorial edit ======================== [446:3 15.2.3.3p3] Replace "of type integer and rank one" with "a rank-one integer array".