To: J3 J3/26-181 From: Malcolm Cohen Subject: Intrinsic procedure/module procedure argument intents Date: 2026-June-16 1. Introduction 17.2.1 General rules (for 17.2 Arguments to intrinsic procedures), paragraph 3 states that the arguments "have INTENT(IN) if the intent is not stated explicitly". However, all the intrinsic subroutines state the intent of their arguments even when they are INTENT(IN). Thus this rule applies only to functions. Also, some intrinsic subroutines have procedure arguments, which cannot have any intent, so the existing text is quite misleading. Although no functions have a procedure argument at present, it would be a good idea to change this to say "dummy data objects" in case we add such a function in future. I note that there are at least two functions which have arguments that are not INTENT(IN), NEXT and PREVIOUS. Neither function states the intent of their INTENT(IN) argument. Therefore, the redundancy between p3 and the intrinsic subroutines can be removed by changing "procedures" to "functions". Furthermore, there is no default rule for arguments of procedures in the intrinsic module ISO_FORTRAN_ENV, but the expected INTENT(IN) is not stated explicitly. A default rule is needed. There is a default rule for the IEEE_* modules, so they are okay. There is no default rule for the ISO_C_BINDING procedures, so one is also needed there. Edits are provided to correct these defects. 2. Edits to 26-007r1 [421:3-4] 17.2.1 General rules, p3, change "dummy arguments of the intrinsic procedures" to "dummy data objects of the intrinsic functions". {None of the functions have a procedure argument, but let's future-proof it.} [552:18+] 17.10.2.1 General (in 17.10.2 The ISO_FORTRAN_ENV intrinsic module", insert new paragraph 3 at the end of this subclause: "The dummy data objects of the procedures in the intrinsic module ISO_FORTRAN_ENV have INTENT (IN) if the intent is not stated explicitly." {Future-proof in case we add a procedure with a procedure argument.} [605:14+] 19.2.3.1 General (in 19.2.3 Procedures in the module), insert new paragraph 2 at the end of this subclause: "The dummy data objects of the procedures in the intrinsic module ISO_C_BINDING have INTENT (IN) if the intent is not stated explicitly." {We really do need to say "data objects" here, because C_FUNLOC has a procedure argument.} ===END===