J3/00-130 Date: 28th February 2000 To: J3 From: Malcolm Cohen Subject: Abstract interface blocks 1. Missing semantics There is no specification as to how abstract interfaces get their characteristics, and what the relationship is between an abstract interface and an explicit interface created by a PROCEDURE statement. Also, some of the old semantics for an interface body assume that it is always creating an explicit specific interface. Also, there is unnecessary duplication of semantics between an explicit specific interface created by an interface body and one created by a PROCEDURE statement - we should just say that these are the same. Also, there is an editorial fixup. 2. Edits - intro Part 1 of the solution is to split the paragraph at [247:14-21] into two, the first of which tackles issues common to abstract interfaces and explicit specific interfaces, the second of which addresses explicit specific interfaces only. Also, the prohibition against ENTRY appearing in an interface block (sic - should be body) is better done as a constraint. 3. Edits [246:11+] Insert constraint "Constraint: An interface body shall not contain an ENTRY statement." {If this is not desirable as a constraint it needs to be re-inserted into the main text.} [247:4] Delete ";". {Editorial fixup.} [247:14-21] Replace with the following two paragraphs: "An interface body specifies all of the characteristics of the explicit specific interface or abstract interface. The specification part of an interface body may specify attributes or define values for data entities that do not determine characteristics of the procedure. Such specifications have no effect. If an explicit specific interface is created by an interface body or a procedure declaration statement for an external procedure, the characteristics shall be consistent with those specified in the procedure definition except that the interface may specify a procedure that is not pure if the procedure is defined to be pure. An interface for a procedure defined by an ENTRY statement may be specified by using the entry name as the procedure name in the interface body. A procedure shall not have more than one explicit specific interface in a given scoping unit." {Split into common case and specific case. Add explicit inclusion of procedure declaration statement.} [253:17+] Insert "All of the characteristics of the explicit specific interface are specified by the , and are those of the abstract interface." {Specify where the characteristics come from.} [253:17-20] Delete "If ... pure." {Delete now redundant requirements.} ===END