ISO/IEC JTC1/SC22/WG5 N1721 Result of the interpretations ballot 4, N1711 Key for the Result line: Y Vote passes unconditionally. C Vote passes, subject to J3 considering the comments and reasons and making no change that alters the technical content. N Vote fails. Returned to J3 for further work. F03/ F03/ F03/ F03/ F03/ F03/ F03/ F03/ F03/ F03/ F03/ F03/ 0049 0050 0086 0088 0089 0092 0093 0094 0095 0097 0098 0101 Cohen N C C Y Y Y C C Y Y N C Gorelik Y Y Y Y Y Y Y Y Y Y Y Y Ingrassia Y Y Y Y Y Y Y Y Y Y Y Y Long Y Y Y Y Y Y Y Y Y Y Y Y Moene Y Y Y Y Y Y Y Y Y Y Y Y Morgan Y Y Y Y Y Y Y Y Y Y Y Y Muxworthy Y Y Y Y Y Y Y Y Y Y Y Y Nagle Y Y Y Y Y Y Y Y Y Y Y Y Rao Y Y Y Y Y Y Y Y Y Y Y Y Rasmussen Y Y Y Y Y Y Y Y Y Y Y Y Reid Y Y Y Y Y Y Y Y Y Y C C Sleightholme Y Y Y Y Y Y Y Y Y Y Y Y Snyder Y Y Y Y Y C Y Y Y Y Y Y Whitlock Y Y Y Y Y Y Y Y Y Y Y Y Xia Y Y Y Y Y C Y Y Y Y Y Y Result N C C Y Y C C C Y Y N C Comments and reasons for NO votes ............................................................................... ............................................................................... Malcolm Cohen NUMBER: F03/0049 EDITS: [241:5+] In Section 10.9.2, add the following to the end of the first paragraph: "Two undelimited character sequences are considered adjacent when both were written using list-directed input/output, no intervening data transfer or input/output file positioning operations occurred, and both were written either by a single data transfer statement, or during the execution of a parent data transfer statement along with its child data transfer statements." This immediately raises a followup question: when it says "no intervening data transfer ... operations occurred", does it mean on the same unit or on any unit? For example, consider the very slightly modified: MODULE m2 TYPE t INTEGER i END TYPE INTERFACE WRITE(FORMATTED) MODULE PROCEDURE formattedWriteT END INTERFACE CONTAINS SUBROUTINE formattedWriteT(dtv, unit, iotype, v_list, iostat, iomsg) CLASS(t), INTENT(IN) :: dtv INTEGER, INTENT(IN) :: unit CHARACTER(LEN=*), INTENT(IN) :: iotype INTEGER, INTENT(IN) :: v_list(:) INTEGER, INTENT(OUT) :: iostat CHARACTER(LEN=*), INTENT(INOUT) :: iomsg CHARACTER(100) temp WRITE (temp,'(I0)') dtv%i WRITE (unit,*) TRIM(temp) END SUBROUTINE END MODULE PROGRAM foo2 USE m2 TYPE(t) :: t1 = t(5) OPEN(10, FILE='foo.txt', ACCESS='SEQUENTIAL', FORM='FORMATTED', & DELIM='NONE') WRITE(10, *), 'xyz', t1, 'zyx' END PROGRAM Does this write xyz 5xyz or xyz5xyz ? That is, is the data transfer which is an internal file write affect whether 'xyz' and TRIM(temp) are adjacent? Note that in F2008 this might involve two separate units instead. I submit that "on that unit" ought to be inserted into the edit after "operations", making the whole edit [241:5] In Section 10.9.2, add the following to the end of the first paragraph: "Two undelimited character sequences are considered adjacent when both were written using list-directed input/output, no intervening data transfer or input/output file positioning operations on that unit occurred, and both were written either by a single data transfer statement, or during the execution of a parent data transfer statement along with its child data transfer statements." Note: The location reference should be [241:5] since we are adding to the paragraph, not inserting after the existing one. ---------------------------------------------------------------------- NUMBER: F03/0050 The edits should identify the paragraph as being the seventh one. ---------------------------------------------------------------------- NUMBER: F03/0086 In the edit, "ELEMENTAL" should be "elemental". We only use uppercase for keywords and attributes, we use "elemental procedure" everywhere else e.g. [287:10,15] ---------------------------------------------------------------------- NUMBER: F03/0088 For F2008 I'd prefer to expand the definition of actual argument. ---------------------------------------------------------------------- NUMBER: F03/0093 EDITS: [139:22-] Insert new sentence at beginning of paragraph "If is an unallocated allocatable array, shall be an array of the same rank as ." COMMENT: "be an array of the" -> "have". ---------------------------------------------------------------------- NUMBER: F03/0094 The edit is to the last sentence of C473 in 4.5.5 "Final subroutines". ---------------------------------------------------------------------- NUMBER: F03/0098 EDITS: [113:21] At the end of the last sentence in 6.3.1.1 insert "unless they are defined by a SOURCE= specifier" No. They can be allocated but not defined. This should read something like "unless the SOURCE= specifier appears and the corresponding component of the is allocated". [421:27-28] 16.5.5, list item 19, modify by adding after "Allocation of an object", "except by an ALLOCATE statement with a SOURCE= specifier". No - splitting "object" apart from "that has" makes the sentence impossible to parse. Maybe insert after "Allocation", comma plus the insert above plus comma. Or rewrite? [422:41] 16.5.6, list item (11) insert "with no SOURCE= specifier" after "ALLOCATE statement" Probably ok, but maybe better to rewrite the whole item (11) as "Successful allocation of an ALLOCATE statement with no SOURCE= specifier causes a subcomponent of an allocated object to become undefined if default initialization has not been specified for that subcomponent." ? ---------------------------------------------------------------------- NUMBER: F03/0101 EDITS: "derived type"->"derived-type", thrice. [241:5] Add at the end of the paragraph "The form of the output produced by a user-defined derived type output routine invoked during list-directed output is specified by the invoked routine. It need not be compatible with list-directed input." Should this not be "The form of the values produced", the same as the opening sentence of the paragraph? Should the last sentence start "This form" to avoid ambiguity over "It"? ............................................................................... ............................................................................... Jim Xia Comments on F03/0092 In the example code, it uses the following declaration procedure (foo), target :: proc_tgt Don't we just violate the syntax rules for in procedure declaration statement [264:9-20]? TARGET is not listed as one of the [264:13-18]. This statement should be changed to procedure (foo) :: proc_tgt as appeared in the original interp paper. ............................................................................... ............................................................................... Van Snyder Comments on F03/0092 Jim is correct. This wouldn't affect the corrigendum, but we might as well get it right. ............................................................................... ............................................................................... John Reid F03/0098. One of the edits seems to insert text at the wrong place. I think it should read [421:27-28] 16.5.5, list item 19, modify by adding after "Allocation": "except by an ALLOCATE statement with a SOURCE= specifier". F03/0101. The terminology of the standard is "user-defined derived-type" input and output. I think this should be used for every occurrence (there are six and none is does so at the moment).