从 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 变量中以供进程相互使用