Home / cat / methoddecl 
Method Declaration

Procedures

Syntax
[ STATIC ] { PUBLIC | PRIVATE } { PROCEDURE | SUB }
  Identifier
  (
    [ [ BYREF ] Parameter AS Datatype [ , ... ] ] [ , ]
    [ OPTIONAL [ BYREF ] Optional Parameter AS Datatype [ , ... ] ] [ , ] [ ... ]
  )
  ...
END

This declares a procedure, i.e. a method that returns nothing.

The END keyword indicates the end of the procedure.

Functions

Syntax
[ STATIC ] { PUBLIC | PRIVATE } { FUNCTION | PROCEDURE | SUB }
  Identifier
  (
    [ [ BYREF ] Parameter AS Datatype [ , ... ] ] [ , ]
    [ OPTIONAL [ BYREF ] Optional Parameter AS Datatype [ , ... ] ] [ , ] [ ... ]
  )
  AS Datatype
  ...
END

This declares a function, i.e. a method that returns a value.

The END keyword indicates the end of the function.

The datatype of the return value must be specified.

Of course, these declarations must be written on a unique line. They are separated there so that it is readable.

The return value is passed back to the caller as argument of the RETURN statement.

Examples

FUNCTION Calc(fX AS Float) AS Float
  RETURN Sin(fX) * Exp(- fX)
END

PUBLIC SUB Button1_Click()
  PRINT Calc(0), Calc(0.5), Calc(1)
END

0 0.290786288213 0.309559875653

Method Access

The method is accessible everywhere in the class it is declared.

Method Arguments

All method arguments are separated by commas.

STATIC PUBLIC PROCEDURE Main()
...
PUBLIC FUNCTION Calc(fA AS Float, fB AS Float) AS Float
...
PRIVATE SUB DoIt(sCommand AS String, OPTIONAL bSaveIt AS Boolean = TRUE)
...
STATIC PRIVATE FUNCTION MyPrintf(sFormat AS String, ...) AS Integer

Arguments Passed By Reference

Only in 3.0 version

When the BYREF keyword is specified, the argument must be an assignment expression that will be modified by the called function.

The /cat/byref keyword must be specified when calling the method.

At the moment, the use of BYREF in the method declaration is optional and purely descriptive. This may change in the future, as that breaks the privacy of the called method!

SUB ConvPixelToCentimeter(Value as Float, Dpi AS Integer)

  Value = Value / Dpi * 2.54

END

PUBLIC SUB Main()

  DIM Size AS Float

  Size = 256
  ConvPixelToCentimeter(BYREF Size, 96)
  PRINT Size

END

6.773333333333

See also

Variable Declaration