Function attributes

Function attributes can be used to add definition information about the function, its parameters and its return values.

Syntax

In type specifications, the attributes-list clause is:
{ ATTRIBUTE | ATTRIBUTES } ( attribute [ = "value" ] [,...] )
  1. attribute is the name of a definition attribute.
  2. value is the value for the definition attribute, it is optional for boolean attributes.

Purpose of function attributes

Function attributes can be used to define properties for the function itself, for the parameters accepted by the function, and for the returned values/types.

Function attributes are typically used to define RESTful Web services (high-level framework).

Usage

Function, parameter and return value attributes are specified with the ATTRIBUTES() clause. The ATTRIBUTES() clause contains a comma-separated list of attributes. An attribute can be a name=value pair, or single name for a boolean attribute:
ATTRIBUTES( WSScope='book.write', WSPut, WSPath='{id}', ... )
The ATTRIBUTES() clause can be specified:
  • after a type of parameter in the ( ) parameter list, to define parameter attributes.
  • after the closing brace of the parameter list, to define function attributes.
  • after a type in the RETURNS clause, to define return value attributes.

Example

TYPE profileType RECORD ... END RECORD

PUBLIC FUNCTION UpdateUserProfile(
    id STRING ATTRIBUTE(WSParam),
    thisUser profileType )
  ATTRIBUTES (WSPut,
              WSPath="/users/{id}",
              WSDescription="Update user with the given id",
              WSThrows='404:user not found')
  RETURNS STRING
    DEFINE ret STRING
    # ... function code  ...
    LET ret = SFMT("Updated user with ID: %1",id)
    RETURN ret
END FUNCTION