Included for backward compatibility. Use the Label Control to display text and the TextBox Control to display the contents of fields and variables.
This command is undocumented in the original VFP9 help file,
but the following documentation was found in the FoxPro for Windows 2.6 help, and may still be valid:
Displays output at a specified row and column position.
@ row, column SAY expr [FUNCTION expC1] [PICTURE expC2] [SIZE expN1, expN2] [FONT expC3 [, |
Parameters
row, columnRow and column are numeric expressions with values of 0 or greater that determine where @ ... SAY output appears.
The first row is number 0 in the main FoxPro window or a user-defined window. Rows are numbered from top to bottom. In FoxPro for Windows, row 0 is the row immediately under the FoxPro system menu bar. In FoxPro for Macintosh, row 0 is the row immediately under the FoxPro title bar. In FoxPro for MS-DOS, row 0 is the row the FoxPro system menu bar occupies. See SET SYSMENU for information about manipulating the system menu bar so you can place output on row 0 in FoxPro for MS-DOS. For printers, the first row is 1 and the physical page size and the number of lines per page determine the maximum row number.
The first column is number 0 in the main FoxPro window or a user-defined window. Columns are numbered from left to right. For printers, the first column is 1 and the physical page size determines the maximum column number.
When @ ... SAY output is directed to a user-defined window, the row and column coordinates are relative to the user-defined window, not the main FoxPro window.
In FoxPro for Windows and FoxPro for Macintosh, a position in the main FoxPro window or in a user-defined window is determined by the font of the main FoxPro window or the user-defined window. Most fonts can be displayed in a wide variety of sizes, and some are proportionally spaced. A row corresponds to the height of the current font; a column corresponds to the average width of a letter in the current font.
In FoxPro for Windows and FoxPro for Macintosh, you can position @ ... SAY output in a window with decimal fractions for row and column coordinates. In FoxPro for MS-DOS, decimal fractions used for row and column coordinates are rounded to the nearest integer value.
expr
expr is evaluated and displayed or printed starting at row, column. It can be a user-defined function.
FUNCTION expC1 | PICTURE expC2
You can include the FUNCTION clause, the PICTURE clause or both to control how expr is displayed or printed.
FUNCTION codes can be included in a PICTURE clause. In this case, the PICTURE clause must start with @. Also, a PICTURE clause can contain FUNCTION codes, PICTURE codes or both. Since a FUNCTION clause affects the entire expression, it can contain only FUNCTION codes.
Function Codes
--------------
Code Purpose
---- -------
B Left-justifies numeric data within the display region.
C CR is displayed after a positive number to indicate a credit. Can be used with numeric data only.
D Uses the current SET DATE format.
E Edits date type data as a BRITISH date.
T Trim leading and trailing blanks from expr.
X DB is displayed after negative numbers to indicate a debit. Use only with numeric data.
Z expr is displayed as all blanks if its numeric value is 0. Use only with numeric data.
( Encloses negative numbers in parentheses. Use only with numeric data.
! Converts alphabetic characters to upper-case. Use with character data only.
^ Displays numeric data using scientific notation. Use with numeric data only.
$ Displays data in currency format. The currency symbol appears before or after the field value depending on the current setting of SET CURRENCY. Use with numeric data only.
A PICTURE expression can include any characters, but only the characters listed below actively participate in display and printing.
Picture Codes
-------------
Code Purpose
---- -------
X Allows any character.
Y Allows logical Y, y, N and n only. Converts y and n to Y and N, respectively.
! Converts lower-case letters to upper-case letters.
$ Displays the current currency symbol specified by SET CURRENCY. By default, the symbol is placed immediately before or after the field. However, the currency symbol and its placement (SET CURRENCY), the separator character (SET SEPARATOR) and the decimal character (SET POINT) can all be changed.
* Asterisks are displayed in front of the numeric value. Use with a dollar sign $ for check protection.
. Specifies the decimal point position.
, Use to separate digits to the left of the decimal point.
The following example combines two FUNCTION codes to format a numeric value. The $$ codes create a floating dollar sign and the C code places CR after the number.
CLEAR
@ 2, 2 SAY 1.15 FUNCTION 'C$$'
SIZE expN1, expN2
The SIZE clause lets you control the length and height of an @ ... SAY display or print region.
FoxPro creates a region one row high by default. Include the optional SIZE clause to create a region that is more than one row high. The height of the region in rows is specified by expN1, and the width in columns by expN2. The @ ... SAY output wordwraps at the width specified by expN2 for expN1 rows.
In FoxPro for Windows and FoxPro for Macintosh, the @ ... SAY font determines the size of the editing-region. The @ ... SAY font is specified with the FONT clause. If the FONT clause is omitted, the @ ... SAY output uses the font of its parent window (the main FoxPro window or a user-defined window).
FONT expC3 [, expN3]
The character expression expC3 is the name of the font, and the numeric expression expN3 is the font size. For example, the following command displays the @ ... SAY text in 16-point Courier font:
@ 2, 2 SAY 'Font clause example' FONT 'Courier', 16
If you include the FONT clause but omit the font size expN3, a 10-point font is used.
In FoxPro for Windows, if the font you specify is not available, a font with similar font characteristics is substituted.
In FoxPro for Macintosh, if the font you specify is not available, the Chicago font is used.
In FoxPro for MS-DOS, the FONT clause is ignored.
STYLE expC4
In FoxPro for Windows and FoxPro for Macintosh, include the STYLE clause to specify a font style for @ ... SAY output.
The font style is specified with expC4. If the STYLE clause is omitted, the normal font style is used.
In FoxPro for Windows, if the font style you specify is not available, a font style with similar characteristics is substituted.
In FoxPro for Macintosh, if the font you specify is not available, the normal font style is used.
The STYLE clause is ignored in FoxPro for MS-DOS.
Character Font Style
--------- ----------
B Bold
C Condense*
E Extend*
I Italic
N Normal
O Outline
Q Opaque
S Shadow
- Strikeout*
T Transparent
U Underline
* The Condense and Extend styles are only available in FoxPro for Macintosh. The Strikeout style is only available in FoxPro for Windows.
You can include more than one character to specify a combination of font styles. For example, the following command specifies Bold Italic:
@ 2, 2 SAY 'Font clause example' STYLE 'BI'
COLOR SCHEME expN4 | COLOR color pair list
If you do not include a COLOR clause, the color of @ ... SAY output is determined by the color scheme for the main FoxPro window; if @ ... SAY output is directed to a user-defined window, the window's color scheme determines the color of @ ... SAY output.
Only the first color pair in a color scheme or color pair list affects the color of @ ... SAY output.
The color of @ ... SAY output can be specified by including the number of an existing color scheme in the COLOR SCHEME clause or a set of color pairs in the COLOR clause.
A color scheme is a set of 10 predefined color pairs. The color pairs in a color scheme can be changed with SET COLOR OF SCHEME. In FoxPro for MS-DOS, the color pairs in a color scheme can also be changed in the Color Picker.
A color pair is a set of two letters separated by a forward slash. The first letter specifies the foreground color and the second letter specifies the background color.
For example, this color pair specifies a red foreground on a white background:
R/W
For a list of colors and their corresponding color letters, see SET COLORs Overview or Color Table by Color Pair.
A color pair can also be specified with a set of six RGB (Red Green Blue) color values separated by commas. The first three color values specify the foreground color and the second three color values specify the background color. The color values can range from 0 through 255.
The R/W color pair in the example above can also be specified with this RGB color pair:
RGB(255,0,0,255,255,255)
For example:
@ 2, 2 SAY 'This is red on white' COLOR R+/W*
@ 4, 2 SAY 'This is Color Scheme 16' COLOR SCHEME 16
@ 6, 2 SAY 'This is red on white' COLOR RGB(255,0,0,255,255,225)
Remarks
Use this command to display formatted output in the main FoxPro window or a user-defined window. It can also be used to format output for a printer.
If you use the Screen Builder to create your data-entry screens, you may not have to use @ ... SAY at all. The Screen Builder automatically generates the @ ... SAY commands.
You can combine @ ... SAY and @ ... GET into a single command. If both the SAY and GET clauses are included, specify a single set of coordinates row, column where @ ... SAY output begins. A space is automatically inserted between the @ ... SAY output and the @ ... GET text-editing region.
If you issue SET DEVICE TO SCREEN, output from @ ... SAY appears in the main FoxPro window or an active user-defined window. SET DEVICE TO SCREEN is the startup default. If you issue SET DEVICE TO PRINTER, output is directed to the printer.

Microsoft Visual FoxPro 9 SP2 Help file, VFPX Edition v1.08