J3/05-241r1 To: J3 From: Dan Nagle Subject: Deleting statement functions Date 2005 July 26 At Delft, it was decided to delete the obsolescent feature statement functions. This paper attempts to provide edits to do so. Edits consist of deleting all references to statement functions in page order throughout 007. A paragraph is moved within the appendix. Edits are also provided to add a new paragraph to Section 1 describing the deleted feature. Thanks to Van and Dick for useful comments, which are incorporated herein. Edits: [iv] delete "12.5.4 Statement functions" and page number [viii] delete "B.2.3 Statement functions" and page number [3:9+] Add a new subsection before the current 1.6.1: "1.6.1 Fortran 2003 compatibility Except as identified in this section, this standard is an upward compatible extension to the preceding Fortran International Standard, ISO/IEC 1539-1:2004 (Fortran 2003). Any standard-conforming Fortran 2003 program remains standard-conforming under this standard. The following Fortran 2003 features may have different interpretations in this standard: (1) Earlier Fortran standards had the concept of statement functions. These had peculiar scoping rules and did not conform to programmer's expectations in other ways. Since Fortran 90, they have been superseded by contained functions. Statement functions have been deleted in this standard." [10:16] delete "or stmt-function-stmt" [14] "and statement function statements" from table 2.1 (middle right column) [14] "statement function statements" and row from table 2.2 [41:18-19] delete C421 [73:7] delete ", or a statement function" [126:6] delete ", is not a statement function" [250] in Note 11.4, delete "statement function definitions, " [250:20] delete ", or stmt-function-stmt" [255:26] delete ", or a statement function" [256:14-15] delete the section 12.1.2.5 [257:19] delete the sentence "The interface of a statement function is always implicit." [257:23] delete "other than a statement function" [259:12-13] replace ", or " by "or " [276:35-36] replace "internal subprogram, or statement function" by "or internal subprogram" [278:14] replace ", internal subprogram, or statement function" by "or internal subprogram" [282:32] delete the sentence "When a statement function is invoked, an instance of that statement function is created." [282:34] delete "or statement function" [282:35] delete "or statement function" [282:36-37] delete "or statement function" [284:1-3] delete the paragraph [285:9] delete section 12.5.4 [286:8] delete the line "(4) A statement function that references only pure functions." [286:19] in C1270 replace "neither an intrinsic procedure nor a statement function" by "not an intrinsic procedure" [406:5] delete ", statement functions" [409:14] delete "as a dummy argument in a statement function statement," [409:30-32] delete the paragraph [411:14] delete "or statement function" [411:24-25] replace "in an , or in a " by "or in an " [429:10] delete "statement function," [430:28] delete "A statement function always has an implicit interface." [433:25] delete "or a statement function," [434:2} delete ", or is a statement function that references only pure functions" [435:4-5] delete the definition [438:10] delete the line and renumber [438:36-40] move to [437:32+] and renumber [510] delete C421 [516] delete C521 [542] delete C1260 through C1265 [543] in C1270, replace "neither an intrinsic procedure nor a statement function" by "not an intrinsic procedure" [567] delete "statement functions" twice (once with upper case initial)