Sub (Member)

Declares or defines a member procedure

Syntax
   { Type | Class | Union } typename
      Declare [ Static | Const ] Sub fieldname [calling convention 
      specifier] [ Alias external_name ] ( [ parameters ] ) [ Static ] 
   End { Type | Class | Union }

   Sub typename.fieldname ( [ parameters ] ) [ Export ]
      statements
   End Sub

Parameters
   typename 
      name of the Type, Class, or Union
   fieldname 
      name of the procedure
   external_name
      name of field as seen when externally linked
   parameters 
      the parameters to be passed to the procedure
   calling convention specifier	
      can be one of: cdecl, stdcall or pascal

Description
   Sub members are accessed with Operator . (Member Access) or 
   Operator -> (Pointer To Member Access) to call a member procedure and 
   may optionally accept parameters either ByVal or ByRef.  typename be 
   overloaded  without explicit use of the Overload keyword.

   typename is the name of the type for which the Sub method is declared 
   and defined.  Name resolution for typename follows the same rules as 
   procedures when used in a Namespace.

   A hidden This parameter having the same type as typename is passed to 
   non-static member procedures.  This is used to access the fields of the 
   Type, Class, or Union.
   To access duplicated symbols defined as global outside the Type, add one 
   or preferably two dot(s) as prefix: .SomeSymbol or preferably ..
   SomeSymbol (or only ..SomeSymbol if inside a With..End With block).

   A Static (Member) may be declared using the Static specifier.  A 
   Const (Member) may be declared using the Const specifier.

Example
   Type Statistics
     count As Single
     sum As Single
     Declare Sub AddValue( ByVal x As Single )
     Declare Sub ShowResults( )
   End Type

   Sub Statistics.AddValue( ByVal x As Single )
     count += 1
     sum += x
   End Sub

   Sub Statistics.ShowResults( )
     Print "Number of Values = "; count
     Print "Average          = ";
     If( count > 0 ) Then
      Print sum / count
     Else
      Print "N/A"
     End If
   End Sub

   Dim stats As Statistics

   stats.AddValue 17.5
   stats.AddValue 20.1
   stats.AddValue 22.3
   stats.AddValue 16.9

   stats.ShowResults

Output:

   Number of Values =  4
   Average          =  19.2

Dialect Differences
   * Only available in the -lang fb dialect.

See also
   * Class
   * Function (Member)
   * Sub
   * Type

