The .NET environment allows so called "attributes" to be attached to a variety
of program entities - such as routine names. These attributes can hold any
amount of arbitrary information that can be interrogated at run time.
The FTN95 ATTRIBUTE statement is used to attach attributes to parts of a Fortran
program. For example:
This will attach an attribute to the routine in which it is contained. Possible
values for TARGET are:
"ROUTINE" - Attach attribute to routine under construction.
"CLASS" - Attach attribute to the containing class.
"ASSEMBLY" (the default target) - Attach attribute to the assembly as a whole.
The extra, non-keyword, arguments must be constant expressions and supply
arguments to the attribute. In the above example one 3-element integer array
argument is supplied.
If the routine contains an ASSEMBLY_INTERFACE statement, then TARGET="ROUTINE"
attaches the attribute to the interface routine (which will be the externally
Attributes are classes and must already exist in the .NET environment or be
created in C#, for example. For convenience, FTN95 provides the
SalfordUserInfoAttribute (as used above), and this can take a scalar or
1-dimensional array of type INTEGER, REAL, DOUBLE, LOGICAL (converted to bool),
or CHARACTER (converted to string).