从 DB2 命令获取 REXX 中的输出

Posted

技术标签:

【中文标题】从 DB2 命令获取 REXX 中的输出【英文标题】:Obtain output in REXX from DB2 Command 【发布时间】:2018-08-29 11:16:23 【问题描述】:

我想使用 Rexx 捕获以下命令的输出:

QUEUE "-DIS DATABASE(*) SPACENAM(*) RESTRICT(CHKP,COPY)"
QUEUE "END"                                             
ADDRESS TSO "DSN SYSTEM(DB2D)"

有什么方法可以获取上述命令输出的表名,这些表名显示在变量或其他结构中,以便可以通过编程方式操作数据?

问候

【问题讨论】:

【参考方案1】:

OUTTRAP 函数应捕获 DSN 命令的输出。 OUTTRAP 旨在TRAP 执行大多数 TSO 命令的 OUT。输出放置在您提供的变量(通常是词干变量)中。 (某些 TSO 命令无法被捕获;这将在 TSO/E REXX 参考的其他地方进行讨论。)

按照上面提供的代码,我们可以拼凑起来:

ORC = OUTTRAP('O.')             /* preserve prior setting of OUTTRAP */
QUEUE "-DIS DATABASE(*) SPACENAM(*) RESTRICT(CHKP,COPY)"
QUEUE "END"                                             
ADDRESS TSO "DSN SYSTEM(DB2D)"
CALL OUTTRAP ORC                /* restore OUTTRAP setting */
DO #O = 1 TO O.0                /* The 0 entry by convention has the number of records */
  /* You can PARSE, analyze, or do whatever here */
  SAY "O."'#O "='"O.#O"'"         /* example */
END #O                          /* end the loop */

在 TSO/E REXX 中编写脚本时,OUTTRAP 是一个非常强大的功能。

【讨论】:

以上是关于从 DB2 命令获取 REXX 中的输出的主要内容,如果未能解决你的问题,请参考以下文章

只读 DB2 使用来自 REXX 中的 PDS(Dataset) 的成员并存储在 Stem 变量中以供进程相互使用

使用 EXECIO 将 rexx 输出逻辑写入数据集?

如何在 Rexx 接口中获取用户库到 SDSF

将参数从 ISPF DSLIST 自动传递到 REXX 脚本

如何在 IBM DB2 中的导出结果中也包含列标题

从 Android 应用程序中的 busybox 命令获取输出