Attributes

Attributes are used to provide additional information about elements within your program.

attribute-clause

constructor-parameters property-name = property-value

Example

*> Attribute on a class
class-id Attributes
    attribute Author(name AuthorName = "Benjamin Franklin").


*> Attribute on a field
01 book string attribute Author(name AuthorName = "Benjamin Franklin").

*> Attribute on a property
01 bookProperty string property
    attribute Author(name AuthorName = "Benjamin Franklin").


*> Attribute on a method and argument
method-id GetAnotherBook
    attribute Author(name AuthorName = "Benjamin Franklin")
    (arg1 as string
        attribute Author(name AuthorName = "Benjamin Franklin"))
    returning return-value as string.
        set return-value to book
end method.

end class.

*> Attribute definition
 attribute-id AuthorAttribute public.
 01 AuthorName string property.

end attribute.

To Specify Attributes

You can specify attributes using:

constructor parameters
These specify the parameters of a constructor for that attribute. The constructor parameters used in the attribute specification must match a constructor defined by the attribute. In the following example, the constructor expects a single parameter of type string:
 01 a binary-long attribute xml("UpperB").
NAME property-name = property-value
These are named parameters and correspond to properties defined on the attribute class. The named parameters must match properties defined by the attribute. In the following example, Description is a property of type string defined for the attribute class WebService:
attribute WebService(NAME Description="My service")

About Attributes

Attributes (also known as custom attributes) are used to provide additional information about elements within your program. Attributes may be used to describe methods, data items, properties, events, delegates, method parameters, assemblies, classes and method return values.

Much of the syntax used in a COBOL program describes program elements, such as the visibility of methods and fields (such as PUBLIC, PRIVATE and PROTECTED). All these descriptions are embedded as ‘Metadata’ into the dll or exe file output by the Compiler, and can be interrogated by other programs using Reflection. Attributes are a way of adding additional metadata to program elements in a way that is open ended and unlimited.

The attribute specified becomes part of the metadata describing the subject of the entry and is visible to a reflector.