J3/06-350r1 Date: November 3, 2006 To: J3 From: Aleksandar Donev Subject: Notes on Clause 12 References: 06-263r1, 06-007r1 I split the comments into several categories: 1) Simple editorial corrections 2) Requests to clarify or change wording 3) Technical issues _________________________________ Editorial corrections _________________________________ [301:?] In the last line of Note 12.5, add a CALL before EXT3. [301:?] Reword the first sentence of Note 12.6 to say: "...have dummy arguments that are procedures with explicit interfaces and have dummy arguments of a derived type defined in the module." [303:3+] In Note 12.8, change the dimension spec of B2 from "SIZE(B1)" to ":". There are subtle impacts of making it explicit shape---for example, it will cause copy in/out in a variety of situations. [324:7+] In the penultimate line of Note 12.38, replace "A=" with "A(6:10,2)=". [326:27] Isn't C1242 tautological---this is how dummy argument is defined? [334:31] In the first line of C1281 replace "in common" with "in a common block". [334:35] Add a space before (16.6.7). _________________________________ Changes of wording _________________________________ [296:25] should be added to the characteristics of dummy data objects in 12.3.2.2. [314:9] At the end of C1235, add "that does not have the CONTIGUOUS attribute" [316:19-20] This sentence should be: "If the dummy argument is an allocatable co-array, the actual argument shall be an allocatable co-array with the same rank and co-rank" Surely we want to allow an actual that is an allocated co-array and a dummy that is not allocatable? If so the "if and only if" is not appropriate. [320:4-5] After "assumed-shape array" add "that does not have the CONTIGUOUS attribute". The text at [321:10] seems to be a verbatim copy? [335:15+] In the last paragraph of Note 12.52, what does "library procedure" mean. I know of plenty of library procedures that are not PURE---a library must eventually produce some output too. [336:8-9] After "shall be a scalar dummy data object" add "of co-rank zero" (or "that is not a co-array"). [336:12-14] C1290 should allow using dummy%kind instead of KIND(dummy). Also, length-type parameter inquiry other than the character LEN should be allowed. [336:21+] I believe we need a note explaining that if the elemental procedure is pure, the processor can actually apply the scalar function/subroutine in any order. _________________________________ Technical questions _________________________________ [299:7] Why don't we allow an optional :: in R1206? [306:34-35] C1220 requires an explicit interface if is specified. This interface must have BIND(C) in it. Is it required to have the same NAME= specifier in both the interface and in the ? Or can one add a name in the PROCEDURE statement if the interface does not have a name? [314:12+] I find Note 12.27 confusing and misleading. Why is it talking about the actual argument being defined asynchronously when it is the dummy that has the ASYNCHRONOUS attribute? Why do we even prohibit copy in/out when the dummy has asynhronous? Can't the asynchronicity be confined within the procedure itself. It is really the actual being modified while the procedure is executing that is the problem. [327:19] Is C1253 really necessary? We have now enhanced the usability of internal procedures considerably by allowing them to be called from outside the host. I envision a conversion of some "callbacks" into internal procedures. It seems like bad design not to allow them to have internal subroutines themselves, unless there is an implementation problem? [335:14] Can a pure procedure have co-array dummies? Does C1286 apply to dummy arguments?