J3/13-322r1 To: J3 From: Dan Nagle & David Muxworthy & Malcolm Cohen Subject: UK-10.2a,b common & equivalence Date: 2013 October 14 Reference: N1975, N1982 1. Introduction Amalgated edits for making COMMON and EQUIVALENCE obsolescent. Both the editor and the head of /DATA is adamant that as per N1975, this includes BLOCK DATA, so no straw vote will be taken. 2. Specifications Common blocks, EQUIVALENCE statements, and BLOCK DATA program units are obsolescent. 3. Syntax No change, just obsolescence. 4. Edits to 10-007r1 [intro] Add to new features list "The EQUIVALENCE and COMMON statements and the BLOCK DATA program unit have been redundant since Fortran 90 and are now specified to be obsolescent.". {Keep this list up to date.} [3:31] 1.3.8.5 linkage association, Set "or common block" in obs font. [4:26-29] 1.3.16 block data program unit, Delete. {We do not need a special term for something as obvious as this, especially after making it obsolescent. NB: This includes changing all hyperlinks to it back to normal text.} [5:35-36] 1.3.31 common block, set entirely in obs font. [5:38-39] 1.3.31.1 blank common, set entirely in obs font. {This one is a close call, deletion would be reasonable.} [9:37] 1.3.66 END statement, set "<>," in obs font. [13:16] 1.3.100 main program, set ", or block data program unit" in obs font. {Both predecessors of this paper suggested obsolescing (11.1), but that subclause is entitled "Main program"! Alternatively, replace definition with "program unit where execution of a Fortran program begins".} [15:3] 1.3.116 program unit, set ", or block data program unit" in obs font. {Both predecessors made a similar mistake here.} [25:19] 1.6.5 Fortran 77 compatibility set "that was not in a common block" in obs font. [27:11] 2.1 High level syntax, R202 program-unit, set "<>" in obs font. [27:37-39] 2.1, R1120 block-data, set all of rule R1120 in obs font. [28:46] 2.2, R212 other-specification-stmt, set "<>" in obs font. [29:2] 2.2, R212, set "<>" in obs font. [30:13] 2.2.1 Program units and scoping units, p1, set "or a block data program unit" in obs font. [30:16-17] 2.2.1p2, obs font "A block ... blocks.". [30:24+1-2] 2.2.2 Program, NOTE 2.3, delete. {This is an unnecessary forward ref to a restriction in normative text. We could set it in obs font instead, but since it is pointless delete it.} [31:18+3] 2.3.2, Table 2.1, set "BLOCK DATA" in obs font. [32:8+3-15] 2.3.2, Table 2.2, "Block data" column, set entire column in obs font. [32:15] 2.3.3 The END statement, set "end-block-data-stmt" in obs font. [35:17+3-4] 2.4.3.2.1 Variable, NOTE 2.10, set "be in COMMON or" and "common blocks and" in obs font. [45:24+2-8] 3.3.2.2, Table "Adjacent keywords", set "BLOCK DATA" and "END BLOCK DATA" in obs font. [88:11-13] 5.2.1 Type declaration statements/Syntax, C506, set "an object in a named ... blank common," in obs font. [89:12] 5.2.3 Initialization, set "that is not in a common block" in obs font. [90:26] 5.3.5 BIND attribute for data entities, p1, obs "or common block". [91:2] 5.3.5, C518, obs "common block,". [91:5] 5.3.5, C521, set entirely in obs font. [91:8] 5.3.5p2, obs "or common block". [100:5] 5.3.15 PROTECTED attribute, C550, set entirely in obs font. [101:5] 5.3.16 SAVE attribute, p3, obs "Giving ... block.". [101:6] 5.3.16, C553, obs "a common block,". [101:8] 5.3.16, C554, obs ", or an object that is in a common block". [101:9-12] 5.3.16p4, obs "common block," and "If a common ... submodule.". [102:21-22] 5.3.19 VOLATILE attribute, obs "All members ...attribute.". [103:14] 5.4.4 BIND statement, R530, obs "/<>/". [103:17] 5.4.4p1 obs "and common blocks." [104:12] 5.4.7 DATA statement, p4, obs "Except for variables in named common blocks,". [104:29-30] 5.4.7, C567, obs "in a named common ... blank common,". [108:5] 5.4.14 SAVE statement, R554, obs "/<>/". [112:4-116:29+5] obs entirety of subclause 5.7 (except for headings), except: [114:6+1-6+6] Delete unimportant uninformative note 5.43, [114:7+1-7+5] Delete unimportant uninformative note 5.44, [115:13+1-13+4] Delete note 5.45 (basic examples of COMMON), [116:29+1-29+5] Delete unimportant uninformative note 5.47. {Editor comments: we never use obsolescent font in headings.} [121:9-10] 6.5.2 Whole arrays, obs "except for the appearance ... equivalence set (5.7.1.4).". [150:13] 7.1.11 Specification expression, p2, item (3), obs entire item "an object desig... block,". [172:1] 8.1.4 BLOCK construct, C806, obs "COMMON, EQUIVALENCE,". [172:3-4] 8.1.4, C807, obs "that does not specify a ". {The rest of the constraint is not obsolescent!} [274:22+2-5] 11.2.2, NOTE 11.9, obs "a ... EQUIVALENCE statement, or", obs ", respectively", obs "a or". {The remnants, such as they are, are not obsolescent.} [275:22-276:13+7] 11.3 Block data program units, set entirely in obs font (except for headings), except for: [276:7+1-10+2] Delete unimportant uninformative Note 11.14. [276:10+1-10+11] Delete unnecessary basic example Note 11.15, [276:11+1-11+2] Delete unnecessary unimportant Note 11.16, [276:13+1-13+7] Delete trivial example Note 11.17. [288:25+1-25+3] 12.4.3.6 Procedure declaration statement, Delete uninteresting unnecessary Note 12.14. [312:30] 12.7 Pure procedures, C1283, osb "in common or". [313:9+9] 12.7, Note 12.49 obs "a common variable,". [435:3-4] 15.4.1p1, obs "with a common block or" and "common block or". [435:8-13] 15.4.1p3, set entirely in obs font ("If a common ..."). [435:14+2] 15.4.1, Note 15.23, obs "and for a common block". [435:14+4-5] ditto, obs "The Fortran common ... respectively.". [436:0+5,7-8,14-15] obs "COMMON /COM/ R, S", obs "BIND(C) :: ... /SINGLE/ T", obs "struct { ... single;". [436:2-3] 15.4.2 Binding labels for common blocks and variables, p1, obs "or common block" twice. [436:4-8] 15.4.2p2, obs "or common block" four times. [436:10] 15.4.2p3, obs "or common block". [439:22] 16.2 Global identifiers, p1, obs "common blocks,", [439:23-24] Ditto, obs "common block with no binding label,". [440:10] 16.3.1 Classes of local identifiers, p1, item (4), obs entirely ("common ... labels"). [440:15] 16.3.1p2, second bullet, obs entirely "is a common block name (16.3.2),". [441:4-5] 16.3.1p4, first bullet, obs "or to identify a common block (the latter is possible only for internal and module subroutines)". [441:8] 16.3.1p4, second bullet, obs ", or to identify a common block (the latter is possible only for internal and module functions)". [441:13-16+3] 16.3.2 Local identifiers that are the same..., obs entire [442:21] 16.4 Statement and construct entities, p3, obs "a common block name or". [442:39] 16.4p4, obs "a common block name or". {NOTE: This paragraph will be modified by the FORALL obsolescence edit.} [444:10] 16.5.1.4 Host association, p2, item (6) obs entire item "a ... ,". [444:13] 16.5.1.4p2, item (9), obs entirely "an ... ,". [446:3] 16.5.1.5 Linkage association, p1, obs ", or between a Fortran common ... interoperates (15.4)". [448:11-13] 16.5.2.5 Events that cause the association..., p1, item (8), obs entire subitems (b) and (c) "is in blank ... execution,". [449:3] 16.5.3.1 Storage association/General, p1, obs "common blocks,". [449:35] 16.5.3.2 Storage sequence, p4, obs entirely "Each common ... sequence (5.7.2.2).". [450:2+1-13] 16.5.3.3 Association of storage sequences, NOTE 16.13, Delete unnecessary obsolete example. [450:8-9] 16.5.3.4 Association of scalar data objects, p2, obs sentence "An EQUIVALENCE ... sequences.". {This sentence is currently partially obsolescent.} [450:10-19] 16.5.3.4p3-p5, obs all 3 paras "An EQUIVALENCE ... units.". [450:27-28] 16.5.3.4p8, obs "For noncharacter ... statements.". {This sentence is already partially obsolescent.} [450:28-29] Ditto, obs "or the use of COMMON ... statements.". [450:0+1-17] 16.5.3.4, Note 16.14, Delete unnecessary obsolete example. [450:2+1-5] 16.5.3.4, Note 16.15, Delete unnecessary obsolete example. [455:4-10] 16.6.6 Events that cuase variables to become undefined, p1, obs entire item (1) "With the exceptions ... undefined.". {Can only happen via COMMON/EQUIVALENCE/ENTRY.} [455:16-18] 16.6.6p1, item (3), subitem (b) obs "unsaved variables in a named ... common block,". {But the "and" remains outside the \obs.} [465:26+] B.2 Obsolescent features, append new subclause: "B.2.nn COMMON and EQUIVALENCE statements and BLOCK DATA program unit 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:5-9] C.8.3.1 Identical common blocks (11.2.1), obs entire subclause except for heading. ===END===