J3/13-312 To: J3 From: Van Snyder Subject: Specifications for US-08 -- explicit specification of EXTERNAL Date: 2013 August 21 Reference: 13-244r1 1. Requirements --------------- From 13-244r1: Currently, there is no way to require explicit specification of the external attribute. Providing such a means would aid program checking. 2. Specification ---------------- Provide a new statement or an annotation or variation of an existing statement that requires explicit declaration of the EXTERNAL attribute. If it appears in a scoping unit, it applies in nested scoping units (BLOCK constructs and internal or module procedures). This is independent from requiring explicit interface for external procedures, which is not required by this work item. 3. Syntax --------- There is as yet no consensus concerning syntax. Several proposals have been: IMPLICIT NOEXTERNAL IMPLICIT, EXTERNAL :: NONE EXTERNAL, NOIMPLICIT NO IMPLICIT EXTERNAL EXTERNAL, EXPLICIT EXPLICIT[,] EXTERNAL 4. Edits -------- None yet. Assuming it's a new statement, not a variation on an existing statement, edits might be something along the lines of [Introduction p2+] In the new list of new features, insert a list item: " o Programs and procedures: An XXX statement can require explicit declaration of the EXTERNAL attribute. " [10-007r1:287:4-] Insert a subclause "12.4.3.5a XXX statement The XXX statement specifies that the EXTERNAL attribute (5.3.9) shall be explicitly declared. R1210a <> XXX C1215a (R1210a) If an XXX statement appears within a scoping unit, a that is a in a or in that scoping unit, or within a BLOCK construct or procedure within that scoping unit, shall be explicitly declared to have the EXTERNAL attribute (5.3.9) by a type declaration statement, interface body (12.4.3.2), EXTERNAL statement (12.4.3.5), or procedure declaration statement (12.4.3.6). C1215b (R1210a) An XXX statement shall not appear in a BLOCK DATA program unit. "