Procedures

Keywords that work with procedures.

Description
   These keywords control the declaration and definition of both 
   module-level procedures and member procedures, how they are called, how 
   arguments are passed and how their names are seen externally to other 
   modules. Procedures can also be declared to be executed automatically 
   before any module-level code is executed.

Declaration
   Keywords that declare and define procedures.
Linkage
   Keywords that specify how procedure names are seen by external modules.
Calling conventions
   Keywords that specify how arguments are used when calling procedures.
Parameter passing conventions
   Keywords that specify how arguments are passed to procedures.
Variadic Procedures
   Macros that allow for an arbitrary number of arguments to be passed to a 
   procedure.
Automatic execution
   Keywords that specify automatic execution of procedures.
Miscellaneous
   Miscellaneous keywords.

Declaration
   Declare
      Declares a module-level or member procedure.
   Sub
      Specifies a procedure that does not return an argument.
   Function
      Specifies a procedure that returns an argument.
   Overload
      Specifies that the procedure name can be used in other procedure 
      declarations.
   Static
      Specifies static storage for all variables and objects in the 
      procedure body.
   Const (Member)
      Specifies a const member procedure in user-defined type definitions.
   Static (Member)
      Specifies a static member procedure in user-defined type definitions.

Linkage
   Public
      Specifies external linkage for a procedure.
   Private
      Specifies internal linkage for a procedure.
   Alias
      Specifies an alternate external name for a procedure.
   Export
      Specifies a procedure is to be exported from a shared library.
   Lib
      Specifies automatic loading of a library.

Calling conventions
   stdcall
      Specifies the standard calling convention for BASIC languages, 
      including FreeBASIC.
   cdecl
      Specifies the standard calling convention in the C and C++ languages.
   pascal
      Specifies the standard calling convention in the Fortran, Pascal and 
      Microsoft QuickBASIC/QBasic languages.
   Fastcall
      Specifies the fastcall calling convention for 32-bit procedures.
   Thiscall
      Specifies the thiscall calling convention for 32-bit member 
      procedures.
Parameter passing conventions
   ByRef
      Specifies passing an argument by reference.
   ByVal
      Specifies passing an argument by value.
   Any
      Disables type-checking on arguments.

Variadic Procedures
   ... (Ellipsis)
      Indicates a variadic procedure in a declaration.
    Cva_Arg
      Macro to obtain the next argument from a variadic argument list 
      object
    Cva_Copy
      Macro to copy a variadic argument list object variable
    Cva_End
      Macro to end using a variadic argument list object variable
    Cva_List
      Variadic argument list object type 
    Cva_Start
      Macro to initialize variadic argument list object variable
   va_first
      Macro to obtain the argument list in a variadic procedure.
   va_arg
      Macro to obtain the current argument in a variadic procedure.
   va_next
      Macro to move to the next argument in a variadic procedure.

Automatic execution
   Constructor (Module)
      Indicates a procedure is to be executed before module-level code.
   Destructor (Module)
      Indicates a procedure is to be executed after module-level code.

Miscellaneous
   Byref (Function Results)
      Specifies that a function returns by reference rather than by value.
   Call
      Invokes a procedure.
   Naked
      Specifies that a function body is not to be given any prolog/epilog 
      code

