Share via


PUBLIC Command

Defines global variables or arrays. There are two versions of the syntax.

PUBLIC MemVarList

PUBLIC [ ARRAY ] ArrayName1( nRows1 [ , nColumns1 ] ) [, ArrayName2( nRows2 [, nColumns2 ] ) ] ... 
   [AS type [OF ClassLib]]

Parameters

  • PUBLIC MemVarList
    Specifies one or more memory variables to initialize and designate as global. Use commas to separate multiple items in MemVarList.

    The single letters A through J and M are reserved and cannot be used as variable names.

  • PUBLIC [ ARRAY ] ArrayName1( nRows1 [, nColumns1 ] ) [, ArrayName2( nRows2 [, nColumns2] )] ...
    Specifies one or more arrays to initialize and designate as global. For more information about arrays, see DIMENSION Command.

  • [ AS type [OF ClassLib] ]
    Specifies the data type of the variable or array and the class library containing the type description of type on which this variable or array is based.

    You can use the AS clause to implement strong typing. IntelliSense functionality is available for object and variable references only when they are strongly typed. For more information, see How to: Implement Strong Typing for Class, Object, and Variable Code.

Remarks

You can use and modify global variables and arrays from any program executed during the current Visual FoxPro session.

Variables and arrays created with PUBLIC are initialized to False (.F.) except for the public variables FOX and FOXPRO, which are initialized to True (.T.). Depending on the version of Visual FoxPro you are running, you can use the public variables FOX and FOXPRO to conditionally execute code.

Note

The public variables FOX and FOXPRO were used in earlier versions to detect previous versions of FoxBASE and FoxPro, respectively.

You must declare any variables or arrays that you want public prior to assigning values to them. If you assign a value to a variable or array in a program and later declare it as public using PUBLIC, Visual FoxPro generates a syntax error.

Variables or arrays that you create from the Command window are automatically public.

Example

SET TALK OFF
PUBLIC val1,val2
val1 = 10
val2 = 15

DO down
? val1
? val2

RELEASE ALL     && Releases private variables only
DISPLAY MEMORY LIKE val?
RELEASE val1,val2  && Public variables must be released explicitly
DISPLAY MEMORY LIKE val?

PROCEDURE down
PRIVATE val1
val1 = 50
val2 = 100
? val1
? val2
RETURN

See Also

Reference

LOCAL Command

PRIVATE Command

Other Resources

Commands (Visual FoxPro)