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