To: J3 J3/25-124 From: Aury Shafran & Malcolm Cohen Subject: Base object Date: 2025-February-18 References: 25-007 1. Introduction The term "base object" is defined in 25-007, 3.12, as: object designated by the leftmost part-name Note 1 to entry: Base objects are described in 9.4.2. Note 2 to entry: This only applies to the data-ref syntax (R911). It is defined to only apply to . However, elsewhere in the standard, multiple uses of the term "base object" are made in contexts that aren't intended to require a . For example, 10.1.11 "Specification expression" p.2 list item (2) says "... each primary is ... (2) an object designator with a **base object** that is a dummy argument that has neither the OPTIONAL nor the INTENT (OUT) attribute". List item (2) is intended to allow dummy argument names to appear in specification expressions, such as: subroutine sub(x) integer :: x integer :: y(x) ! <-- x can appear here end subroutine In the case of the marked line, "x" in the BNF is an ( --> --> expr --> ... --> primary --> designator --> ). An is not a , and it has no , so "base object" does not apply to it. Therefore, the list item (2) as written doesn't apply to the example above. Similar problematic uses of "base object" in contexts that aren't intended to require a are: list items (3) and (4) in 10.1.11, 8.5.4 p.2, C8110, C15104, and C15121. Two potential edits to address the issue are provided below. An argument for proposal A is it only changes the definition of "base object", which has relatively few uses (12 references), and so has less potential for mistake than changing the definitions of and (25 references combined). An argument for proposal B is it funnels all data object references through one syntax term, , which increases consistency. 2. Proposal A [6:20-22] 3.12, base object Replace the definition and two notes with "data object designated by an , , or the leftmost of a Note 1 to entry: See 8.2, 9.2, and 9.4.2." Note to editor: 8.2 is \ref{D5:Type declaration statement}, 9.2 is \ref{D6:Variable} [111:7+] 8.2 Type declaration statement, p4+ Insert new paragraph before the NOTE: "The base object of an is the named data object." [145:30+] 9.2 Variable, between the last constraint and the NOTE, insert new paragraph "The base object of a is the named variable." 3. Proposal B [110:23] 8.2 Type declaration statement, R804 , After "is" change "" to "", [110:24] C810 change "(R804) The shall be the name of a data object." to "The of an shall consist of a single ." { We do not need to say "that is the name of a data object" here, because C912 already says it. } [145:21] 9.2 Variable, R903 after "is" change "" to "", [145:22] C903, replace "(R903) shall be the name of a variable." with "The of a shall consist of a single that is the name of a variable." ===END===