To: J3 J3/21-180 From: Jon Steidel Subject: Edited constraint in F2018 Date: 2021-October-07 ---------------------------------------------------------------------- DISCUSSION: In Fortran 2008, we have constraint C1238 which states "An actual arg- ument that is a coindexed object with the ASYNCHRONOUS or VOLATILE attribute shall not correspond to a dummy argument that has either the ASYNCHRONOUS or the VOLALTILE attribute." In Fortran 2018, the corresponding constraint, C1538, was edited to state "An actual argument that is a coindexed object with the ASYNCH- RONOUS or the VOLATILE attribute shall not correspond to a dummy argument that has either the ASYNCHRONOUS or VOLATILE attribute, unless the dummy argument has the VALUE attribute." This implies an ASYNCHRON- OUS or VOLATILE actual argument can become associated with a VOLATILE dummy argument so long as the dummy argument has the VALUE attribute. However, we also have constraint C864 that states "An entity with the VALUE attribute shall not have the ALLOCATABLE, INTENT (INOUT), INTENT (OUT), POINTER, or VOLATILE attributes." It would be clearer to split C1538 into two constraints. Edits are provided to do this. EDITS to 21-007r12: 15.5.2.5 Ordinary dummy arguments 322:35 (C1546) Delete "either" and "or VOLATILE" so the constraint reads "An actual argument that is a coindexed object with the ASYNCHRONOUS or VOLATILE attribute shall not correspond to a dummy argument that has the ASYNCHRONOUS attribute unless the dummy argument has the VALUE attribute." 322:36+ add new constraint "C1546+ An actual argument that is a coindexed object with the ASYNCH- RONOUS or VOLATILE attribute shall not correspond to a dummy argument that has the VOLATILE attribute." --END--