有两种方式将信息传递到 REXX (DTW_REXX) 语言环境调用的 REXX 程序,直接和间接。
%FUNCTION(DTW_REXX) rexx1() {
%EXEC{
/QSYS.LIB/NETDATA.LIB/QREXXSRC.FILE/CALL1.MBR $(INPARM1) %}
%}
Net.Data 变量 INPARM1 被撤消引用并传递到外部的 REXX 程序。REXX 程序可以通过 使用 REXX PARSE ARG 指令来引用变量。使用这种方式传递给程序的 参数被认为是输入类型参数(传递给程序的参数可以由程序使用和处理,但对参数的更改并反映给 Net.Data)。
通过 REXX 程序变量池的方式间接传递参数。启动 REXX 程序之后, REXX 解释程序将创建并维护一个含有所有变量信息的空间。这个空间就称为变量池。
调用一个 REXX 语言环境 (DTW_REXX) 函数时,REXX 语言环境将在执行 REXX 程序之前把所有 输入 (IN) 或输入/输出 (INOUT) 函数参数存储在变量池中。调用 REXX 程序时,它就可以直接访问这些变量。REXX 程序成功完成时,DTW_REXX 语言环境将确定是否有输出 (OUT) 或 INOUT 函数参数。如果有,语言环境将从变量池中检索相应于函数参数的值,并使用新值更新函数参数值。 当 Net.Data 接收控制时,它便使用从 REXX 语言环境中获得的新值更新所有的 OUT 或 INOUT 参数。例如:
%DEFINE a = "3"
%DEFINE b = "0"
%FUNCTION(DTW_REXX) double_func(IN inp1, OUT outp1){
outp1 = 2*inp1
%}
%HTML(REPORT){
Value of b is $(b), @double_func(a, b) Value of b is $(b)
%}
在上面的例子中,调用 @double_func 传递了两个参数, a 和 b。REXX 函数 double_func 将第一个参数的值乘以 2, 并将结果存储在第二个参数中。当 Net.Data 调用宏时,b 的值为 6。
您可以将 Net.Data 表格传递给一个 REXX 程序。REXX 程序访问 Net.Data 宏表格参数的值, 把它作为 REXX 词干变量。 对于 REXX 程序,列标题和字段值都包含在用表格名和列号标识的变量中。例如, 表格 myTable 中的列标题是 myTable_N.j, 字段值是 myTable_N.i.j,其中 i 是行号,j 是列号。 表格中的行数是 myTable_ROWS,列数是 myTable_COLS。