IBM Books

Net.Data 管理与程序设计指南,OS/2、Windows NT 以及 UNIX 版

定义函数

您可以定义您自己的函数,也可以使用 Net.Data 的内部函数。 要在宏文件中定义您自己的文件(称为用户定义的函数),可使用 FUNCTION 块 或 MACRO_FUNCTION 块。

FUNCTION 块
定义一个子例程,它调用自一个 Net.Data 宏,由语言环境来处理,或调用一个外部程序。

MACRO_FUNCTION 块
定义一个子例程,它调用自一个 Net.Data 宏,必须由 Net.Data 而不是另一个语言环境来 处理。块中的语句必须是 Net.Data 宏语言源语句。

对于 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
    %}

其中:

type

标识了初始化文件中配置的语言环境。语言环境调用一个专用语言处理器(处理可执行语 句)并提供 Net.Data 和语言处理器之间的标准接口。

Net.Data 附带提供了几种缺省的语言 环境。

function-name

指定了 FUNCTION 或 MACRO_FUNCTION 块的名称。在宏文件以外的地方用函数调用来执行 FUNCTION 块 或 MACRO_FUNCTION 块。函数调用引用 function-name,前导以 at (@) 符号 。请 参阅调用函数,以获取细节。

可以用相同名称定义多个 FUNCTION 或 MACRO_FUNCTION 块,使得它们被同时处理。每个 块都必须具有相同的参数表。当 Net.Data 调用函数时,将以在 Net.Data 宏中定义的顺序执行具 有相同名称的所有 FUNCTION 块或有相同名称的所有 MACRO_FUNCTION 块。

usage
指定参数是输入 (IN) 参数、输出 (OUT) 参数还是两种类型 (INOUT)。这个指定 指出了是将传送至或接收自 FUNCTION 块,MACRO_FUNCTION 块或两者都是。在被改为另一种用法类型之前, 此用法类型适用于参数表中的所有后继参数。缺省类型是 IN。

parameter

指具有局部作用域的变量名称,将用在函数调用上指定的相应值来代替它。用 参数的实际值来代替可执行语句或 REPORT 块中的参数引用,例如 $(parm1) 。另外,参数传送至语言环境,并可以用该语言的语法或作为环境变量来被可执行语句访问。在 FUNCTION 块或 MACRO_FUNCTION 块之外,参数 变量引用无效。

return-var
在 RETURNS 关键字之后指定此参数来标识特殊的 OUT 参数。返回变量的值赋给函数调用并 在 Net.Data 宏处理中替换函数调用。如果您没有指定 RETURNS 子句,则函数调用的值是:

executable-statements
语言语句的集合,在替换变量和处理函数之后,它们传送至特定语言环境进行处理。 executable-statements 可包含 Net.Data 变量引用和 Net.Data 函数调用。在将可执 行语句传送到语言环境之前,Net.Data 用实际值来代替这些变量引用或函数调用。Executable-statements 包含在 HTML 块中允许的那些可执行语句。

对于 FUNCTION 块,在可执 行语句传送到语言环境之前,Net.Data 用变量值代替所有变量引用,执行所有函数调用并用结 果值代替函数调用。每个语言环境处理语句的方式是不同的。关于指定可执行语句或调用可执行程 序的更多信息,请参阅可执行变量

对于 MACRO_FUNCTION 块来说,可执行语句是 HTML 语句和 Net.Data 宏语言结构的组合 。在此情况下在此情况下,不涉及语言环境,因为 Net.Data 起语言处理器的作用,并估计和执行可 执行语句。

report-block
定义 REPORT 块,以处理 FUNCTION 块的输出。 请参阅报表块

message-block
定义 MESSAGE 块,它处理 FUNCTION 块返回的任何消息。请参阅消息块

在 Net.Data 宏中调用函数之前在 Net.Data 宏的最外层定义该函数。


[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 ]