ISO/IEC JTC1/SC22/WG5 N1582 Result of the WG5 ballot on draft TR John Reid A WG5 ballot on the draft TR was held between November 19 and December 17 2003. The question was as follows: ........................................................................... Ballot on forwarding N1580 (J3/03-259r3) as the PDTR on Enhanced Module Facilities Deadline: 9 a.m. UK time on December 17th. [Choose one of the following] Yes Yes, with the following comments No, for the following reasons Signed ............................................................................ All comments were considered by the subgroup consisting of me, Bill Long, and Van Snyder. Here are the ballots with the responses of this subgroup. Appended is a list of all the edits that the subgroup recommended. 1. Van Snyder Of course, I vote yes, without comment, on the Modules TR. 2. Willi Schoenauer I vote with yes 3. John Reid Yes, with the following comments Page ii, line -5. Change 'between' to 'of' and 'and' to 'upon'. [Make it clear which way the dependence goes.] Page iii, line 12. After 'affect' add 'the translation of'. Page 6. Edits for 46:10, 46, 55, 58:8, and 84:3. In each of these cases, I think it would be better if the comma were removed from the start of the inserted text. Page 8, lines 19-20. Move 'of a module subprogram' forward: On line 19, add 'of a module subprogram or' before 'of' and on line 20, delete ', or of a module subprogram'. Page 9, line 31. Replace '12.5.2.4' by '11.2.2' [This is where the term is defined.] Subgroup response: these 5 changes agreed. Page 9, line 32. Change 'before' to 'before first' and remove ",22" from "405:19,22". Subgroup response: agreed with the first edit: change 'before' to 'before the first' Page 9, lines 33-34. Replace the inserted text by 'A submodule identifier of a submodule is a global identifier and shall not be the same as the submodule identifier of any other submodule.' [The present text is wrong. Two submodules may have the same parent. In this case, the program will have two submodule identifiers that are the same. See the words in the same paragraph of 007 for other identifiers.] Subgroup response: agreed. Page 9, line 35. Add 'After NOTE 16.2, add' Page 11, line 9. Change 'subprogram' to ' or a or '. Subgroup response: these 2 changes agreed. Page 11, line 38. Replace by 'the retranslation of program units that access the module . Subgroup response: agreed, without 'the' at front of new text. Page 12, line 48. Add 'during translation' after 'dependence'. Page 13, lines 2-3. Change to ! palette_stuff do not affect the ! translation of color_points Subgroup response: these 2 changes agreed. Page 15 line 13. Change 'it cannot affect' to 'the new values cannot be accessed in the'. Subgroup response: agreed, with the replacement of ', and' by a semicolon. 4. Bill Long On the question of forwarding the submodules PDTR, I vote YES, with comments (attached). Comments on N1580:[9:19-20] References of the form [x:y] refer the N1580. References of the form 007:x:y refer the the FCD. This set of comments incorporates suggestions from Van Snyder and John Reid. [2:22-23] We changed the syntax terms in [7:20] but failed to make the corresponding change here. Change: -> twice [5:26] In 007:13:17 we have "Modules are further described in Section 11." I recommend a corresponding sentence at the end of the Submodule section. As it stands, it looks a bit asymmetric. Add: "Submodules are further described in Section 11." [5:30+] The same edit in [5:31] made for 007:15:2 needs to be made in 007:14:2 as well. [6:26] "or " needs to be included in the list at 007:10:32+ as well. [8:19:20] C1242a could be misread to mean the you are not allowed to put a MODULE prefix on the actual module subprogram. On [8:19], add "of a module subprogram or" before "of" and on [8:20] delete ", or of a module subprogram". Subgroup response: these 5 changes agreed. [9:20+] At the end of the Note we need to add "or through a binding label" You can reference procedures with bind(c) clauses independent of their location in a module or submodule, and this can be done either from a C program or from Fortran. Subgroup response: agreed with the addition of "means other than Fortran". [9:32] In the far right columns, remove ",22" from "405:19,22". [9:34+] There is no instructional text that goes with the 406:1- edit. I think you want to add "[After Note 16.2 add:] Subgroup response: these 2 changes agreed. [10:18+] At the end of Note 16.18, we should replace "or by means other than Fortran" with "or through a binding label". Subgroup response: agreed without the deletion of "by means other than Fortran". [13:33] "color_points_a" -> "color_points:color_points_a". (We change the syntax but didn't fix the example.) Subgroup response: agreed. 5. John Reid (additional comments) [8:15+] Add extra edit for 279:30+: Subclause 12.5.2.1, after constraint C1237, add C1237a (R1225) A shall not be specified for a procedure defined in a submodule unless its interface is defined in the ancestor module. [As things stand, a user could write a submodule with a procedure that accesses private or protected data and invoke it via its binding label. We need to plug this hole in our data protection mechanisms. This change allows an f2003 module procedure to be split into parts, but does not allow the user to provide a new procedure and invoke it.] Subgroup response: accepted, with the addition of this note: Should the final version of Fortran 2003 define in such a way that the binding label is optional, this constraint should be altered to allow a that does not create a binding label for the procedure. Otherwise, WG5 should consider altering the rules for creating a binding label for a procedure defined in a submodule, relaxing the new constraint to correspond, and altering the text at [403:35-36]. [9:20] At end of paragraph add "A module procedure interface body shall not correspond to more than one separate module procedure." [This is needed to make the text at 9:17-20 work - there needs to be a one-one correspondence between a module procedure interface and its implementation.] Subgroup response: agreed, but with the new words changed to "A module procedure interface body shall not correspond to more than one subprogram that defines a separate module procedure." 6. Michael Ingrassia Yes. 7. Craig Dedo Yes, with the following comments [7:29] Change the syntax rule number from R1115e to R1115d; rule R1115e doesn't exist. Subgroup response: agreed. [9:33-34] In the edit for 007:405:22 replace "The" by "A"; close the quote. Subgroup response: superseded by another edit for the same lines. 8. Van Snyder (additional comments) Page ii, second line of third paragraph, remove "(ISO/IEC 1539-1:2004)". This passage is referring to the next standard after that one. Page 2, lines 20-21: Change the font of SUBMODULE and END SUBMODULE to ordinary font. The standard does not use "code font" except for actual code examples. Page 3, line 7: remove "or procedure body". If the interface body is accessible the procedure body is necessarily accessible, so there's no need to say so. Page 8, line 7: replace "interface" by "<>". Page 8, line 12: remove the paragraph. Subgroup response: these 5 changes agreed. Page 9, after line 29: [403:35] In the fourth line of the second paragraph of 15.4.1 on page 403, replace ``not a dummy procedure'' by ``neither a dummy procedure nor a procedure defined in a submodule that does not have an interface declared in the ancestor module''. [403:36] At the end of the last line of the second paragraph of 15.4.1 on page 403, add a sentence ``Otherwise the procedure has no binding label.'' Subgroup response: not accepted. A always gives rise to a binding label. However, an edit may be needed here if a different solution is chosen for the first of John Reid's additional comments in section 5 above. 9. Rob James Yes. 10. Alla Gorelik Yes, with the following comment I suggest to add some words about “Enhanced Module Facilities” (submodules) to the Introduction of ISO/IEC 1539-1:2004 where several extensons to Fortran 95 are listed. Subgroup response: This is a change that would be appropriate for the next standard, in which we have promised to add these facilites. It is not appropriate for Section 3 of the TR, which is intended only to define the facilites (see the leading paragraph). There is no plan to produce a version of ISO/IEC 1539-1:2004 other than the next standard that adds these facilites. 11. David Muxworthy Yes [Having read the N1582 draft of Dec 10 I have nothing further to add] 12. Steve Morgan Yes 13. Toon Moene Yes 14. Richard Maine Yes 15. Stan Whitlock Yes 16. Malcolm Cohen Yes 17. David Muxworthy for UK Fortran panel Yes 18. Brian T. Smith Yes 19. Van Snyder (additional comment) At 9:19 and 10:25 in 03-259r3, replace "separate module procedure" by "subprogram". [ii:-6 - -5] Replace "dependence is between the implementation of some parts of the concept and the interface" by "implementations of some parts of the concept depend upon the interfaces". [ii:-2] The sentence is awkward because "therefore" appears twice. Replace "therefore" by "thus". [9:20] It's not necessary to say "separate module" so many times. Replace "separate module procedure" by "procedure". [10:26] It's not necessary to say "separate module" so many times, especially in a nonnormative glossary entry. Replace "separate module procedure" by "procedure". Subgroup response: these 5 changes agreed. .............................................................................. List of agreed edits Page ii, second line of third paragraph, remove "(ISO/IEC 1539-1:2004)". Page ii, lines -6 to -5. Replace "dependence is between the implementation of some parts of the concept and the interface" by "implementations of some parts of the concept depend upon the interfaces". [ii:-2] Replace "therefore" by "thus". [iii:12]. After 'affect' add 'the translation of'. [2:20-21]. Change the font of SUBMODULE and END SUBMODULE to ordinary font. [2:22-23] Change -> twice [3:7]. Remove "or procedure body". [5:12+] Add "or " for 007:10:32+. [5:26] Add: "Submodules are further described in Section 11." [5:30+] The same edit in [5:31] made for 007:15:2 needs to be made in 007:14:2 as well. [6:4-16] Edits for 46:10, 46, 55, 58:8, and 84:3. In each of these cases, remove comma from the start of the inserted text. [7:29] Change the syntax rule number from R1115e to R1115d. [8:7] Replace "interface" by "<>". [8:12] Remove the paragraph. [8:15+] Add extra edit for 279:30+: Subclause 12.5.2.1, after constraint C1237, add C1237a (R1225) A shall not be specified for a procedure defined in a submodule unless its interface is defined in the ancestor module. Should the final version of Fortran 2003 define in such a way that the binding label is optional, this constraint should be altered to allow a that does not create a binding label for the procedure. Otherwise, WG5 should consider altering the rules for creating a binding label for a procedure defined in a submodule, relaxing the new constraint to correspond, and altering the text at [403:35-36]. [8:19:20] On line 19, add 'of a module subprogram or' before 'of' and on line 20, delete ', or of a module subprogram'. [9:19] Replace "separate module procedure" by "subprogram". [9:20] Replace "separate module procedure" by "procedure". [9:20] At end of paragraph add "A module procedure interface body shall not correspond to more than one subprogram that defines a separate module procedure." [9:20+5] In the last line of the Note, delete "or" and add ", a binding label, or means other than Fortran" at the end of the sentence. [9:31]. Replace '12.5.2.4' by '11.2.2' [9:32]. Change 'before' to 'before the first' and remove ",22" from "405:19,22". [9:33-34]. Replace the inserted text by 'A submodule identifier of a submodule is a global identifier and shall not be the same as the submodule identifier of any other submodule.' [9:35] Add 'After Note 16.2, add:' [10:18+] At the end of Note 16.18, before "or by means" add "a binding label,". [10:25] Replace "separate module procedure" by "subprogram". [10:26] Replace "separate module procedure" by "procedure". [11:9] Change 'subprogram' to ' or a or '. [11:38] Replace by 'retranslation of program units that access the module .' [12:48] Add 'during translation' after 'dependence'. [13:2-3] Change to ! palette_stuff do not affect the ! translation of color_points [13:33] "color_points_a" -> "color_points:color_points_a". [15:13] Change 'it cannot affect' to 'the new values cannot be accessed in the' and replace', and' by a semicolon.