08-226 To: J3 From: Michael Ingrassia Subject: Public Comment J32012 Date: 2008 July 08 ---------------------------------------------------------------------- Commenter's Subject was "attributes" The Fortran 2008 draft states that attributes are properties of entities. That definition does not precisely cover all uses of attributes. Attributes are properties of names. The attributes of a name usually reflect properties of the entity named by the name, but not always. Consider the following program: REAL FUNCTION F() F = 1.0 END MODULE MOD EXTERNAL F REAL F END SUBROUTINE SUBR(F) EXTERNAL F END PROGRAM MAIN USE MOD, G => F X = F(X) CALL SUBR(F) ! not standard conforming CALL SUBR(G) END In the main program, the name F is known to be the name of an external function, but it does not have an explicit interface and it is not declared to have the EXTERNAL attribute. The name G is declared to have the EXTERNAL attribute, and so it can be used as an actual argument. Both F and G name the same function, but only G is declared to have the EXTERNAL attribute. Therefore, the EXTERNAL attribute must be a property of the name, not the function. The attributes ASYNCHRONOUS and VOLATILE also are attributes of names that do not specify properties of the entities names. ----------------------------------------------------------------------