To: J3 J3/15-165 Subject: Is it intended to allow TYPE(*) in SELECT TYPE? From: Van Snyder Reference: 15-007r1 Date: 2015 June 07 1. Introduction =============== C837, on SELECT TYPE, says the shall be polymorphic. 4.3.2.2p3 says an assumed-type entity -- one declared using TYPE(*) -- is unlimited polymorphic. C410 prohibits an assumed-type entity from appearing in a designator or expression, except as a dummy argument in a few cases. This prohibits it from being a subscript, cosubscript, or substring designator (which are already prohibited because these are required to be integers). Therefore, an assumed-type entity is allowed to be the in a SELECT TYPE statement. But (apparently), the dynamic type of an assumed-type entity is unknowable. Either assumed-type entities should not be unlimited polymorphic, the in a SELECT TYPE statement should be prohibited to be of assumed type, or an assumed-type entity should be prohibited _AS_ a designator, not just _IN_ a designator. 2. Edits ======== {The specification that assumed-type entities are polymorphic came from subclause 9.4 on page 34 of N1904, TS 29113, "Further Interoperability of Fortran with C." We don't do interps or publish corrigenda on Technical Specifications. Should this difference from TS 29113 be brought to readers' attention?} [xviii Introduction under "Data usage and computation"] Insert a sentence: "An assumed-type entity is not allowed as the in a SELECT TYPE statement; assumed type was introduced in ISO/IEC TS 29113, not ISO/IEC 1539-1:2010." [54:13 C410] Replace "in a designator or expression" with "as a designator or in an expression," Alternatively [54:13 C410] Delete "in a designator or expression". Alternatively [186:7 C837] After "polymorphic" insert "and not of assumed type".