J3/01-173r1 Page 1 of 1 To: J3 From: JOR/Bleikamp Date: March 21, 2001 Subject: Derived Type I/O Fixups The description of how to expand list items into effective list items, or just expand a list item as if the user had specified ...., is broken and/or incompletely specified, and/or specifies undesirable behavior, including a situation parallel to the existing F95 interp about intrinsic assignment overriding user defined assignment for components of derived type. We now expand all derived type list items unless the list item is processed by a u.d.d.t.i.o. routine, or is an unformatted i/o list item, and none of the components/sub-components/sub-sub-components/... of that list item are processable by a u.d.d.t.i.o. routine. Note that namelist items are expanded in this way, even though there are no list items on the I/O statement [229:1-3]. Note that effective list items now apply to both formatted and unformatted i/o lists. Note that polymorphic components are either allocatable or pointers; therefore, restrictions on ultimate components not being allocatable or pointer exclude polymorphic objects. Edits: [182:6+] add a new paragraph "A list item shall not be polymorphic unless it is processed by a user-defined derived-type input/output procedure (9.5.4.4.3)." [182:8+] add a new paragraph "The rules describing whether to expand an input/output list item are re-applied to each expanded list item until none of the rules apply." [182:20+] add: "If a list item of derived type in an unformatted input/output statement is not processed by a user-defined derived-type input/output procedure (9.5.4.4.3), and if any subobject of that list item would be processed by a user-defined derived-type input/output procedure, the list item is treated as if all of the components of the object were specified in the list in component order (4.5.4); those components shall be accessible in the scoping unit containing the input/output statement and shall not be pointers or allocatables. If a list item of derived type in a formatted input/output statement is not processed by a user-defined derived-type input/output procedure (9.5.4.4.3), that list item is treated as if all of the components of the list item were specified in the list in component order (4.5.4); those components shall be accessible in the scoping unit containing the input/output statement and shall not be pointers or allocatables. If a derived-type list item is not treated as a list of its individual components, that list item's ultimate components shall not be pointers or allocatables unless that list item is processed by a user-defined derived-type input/output procedure (9.5.4.4.3)." Delete [182:21-33]. [182:43] Insert "effective" before "input/output list item". End of edits