STATIC statement

Purpose

Declare static variables inside a procedure.  Static variables retain their values as long as the program is running.

Syntax

STATIC variable[()] [AS type] [, variable[()]]

STATIC variable[()] [, variable[()]] [, ...] AS type

Remarks

The STATIC statement is valid only inside a Sub or Function.  Static variables retain their values even after the Sub or Function ends.  A static variable is local to its Sub or Function, and can have the same name as other variables in other parts of the program without conflict.

To declare an array as a static variable, use an empty set of parentheses in the variable list: You can then use the DIM statement to dimension the array.

STATIC MyArray%()

STATIC StringArray() AS STRING

The STATIC statement may, optionally, accept a list of variables, all of which are defined by the type descriptor keyword that follows them.  For example:

STATIC aaa, bbb, ccc AS INTEGER

STATIC vptr, aptr() AS LONG PTR

Restrictions

DEFtype has no effect on variables defined by a STATIC statement.

See also

DIM, GLOBAL, LOCAL, THREADED

Example

#COMPILE EXE

#DIM ALL

#INCLUDE "WIN32API.INC"

 

DECLARE SUB DoMessage ()

 

FUNCTION PBMAIN

  DIM z%

  FOR z% = 1 TO 5

    DoMessage

  NEXT z%

END FUNCTION

 

SUB DoMessage ()

  STATIC x AS INTEGER

  STATIC Message() AS ASCIIZ * 256

  DIM Message(1 TO 5) AS STATIC ASCIIZ * 256

 

  INCR x       'add one to x

  Message(x) = "X =" + STR$(x)

 

  #IF %DEF(%PB_CC32)

    PRINT Message(x)

  #ELSE

    MSGBOX Message(x)

  #ENDIF

END SUB