FUNCTION 块包含了对 HTML 块所调用的函数的说明。 函数由语言环境处理,可以 执行程序、SQL 查询或存储过程。
以下示例显示了两个 FUNCTION 块。一个定义对外部 REXX 程序的调用, 另一个包含内联的 REXX 语句。
%{ ********************** FUNCTION 块 **********************************%}
%FUNCTION(DTW_REXX) rexx1 (IN input) returns(result) { <-- 该函数接受
一个参数并返回变量 "result",它是
由外部 REXX 程序指定的
%EXEC{ompsamp.mbr %} <-- 该函数执行一个名为 "ompsamp.mbr" 的外部 REXX 程序
%}
%FUNCTION(DTW_REXX) today () RETURNS(result) {
result = date() <-- 该函数的单独的源语句包含在内部。
%}
第一函数块 rexx1 是一个 REXX 函数说明,它依次运行一个 名为 ompsamp.mbr 的 外部 REXX 程序。输入变量 input 被该函数接受并自动传送至外部 REXX 命令。REXX 命令 还返回变量 result。REXX 命令中的变量 result 的内容代替 OUTPUT 块中包含的调 用的 @rexx1() 函数调用。REXX 程序可直接访问 input 和 result 变量, 正如 ompsamp.mbr 源码 中所显示的那样:
/* REXX */ result = 'The REXX program received "'input'" from the macro.'
该函数中的代码回送传送给它的数据。您可以通过用一般“标记”风格的标记(象 <b> 或 <em>)括起请求的 @rexx1() 函数来按您的需要格式化结果文本。 与 result 变量相比,REXX 程序宁愿使用 REXX SAY 语句来将 HTML 标记写入标准输出。
第二个函数块也引用一个 REXX 程序 today。 但是,在此情况下,整个 REXX 程序都包含在本身的函数说明中。不需要外部程序。REXX 和 Perl 函数都允许内部程序,因为它们 是解释语言,可以动态语法分析和执行。 内部程序的优点是简明,不需要一个程序文件来管理。 第一个 REXX 函数也可以内部处理。