To: J3 J3/18-251 From: Jon Steidel Subject: Interp: Are internal procedures allowed in generic interface blocks? Date: 2018-September-27 NUMBER: F18/xxxx TITLE: Internal procedures in generic interface blocks KEYWORDS: Internal procedure, generics, interface block DEFECT TYPE: Defect STATUS: New QUESTION: An internal procedure is allowed in a GENERIC statement, but can it appear in an a generic interface block? Section 15.4.3.4.1 (12.4.3.4.1 in F2008) Generic identifiers p1 states "A generic interface block specifies a generic interface for each of the procedures in the interface block. The PROCEDURE statement lists procedure pointers, external procedures, dummy procedures, or module procedures that have this generic interface." ANSWER: Yes, an internal procedure is intended to be allowed in a generic interface body. In F2003, Section 12.3.2.1 Interface Block has rule R1206 is [MODULE] PROCEDURE with constraint C1270 "A shall have an exlicit interface and shall refer to an accessible procedure pointer, external procedure, dummy-procedure, or module procedure." Edits in paper 05-202r1 allowed internal procedures to be passed as actual arguments and to be targets of procedure pointers. This meant an internal procedure could be the target of a procedure pointer which was specified in a generic interface body. Paper 08-178 asked the question "What is the point of excluding internal procedure in C1207?" and replaced C1207 with "A shall be a nonintrinsic procedure that has an explicit interface." The normative text cited in the question was not modified. This was an oversite. An edit are provided to correct the normative text. EDITS to xx-007: 15.4.3.4.1 Generic identifiers p1 second sentence "procedure pointers, external procedures, dummy procedures, or module procedures" => "nonintrinsic procedures with explicit interfaces" This makes the sentence read: "The PROCEDURE statement lists nonintrinsic procedures with explicit interfaces that have this generic interface." SUBMITTED BY: Jon Steidel HISTORY: