IBM Books

管理与程序设计指南,OS/400 版

将参数传递到 REXX 程序

有两种方式将信息传递到 REXX (DTW_REXX) 语言环境调用的 REXX 程序,直接和间接。

直接
使用 %EXEC 语句将参数直接传递到外部 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 传递了两个参数, ab。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


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