J3/06-306r2 Date: 14 November 2006 To: J3 From: John Wallin and Aleksandar Donev Subject: Comments on Clause 12 Reference: J3/06-007r1 Discussion 296:9-10 Overlooks internal procedures. 312:3-4 Conflicts with 12.5.2.3: 12.5.2.3 says "if a nonoptional nonpointer dummy argument corresponds to a pointer actual argument, the actual argument shall be pointer associated with a target and the dummy argument becomes argument associated with that target" and "A present nonpointer dummy argument that corresponds to a nonpointer actual argument becomes argument associated with that actual argument." [312:3-4] says "If the dummy argument has the VALUE attribute it becomes associated with a definable anonymous data object. . . ." No matter whether the actual argument has the pointer attribute, 12.5.2.3 conflicts with [12:3-4]. Question without edits 318:5-10 [We allow automatic "pointering" of INTENT(IN) pointer dummy variables to nonpointer actual arguments and automatic dereferencing of nonpointer dummy variables associated with pointer actual arguments. It appears we don't allow the same for pointer arguments. Did we intend this asymmetry?] Proposed answer: No, we did not intend this asymmetry. Edits are provided to correct this oversight. Edits to J3/06-007r1: [296:9] Change "an external procedure, module" to "an external procedure, internal procedure, module". [311:2] Insert "that does not have the VALUE attribute" after "dummy argument" [311:6] Insert "that does not have the VALUE attribute" after "dummy argument" [311:10+] Insert a new paragraph: "If a present dummy argument has the VALUE attribute it becomes argument associated with a definable anonymous data object. If the dummy argument corresponds to a nonpointer actual argument the initial value of the data ob ject is the value of the actual argument. If the dummy argument corresponds to a pointer actual argument that pointer shall be pointer associated with a target and the initial value of the data object is the value of that target." [312:3-5] Delete. [318:5] Before ", the associated actual argument" insert "and does not have the INTENT(IN) attribute." [318:6] Add two new sentences at the end of the paragraph: "Otherwise, if the dummy aegument is a procedure pointer with the INTENT(IN) attribute, the associated actual argument shall be a procedure pointer, a reference to a function that returns a procedure pointer, a reference to the NULL intrinsic function, or a valid target for the dummy pointer in an assignment statement. If the actual argument is not a pointer, the dummy pointer becomes pointer-associated with the actual argument." [333:2] Replace "or" by a comma, then insert ", or " after "".