(j3.2006) (SC22WG5.3541) Interp ballot extension
Malcolm Cohen
malcolm
Mon Mar 3 03:29:08 EST 2008
Yes No Number Title
--- -N- F03/0049 Separators in list-directed output
involving UDDTIO
-C- --- F03/0050 Questions about internal files
-C- --- F03/0086 Elemental and BIND(C)
-Y- --- F03/0088 Defined operations/assignments and
VOLATILE/ASYNCHRONOUS
-Y- --- F03/0089 Interoperability of non-BIND derived types
-Y- --- F03/0092 Procedure characteristics and unlimited
polymorphic
-C- --- F03/0093 Allocatable array on intrinsic assignment with
scalar expr
-C- --- F03/0094 Final subroutine and VALUE attribute
-Y- --- F03/0095 Bounds remapped pointer assignment and ASSOCIATED
-Y- --- F03/0097 Blanks as separators in NAMELIST input
--- -N- F03/0098 Does allocate with source= define subcomponents?
-C- --- F03/0101 Is UDDTIO output suitable for namelist and
list-directed input
======================================================================
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 <variable> is an unallocated allocatable array, <expr> shall
be an array of the same rank as <variable>."
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 <source-expr> 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"?
----------------------------------------------------------------------
--
................Malcolm Cohen (malcolm at nag-j.co.jp)
More information about the J3
mailing list