J3/05-135 To: J3 From: Dan Nagle Subject: USE ..., NOT: ... Date: 2005 Jan 19 With large modules with many names, perhaps long names, it may be difficult, unclear or inconvenient to use most of the names present while excluding a few (perhaps to prevent collisions). Adding a NOT clause to the USE statement solves the problem. This feature is proposed in response to an informal Fortran 2003 comment from Australia (no formal comment was received). At 167 the Hate .. Love vote was 1 - 1 - 8 - 2. The difficulty on the John Reid scale was 4. Number: Title: USE NOT: Submitted By: J3 Status: For Consideration References: J3/03-106, J3/04-114 Basic Functionality: A syntax to list names not to have use association when using a module. Rationale: When using a module with many public names, a few may be unwanted. Specifying those few is easier than naming the many wanted names, and less ugly than fanciful renames. Estimated Impact: 4 on the John Reid scale at 167 Detailed Specification: Add a clause to the USE statement specifying names not available via use association. If NOT: is present, ONLY is not, and there are no renames. (It makes no sense to say "don't use this name, and call it 'foo'". Possible edits follow: [251:20+] Add: "*or* USE [[, ] :: ] [, ] , NOT: [ ] [251:29+] " *is* *or* " [252:7+] Add: "C1115+ (R1109) If ONLY: appears, NOT: shall not appear; if NOT: appears, ONLY: shall not appear." [252:14+] Add: "A USE statement with the NOT option provides access to all those entities that appear as generic-specs, use-names, or use-defined-operators except those appearing in the not-list." History: J3/03-106, J3/04-114