J3/13-339 To: J3 From: David Muxworthy Subject: UK-10 - New deletions and obsolescences (in part) Date: 2013 September 30 Requirements and rationale -------------------------- See N1975. Specifications -------------- Delete arithmetic IF, shared DO termination, and DO termination other than on CONTINUE and ENDDO. Obsolesce EQUIVALENCE, COMMON, label on block DO, specific intrinsics, FORALL. Edits (relative to 10-007r1) ---------------------------- [intro] Add as appropriate: - The arithmetic IF statement, shared DO termination and termination of a DO block on a statement other than END DO or CONTINUE have been obsolescent since Fortran 90 and have been deleted from this part of ISO/IEC 1539. - The EQUIVALENCE and COMMON statements and the BLOCK DATA program unit have been redundant since Fortran 90 and have been specified to be obsolescent this part of ISO/IEC 1539. Similarly specific names for intrinsic functions, the labelled DO construct and the FORALL construct and the FORALL statement are deemed to be obsolescent this part of ISO/IEC 1539. ---------------------------------------------------------------------- Edits for deletions from the standard are not included here. ---------------------------------------------------------------------- {Edits for EQUIVALENCE, COMMON and BLOCK DATA} [3:31] Set "or common block" in obsolescent font. [4:26-29] Set all of item 1.3.16 in obsolescent font. [5:34-39] Set all of items 1.3.31 and 1.3.31.1 in obsolescent font. [9:37] Set "<>" in obsolescent font. [13:16] Set ", or block data program unit (11.1)" in obsolescent font. [15:3] Set ", or block data program unit (2.2.1)" in obsolescent font. [27:11] Set "<>" in obsolescent font. [27:37-39] Set all of rule R1120 in obsolescent font. [28:46] Set "<>" in obsolescent font. [30:13] Set ", or block data program unit" in obsolescent font. [30:16,17] Set the sentence "A block data program unit is used ... named common blocks." in obsolescent font. [30:24+1,24+2] Set all of Note 2.3 in obsolescent font (or delete it - I am not sure of the policy on this). [31:18+3] In the header of Table 2.1 set "BLOCK DATA" in obsolescent font. [32:15] Set "end-block-data-stmt" in obsolescent font. [35:17+3:17+40 Set "COMMON" and "common blocks" in obsolescent font. [45:24+2, 24+8] In the table, set "BLOCK DATA" and "END BLOCK DATA" in obsolescent font. [88:11-13] Set "an object in a named common block unless the type declaration is in a block data program unit, an object in blank common," in obsolescent font. [89:12] Set "that is not in a common block" in obsolescent font. [90:26] Set "or common block" in obsolescent font. [91:2] Set "common block," in obsolescent font. [91:5] Set all of constraint C521 in obsolescent font. [91:8] Set "or common block" in obsolescent font. [100:5] Set all of constraint C550 in obsolescent font. [101:5] Set the sentence "Giving a common block the SAVE attribute confers the attribute on all entities in the common block." in obsolescent font. [101:6] Set "common block," in obsolescent font. [101:8] Set "or an object that is in a common block" in obsolescent font. [101:9] Set "common block," in obsolescent font. [101:10-12] Set the sentence "Giving a common block the SAVE attribute confers the attribute on all entities in the common block." in obsolescent font. [102:21] Set the sentence "If a common block has the SAVE attribute ... submodule." in obsolescent font. [103:14] Set "<>" in obsolescent font. [103:17] Set "and common blocks" in obsolescent font. [104:12] Set "Except for variables in named common blocks," in obsolescent font. [104:29-30] Set "in a named common block unless the DATA statement is in a block data program unit, in blank common," in obsolescent font. [108:5] Set "<>" in obsolescent font. [112:1 - 116:29+5] Set all of subclause 5.7 in obsolescent font except that Note 5.43 (at [114:6+1-6+6), Note 5.44 (at [114:7+1-7+5], Note 5.45 (at [115:13+1-13+4] and Note 5.47 (at [116:29+1-29+5]) should be deleted. [121:9,10] Set "except for the appearance of a whole array designator in an equivalence set (5.7.1.4)" in obsolescent font. [150:13] Set item (3) of the list, i.e. "an object designator with a base object that is in a common block," in obsolescent font. [172:1] Set "COMMON, EQUIVALENCE," in obsolescent font. [172:3,4] Set all of constraint C807 in obsolescent font. [274:22+2,22+3] Set "a common-block-object in a COMMON statement, an equivalence-object in an EQUIVALENCE statement," in obsolescent font. [274:22+5] Set "a common-block-name" in obsolescent font. [275:22-276:13+7] Set all of subclause 11.3 in obsolescent font, except for Notes 11.14 (at [276:7+1-10+2]), 11.15 (at [276:10+1-10+11]), 11.16 (at [276:11+1-11+2]) and 11.17 (at [276:13+1-13+7]) which should be deleted. [288:25+1-25+3] Delete Note 12.14. [312:30] Set "in common" in obsolescent font. [313:9+9] Set "a common variable" in obsolescent font. [435:3,4] Set "a common block" and "common block" in obsolescent font. [435:8-13] Set all of paragraph 3 ("If a common block is specified in a BIND statement, ... with the C variable." in obsolescent font. [435:14+2-436:0+12] Set all of Note 15.23 in obsolescent font. [436:1] Set "common blocks" in the heading in obsolescent font. [436:2,3] Set "common block" in obsolescent font twice in paragraph 1. [436:4-8] Set "common block" in obsolescent font four times in paragraph 2. [439:22] Set "common blocks," in obsolescent font. [439:23-25] Set the sentence "The name of a common block with ... a global identifier." in obsolescent font. [440:10] Set all of item (4) in the list in obsolescent font. [440:15] Set all of the second bulleted item ("is a common block name (16.3.2)") in obsolescent font. [441:4,5] Set "or to identify a common block (the latter is possible only for internal and module subroutines)" in obsolescent font. [441:8] Set ", or to identify a common block (the latter is possible only for internal and module functions)" in obsolescent font. [441:12-16+3] Set all of subclause 16.3.2 in obsolescent font. [442:21] Set "a common block name or" in obsolescent font. [442:39] The edit for common blocks needed here is subsumed under the edits for FORALL. [444:10] Set all of item (6) in obsolescent font. [444:13] Set all of item (9) in obsolescent font. [446:3] Set "interoperates, or between a Fortran common block and the C variable with which it interoperates (15.4)" in obsolescent font. [448:11,12] Set all of items (8)(b) and (8)(c) in obsolescent font. [449:3] Set ", common blocks" in obsolescent font. [449:35] Set "Each common block has a storage sequence (5.7.2.2)." in obsolescent font. [450:2+1-2+13] The standard does not include obsolescent statements in sample code. Therefore Note 16.13 should be deleted. [450:8] Set the sentence "An EQUIVALENCE statement, a COMMON statement, ... storage sequence." in obsolescent font. [450:10-19] Set all of paragraphs 3, 4, and 5 ("An EQUIVALENCE statement ... of storage units") in obsolescent font. [450:27-29] Set "For noncharacter entities, partial association may occur only through the use of COMMON, EQUIVALENCE," and "or the use of COMMON or EQUIVALENCE statements" in obsolescent font. [450:0+1-2+17] Delete Note 16.14 [450:2+1-2+5] Delete Note 16.15 [455:16-18] Set all of item (3)(b) in obsolescent font. [465:26+] Add new subclause: COMMON blocks are error-prone and have largely been superseded by MODULEs. EQUIVALENCE similarly is error-prone. Whilst use of these statements was invaluable prior to Fortran 90 they are now redundant and can inhibit performance. BLOCK DATA exists only to serve common blocks and hence is also redundant. [495:4-9] Set all of subclause C.8.3.1 in obsolescent font. ------------------------------------------------------------------------- Edits for obsolescing label on block DO are not included here. ------------------------------------------------------------------------- {Edits for specific intrinsics} [88:28] Set "There following a discussion on this subject." in obsolescent font. [98:4] Set "a specific name (13.6)," in obsolescent font. [98:5-99:2] Set all of paragraph 2 in obsolescent font. [99:5] Set "and the specific intrinsic procedures" in obsolescent font. [99:6] Set "the specific intrinsic procedures and" in obsolescent font. [159:1,2] Set "or a specific intrinsic function listed in 13.6 and not marked with a bullet (.)" in obsolescent font. [287:30-31] Set ", or a specific intrinsic function listed in 13.6 and not marked with a bullet (.)" in obsolescent font. [290:19-20] Set "a specific intrinsic function listed in 13.6 and not marked with a bullet (.)," in obsolescent font. [298:16-17] Set ", or a specific intrinsic function listed in 13.6 and not marked with a bullet (.)" in obsolescent font. [303:14-15] Set all of list item (3) in paragraph 3 in obsolescent font. [313:1] Set the sentence "The dummy arguments of the specific intrinsic procedures in 13.6 have INTENT (IN)." in obsolescent font. [315:23,24] Set the sentence "If an intrinsic procedure does not have a specific name, it shall not be used as an actual argument (12.5.2.9)." [316:1] Set the sentence "The dummy arguments of the 1 specific intrinsic procedures in 13.6 have INTENT (IN)." in obsolescent font. [323:13-325:0+30] Set all of subclause 13.6 in obsolescent font. [465:26+] Add new subclause: Specific names for standard intrinsic functions Specific names for intrinsic functions are redundant. It is potentially confusing that some intrinsic functions have specific names while others do not. ---------------------------------------------------------------------- Edits FORALL are not included here. ----------------------------------------------------------------------