08-235r2 To: J3 From: Michael Ingrassia Subject: Public Comment J32021 Date: 2008 August 14 ---------------------------------------------------------------------- Commenter: Robert Corbett Subject: "Allow compatible specific interfaces" Constraint C1201 in Section 12.4.3.2 of the Fortran 2008 draft is detested by many users. That constraint should be eliminated. The standard already requires that the characteristics specified by the interface body must match those of the subprogram definition (see paragraph 7 of Section 12.4.3.2). That requirement should be elevated to a constraint for this specific case. Constraint C1201 might be replaced with c1201 (R1201) If an interface block contains an interface-body for a procedure defined by that subprogram, the characteristics of the specific interface defined by the interface-body 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. Some users write modules containing interface blocks describing the external procedure used in their program. They then use that module in all the external subroutines and functions in their program. Most of them have by now learned to use renaming to avoid problems with constraint C1201, but they don't like it. They would like the information from the interface block created for a procedure to be visible and used for checking in the subprogram that defines that procedure. ---------------------------------------------------------------------- J3 response: J3 agrees this would be a useful feature. The proposed constraint is not, on its own, adequate. J3 has identified some editorial changes that would be necessary to implement this feature (see 08-235r1), but J3 is not confident that all necessary changes have been identified at this time. Since SUBROUTINE and FUNCTION are optional on END statements for module procedures in the current draft, a better solution for the illustrative problem the commenter presented is to create module procedures from external procedures by using INCLUDE lines.