To: J3 Members J3/16-278 From: Van Snyder Subject: Comment on scope of argument keywords References: 16-007r2 Date: 2016 October 04 1. Introduction --------------- 19.3.5p1 specifies that the scope of argument keywords is the scoping unit that is the host of the explicit interface definition. 19.3.5p2 specifies that the scope of argument keywords of an intrinsic procedure is the scoping unit in which the reference appears. Structure components have a scope of their type definition instead of the scoping unit containing their type definition, and there is an explanation in 19.3.4 how they can be used by qualifying them with an accessible data object. 19.3.5p2 restricts the use of argument keywords to procedure references. This is different from the explanation how structure components can be used by qualifying them with an accessible data object. Since argument keywords can only be used in a reference to a procedure, there seems to be no reason why they need broader scope. It would be simpler if they had a scope of the reference. The scope wouldn't be different for intrinsic procedures, procedures defined by subprograms, interfaces defined by interface bodies, and interfaces inferred from procedure declaration statements that specify explicit interface. It wouldn't be necessary to explain how they are indirectly accessible by use or host association of the procedure. It wouldn't be necessary explicitly to restrict their use to procedure references because no entity can be used outside a scope where it is accessible. 2. Edits -------- [513:34-514:5 19.3.5p1-2] Replace the text of the subclause: "As an argument keyword, a dummy argument name has a scope of the procedure reference in which it appears." Maybe insert a NOTE: "NOTE 19.3 Argument keywords are determined by dummy argument names of intrinsic procedures, or in an explicit interface that is accessible where the procedure is referenced." or a more loquatious NOTE: "NOTE 19.3 Argument keywords are determined by dummy argument names of intrinsic procedures, or in an explicit interface that is accessible where the procedure is referenced. An explicit interface that is specified by an interface body might use dummy argument names that are different from the definition of the procedure, or different from an explicit interface in a different scoping unit."