To: J3 J3/24-142r1 From: Daniel Chen & Steve Lionel Subject: Undefinable dummy in asynchronous I/O - response Date: 2024-June-24 Paper 21-142 posits an actual argument that is an array section with vector subscript, associated with a dummy argument that has neither the VALUE nor ASYNCHRONOUS attribute. This dummy argument then appears in the I/O list of an asynchronous I/O statement. The paper cites F2023 15.5.2.5p21: If the procedure is nonelemental, the dummy argument does not have the VALUE attribute, and the actual argument is an array section having a vector subscript, the dummy argument is not definable and shall not have the ASYNCHRONOUS, INTENT (OUT), INTENT (INOUT), or VOLATILE attributes. and then references (but doesn't cite) 12.6.2.5, which says: If a variable is used in an asynchronous data transfer statement as - an item in an input/output list, - a group object in a namelist, or - a SIZE= specifier, the base object of the data-ref is implicitly given the ASYNCHRONOUS attribute in the scoping unit of the data transfer statement. The paper then says, 'However, even without the ASYNCHRONOUS attribute, "arg" can still implicitly get the ASYNCHRONOUS attribute if it is used in an Asynchronous WRITE statement that doesn't define it. This seems a little inconsistent to me.' and asks two questions: "Should the standard 1. allow an actual argument that is an array section having a vector subscript to associate with a dummy argument that has ASYNCHRONOUS attribute, 2 (alternative), or restrict asynchronous I/O on such a dummy argument?" The answer to the first question is clearly "No". 12.6.2.5 refers to "a variable", and 3.151, defines a variable as: "data entity (3.41) that can be defined (3.48) and redefined during execution of a program" 15.5.2.5p21, cited above, explicitly says that the dummy argument is not definable, therefore it is not a "variable". It also says that such dummy argument "shall not have the ASYNCHRONOUS...attribute", and JoR believes that this applies to implicit attributes as well. As for the second question, the standard already prohibits a conforming program from using such a dummy argument in an asynchronous I/O item list, but does not require a processor to diagnose this misuse. --END--