J3/14-137 To: J3 Subject: C1293 (constraint on pure subprograms) From: Van Snyder Date: 2014 April 01 1. Introduction =============== C1293 [316:7-19] says "In a pure subprogram any designator with a base object that is in common or accessed by host or use association, is a dummy argument of a pure function, is a dummy argument with the INTENT (IN) attribute, is a coindexed object, or an object that is storage associated with any such variable, shall not be used (1) in a variable definition context (16.6.7), (2) as the in a , (3) as the corresponding to a component with the POINTER attribute in a , (4) as the of an intrinsic assignment statement in which the variable is of a derived type if the derived type has a pointer component at any level of component selection, (5) as the in a SOURCE= clause if the designator is of a derived type that has an ultimate pointer component, or (6) as an actual argument corresponding to a dummy argument with INTENT (OUT) or INTENT (INOUT) or with the POINTER attribute. C1282 requires a dummy argument of a pure function to have the INTENT(IN) or VALUE attribute. There is no constraint similar to C1293 concerning local variables of pure subprograms. Dummy arguments with the VALUE attribute are effectively local variables. Therefore, for a dummy argument of a pure function has the VALUE attribute, there is no problem that is solved by C1293. Therefore, it is enough for C1293 to have "is a dummy argument with the INTENT (IN) attribute". It doesn't need "is a dummy argument of a pure function". 2. Edits to 14-007 ================== [316:8] Delete ", is a dummy argument of a pure function" [316:9] Insert "is" before "an" (for consistency with the rest of the sentence). [316:16] Replace "clause" with "specifier".