FUNCTION 块包含了对 HTML 块所调用的函数的说明。函数由语言环境处理,可以 执行程序、SQL 查询或存储过程。
以下示例显示了两个 FUNCTION 块。一个定义对外部 REXX 程序的调用, 另一个包含内联的 REXX 语句。
%{ ********************** FUNCTION Block **********************************%} %FUNCTION(DTW_REXX) rexx1 (IN input) returns(result) { <-- This function accepts one parameter and returns the variable 'result', which is assigned by the external REXX program %EXEC{ompsamp.cmd %} <-- The function executes an external REXX program called "ompsamp.cmd" %} %FUNCTION(DTW_REXX) today () RETURNS(result) { result = date() <-- The single source statement for this function is contained inline. %}
第一函数块 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.'
该函数中的代码回送传送给它的数据。可通过用普通标记样式标记(如 <b> or <em>) 将请求 @rexx1() 函数调用括起来, 以便以您想要的任何方式来格式化结果文本。与 result 变量相比,REXX 程序宁愿使用 REXX SAY 语句来将 HTML 标记写入标准输出。
第二个函数块也引用一个 REXX 程序 today。但是,在此情况下,整个 REXX 程序都包含在本身的函数说明中。不需要外部程序。REXX 和 Perl 函数都允许内部程序,因为它们 是解释语言,可以动态语法分析和执行。内部程序的优点是简明,不需要一个程序文件来管理。第一个 REXX 函数也可以内部处理。