IBM Books

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

将参数传送到程序

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

直接
在调用程序时直接传递参数。例如:

%DEFINE INPARM1 = "SWITCH1"
                           
%FUNCTION(DTW_SYSTEM) sys1() {
 %EXEC{
  /QSYS.LIB/NETDATA.LIB/RPGCALL1.PGM  ('$(INPARM1)'  'literalstring')
 %}
%}

Net.Data 变量 INPARM1 被引用并被传递到程序。 参数传递到程序的方式与从命令行调用程序时参数传递到程序的方式相同。使用这种方式传递给程序的 参数被认为是输入类型参数(传递给程序的参数可以由程序使用和处理,但对参数的更改并反映给 Net.Data)。

间接

使用环境变量间接地传递参数。环境变量是形式 为 "name=value" 的字符串,存储在程序以外的环境空间中。字符串存储在与进程关联的的临时空间中。

当 Net.Data 调用一个 DTW_SYSTEM 语言环境函数时,语言环境将在执行 %EXEC 块 中的语句之前把所有输入 (IN) 或输入/输出 (INOUT) 的函数参数存储到环境空间中。语句成功完成后,DTW_SYSTEM 语言环境将确定是否有输出 (OUT 或 INOUT) 函数参数。如果有,语言环境将从环境空间中检索相应于函数参数的值,并使用新值更新函数参数值。当 Net.Data 接收控制时,它便使用从 DTW_SYSTEM 语言环境中获得的新值更新所有的 OUT 或 INOUT 参数。

使用表 7中所描述的 API 来设置与检索环境变量:

表 7. 环境变量 API
ILE 编程语言 要检索,请使用... 要设置,请使用...
C, C++ getenv() putenv()
CL(1), RPG, COBOL QtmhGetEnv()(2) QtmhPutEnv()(3)

  1. 对于 OS/400 V3R7 及后继版本,您还可以使用 CHGENVVAR 和 ADDENVVAR CL 命令来设置环境变量。

  2. QtmhGetEnv() 是作为 IBM TCP/IP Connectivity Utilities/400 的一部分发行的。

  3. QtmhPutEnv() 最初没有作为 IBM TCP/IP ConnectivityUtilities/400 V3R2 和 V3R7 的一部分发行。 它是后来在周期中添加的,可以通过 V3R2 PTF 5763TC1-SF40953 或 V3R7 PTF 5716TC1-SF40954 获得。

您可以通过 System 语言环境将 Net.Data 表格传递给一个被调用的程序。该程序 根据它们的 Net.Data 名来访问 Net.Data 宏表格参数的值。列标题和字段值都包含在用表格名和 列号标识的变量中。例如,在表格 myTable 中,列标题是 myTable_N_j, 字段值是 myTable_V_i_j,其中 i 是行号, j 是列号。表格的行数与列数是 myTable_ROWSmyTable_COLS

不建议您传递有许多行的表格,因为进程环境变量的个数是有限的。


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