To: J3 J3/24-142 From: Daniel Chen Subject: Undefinable dummy in asynchronous I/O Date: 2024-June-24 The standard says [15.5.2.5] " 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. " which makes the following code not conforming " interface subroutine sub(arg) integer, asynchronous :: arg(3) end subroutine end interface integer :: i(10) call sub(i( (/2, 3, 4/))) end " 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. Question: 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?