向项目管理器提示一个未定义的引用。
语法
EXTERNAL FILE FileList | ARRAY ArrayList
| CLASS | FORM | LABEL | LIBRARY | MENU
| PROCEDURE | QUERY | REPORT | SCREEN | TABLE
参数
FILE FileList
告知项目管理器包含在间接文件引用或宏替换中的文件(诸如文本文件、.BMP 位图文件等等)是独立文件。FileList 可以包含一系列文件,文件名之间用逗号分隔。
ARRAY ArrayList
在程序中创建了某个数组,然后要在低一层的程序中使用此数组时,应在这个低层程序中包含 ARRAY 子句和该数组名。
ArrayList 可以包含一系列数组名,数组名之间用逗号分隔。
在下面的示例中,第一个程序创建了一个名为 gaInvoice 的数组。先初始化该数组,然后调用低一层的程序 dispinvo。
dispinvo 显示上一层程序中创建的数组内容。包含 EXTERNAL ARRAY GAINVOICE 命令可以提示项目管理器。
DIMENSION gaInvoice(4)
STORE 'Paid' TO gaInvoice
DO dispinvo
*** dispinvo 程序***
PROCEDURE dispinvo
EXTERNAL ARRAY gaInvoice
? gaInvoice(1)
? gaInvoice(2)
? gaInvoice(3)
? gaInvoice(4)
RETURN
*** dispinvo 程序结束 ***
当向用户自定义函数或过程传递数组时,相应数组应该在项目管理器中进行标识。包含此 ARRAY 子句,并将 PARAMETER
语句中包括的数组放在此子句后面。
DIMENSION gaArrayOne(2) && 创建数组
EXTERNAL ARRAY gaArrayTwo && 在 UDF 中使用的数组
SET TALK OFF
STORE 10 TO gaArrayOne(1)
STORE 2 TO gaArrayOne(2)
= ADDTWO(@gaArrayOne) && 向 UDF 按引用传递数组
FUNCTION ADDTWO
PARAMETER gaArrayTwo
CLEAR
gaArrayTwo(1) = gaArrayTwo(1) + 2
gaArrayTwo(2) = gaArrayTwo(2) + 2
? gaArrayTwo(1)
? gaArrayTwo(2)
CLASS
告知项目管理器包含在一个间接文件引用或宏替换中的文件是一个可视类库。
EXTERNAL CLASS myvclass && 类 myvclass 必须存在
STORE 'myvclass' TO gcClassFile
MODIFY CLASS (gcClassFile)
FORM
如果在间接文件引用或宏替换中包含表单定义文件,应包含 FORM 子句及该表单文件名。FORM 子句与 SCREEN 子句等价。
EXTERNAL FORM dataentr && 表单文件 dataentr 必须存在
STORE 'dataentr' TO gcFormFile
DO FORM (gcFormFile)
LABEL
告知项目管理器包含在间接文件引用或宏替换中的文件是一个标签定义文件。
EXTERNAL LABEL Maillabl && 标签文件 Maillabel 必须存在
STORE 'Maillabl' TO gcLabelFile
LABEL FORM (gcLabelFile) PREVIEW
LIBRARY
当在 SET LIBRARY 命令中通过间接文件引用或宏替换引用某个库文件时,应包含 LIBRARY 子句。
EXTERNAL LIBRARY regress && 库文件 regress 必须存在
STORE 'regress' TO gcStatFunc
SET LIBRARY TO (gcStatFunc)
MENU
如果在间接文件引用或宏替换中包含有菜单定义文件时,应包含 MENU 子句及菜单文件名。
EXTERNAL MENU pickfile && 菜单文件 Pickfile 必须存在
STORE 'pickfile' TO gcSysMenPad
MODIFY MENU (gcSysMenPad)
PROCEDURE
标识一个外部过程或用户自定义函数。
EXTERNAL PROCEDURE delblank && 过程 delblank 必须存在
STORE 'delblank' TO gcTrimBlanks
DO (gcTrimBlanks) WITH 'A B C D E'
QUERY
提示项目管理器包含在间接文件引用或宏替换中的文件是一个查询文件。
EXTERNAL QUERY sales && 查询文件 sales 必须存在
STORE 'sales.qpr' TO gcSalesFile
DO (gcSalesFile)
REPORT
提示项目管理器包含在间接文件引用或宏替换中的文件是报表定义文件。
EXTERNAL REPORT overdue && 报表文件 overdue 必须存在
STORE 'overdue' TO gcReportFile
REPORT FORM (gcReportFile) PREVIEW
SCREEN
如果在间接文件引用或宏替换中包含有表单定义文件,则应包含 SCREEN 子句及表单文件名。SCREEN 子句与 FORM 子句等价。
EXTERNAL SCREEN dataentr && 表单文件 dataentr 必须存在
STORE 'dataentr' TO gcScreenFile
MODIFY SCREEN (gcScreenFile)
TABLE
提示项目管理器包含在间接文件引用或宏替换中的文件是 Visual FoxPro 的一个表。
EXTERNAL TABLE customer && 表 cnstomer 必须存在
STORE 'customer' TO gcMyTable
USE (gcMyTable)
说明
使用 external 命令,可以在项目管理器创建的项目中包含文件并解决未定义引用的问题。只有项目管理器才使用 external 命令,在程序的执行中忽略此命令。
有关用项目管理器创建项目的详细内容,请参阅使用项目管理器和《开发指南》的第十五章“编译应用程序”。
项目管理器将 external 命令中指定的文件包含在项目中。在文件名前应加入 CLASS、FILE、FORM、LABEL、LIBRARY、MENU、PROCEDURE、QUERY、REPORT、SCREEN 或 TABLE,以告知项目管理器要包含在项目中的文件类型。
当在名称表达式或宏替换中包含文件名时,也应给项目管理器以提示。这可以保证在项目连编时包含所有必要的文件。另外,在其他过程或用户自定义函数中创建的数组也必须提示给项目管理器。
有关名称表达式和宏替换的详细内容,请参阅 &
命令。只要可能,就应使用名称表达式,而不要使用宏替换,这有助于提高程序的性能。