To: J3 J3/25-124r1 From: Aury Shafran & Malcolm Cohen Subject: Base object Date: 2025-February-20 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. Edits to address the issue are provided below. 2. Edits [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===