J3/17-239 To: J3 From: Malcolm Cohen Subject: Comments 50, 56, 61 Date: 2017 October 17 1. Introduction These comments address deficiencies in the exposition of "recursive", which are even more apparent now that procedures can be called recursively by default. The defects are twofold: (1) declaration is NON_RECURSIVE not RECURSIVE; (2) "recursive" means that it calls itself; this is not a static attribute. These edits have no bearing on the recursivity or otherwise of CHARACTER*(*) functions, as these are specified elsewhere not to be capable of recursion (whether they have NON_RECURSIVE or not). 2. Edits to 17-007r2 (N2137) [303:7] 15.4.1 Interface and abstract interface, p1, After "and whether" change "is recursive" to "has the NON_RECURSIVE attribute". Making that sentence read: "The characteristics and binding label of a procedure are fixed, but the remainder of the interface may differ in differing contexts, except that for a separate module procedure body (15.6.2.5), the dummy argument names and whether it has the NON_RECURSIVE attribute shall be the same as in its corresponding module procedure interface body (15.4.3.2)." [329:28] 15.6.2.1 General, p2, After "specified to" insert "have the NON_RECURSIVE attribute, or to", and later delete "recursive,", Making the whole paragraph read: "A subprogram is specified to have the NON_RECURSIVE attribute, or to be elemental (15.8), pure (15.7), or a separate module subprogram (15.6.2.5) by a prefix in its initial SUBROUTINE or FUNCTION statement." [333:32-33] 15.6.2.5 Separate module procedures, p3, Change "It is recursive if and only if it is declared to be recursive" to "It has the NON_RECURSIVE attribute if and only if it was declared to have that attribute", and change ", and if" to ". If" making the whole (now two) sentence(s) read: "It has the NON_RECURSIVE attribute if and only if it was declared to have that attribute by the interface body. If it is a function its result name is determined by the FUNCTION statement in the interface body." ===END===