您可以定义您自己的函数,也可以使用 Net.Data 的内部函数。 要在宏文件中定义您自己的文件(称为用户定义的函数),可使用 FUNCTION 块 或 MACRO_FUNCTION 块。
对于 FUNCTION 块,MACRO_FUNCTION 块是可选的,它可以提 高性能。MACRO_FUNCTION 块只能由 Net.Data 来处理,他不调用一种语言环境。 Net.Data 参考中提供了这两种结构的 细节。
语法如下所示:
FUNCTION 块:
%FUNCTION(type) function-name(usage parameter, ...) [RETURNS(return-var)] { executable-statements report-block message-block %}
MACRO_ FUNCTION 块:
%MACRO_FUNCTION function-name(usage parameter, ...) { executable-statements %}
其中:
标识了初始化文件中配置的语言环境。语言环境调用一个专用语言处理器(处理可执行语 句)并提供 Net.Data 和语言处理器之间的标准接口。
Net.Data 附带提供了几种缺省的语言 环境。
指定了 FUNCTION 或 MACRO_FUNCTION 块的名称。在宏文件以外的地方用函数调用来执行 FUNCTION 块 或 MACRO_FUNCTION 块。函数调用引用 function-name,前导以 at (@) 符号 。请 参阅调用函数,以获取细节。
可以用相同名称定义多个 FUNCTION 或 MACRO_FUNCTION 块,使得它们被同时处理。每个 块都必须具有相同的参数表。当 Net.Data 调用函数时,将以在 Net.Data 宏中定义的顺序执行具 有相同名称的所有 FUNCTION 块或有相同名称的所有 MACRO_FUNCTION 块。
指具有局部作用域的变量名称,将用在函数调用上指定的相应值来代替它。用 参数的实际值来代替可执行语句或 REPORT 块中的参数引用,例如 $(parm1) 。另外,参数传送至语言环境,并可以用该语言的语法或作为环境变量来被可执行语句访问。在 FUNCTION 块或 MACRO_FUNCTION 块之外,参数 变量引用无效。
对于 FUNCTION 块,在可执 行语句传送到语言环境之前,Net.Data 用变量值代替所有变量引用,执行所有函数调用并用结 果值代替函数调用。每个语言环境处理语句的方式是不同的。关于指定可执行语句或调用可执行程 序的更多信息,请参阅可执行变量。
对于 MACRO_FUNCTION 块来说,可执行语句是 HTML 语句和 Net.Data 宏语言结构的组合 。在此情况下在此情况下,不涉及语言环境,因为 Net.Data 起语言处理器的作用,并估计和执行可 执行语句。
在 Net.Data 宏中调用函数之前在 Net.Data 宏的最外层定义该函数。