1

在 z/OS 下,我想编写一个 REXX 或 CLIST 脚本来将一个顺序数据集复制到另一个,然后运行另一个脚本 (REXX)。另一个脚本期望存在特定的 SDS,我希望能够在运行第二个脚本之前将多个选项之一复制到该成员。这是来自 TSO,所以我无法访问任何花哨的 ISPF 东西。

所以,基本上:

Copy 'level1.level2.name.type1' to 'level1.level2.name'
runother p1 p2 p3

runotherRexx 脚本使用 'level1.level2.name' 来发挥它自己的魔力——我只是为我的每一种可能性提供一个不同的脚本。

所以我需要一个名为 'xx42' 的脚本,它复制 'level1.level2.name.42',然后我可以针对 42 以外的值修改它。更好的是参数化该脚本,这样我就可以使用

xx 42 p1 p2 p3

或者

xx 27 p1 p2 p3

而不是每个值都有一个脚本。这将复制给定的 SDS,然后传递参数p1p2然后传递p3runother.

4

3 回答 3

2

在寻找其他东西时,我遇到了这篇文章。(即我没有花 2 年时间来制定这个回应)并认为未来的 mainframians(我们还存在吗?)可能会发现它很有用。

你也可以做一个 SMCOPY:

address TSO "SMCOPY FDS('LEVEL1.LEVEL2.NAME.42') TDS('LEVEL2.LEVEL2.NAME')"

FDS - 从数据集,TDS - 到数据集。如果 TDS 不存在,您将获得返回码 4,但副本将被执行。您也可以使用 SMCOPY 复制库成员。

于 2011-10-06T20:31:56.093 回答
1

经过一番摆弄,我发现您可以手动分配所需的数据集并运行IEBGENER以进行复制:

/* REXX */

"ALLOC FI(SYSPRINT) DUMMY REUSE"
"ALLOC FI(SYSIN) DUMMY REUSE"
"ALLOC FI(SYSUT1) DA('LEVEL1.LEVEL2.NAME.42') SHR REUSE"
"ALLOC FI(SYSUT2) DA('LEVEL1.LEVEL2.NAME') SHR REUSE"
"IEBGENER"
RC2 = RC
"FREE FI(SYSUT1)"
"FREE FI(SYSUT2)"
"FREE FI(SYSPRINT)"
"FREE FI(SYSIN)"
IF RC2 ^= 0 THEN DO
  SAY "IEBGENER FAILED."
  END
ELSE DO
  RUNOTHER P1 P2 P3
  END
于 2009-11-04T04:40:04.993 回答
0

您还可以使用 SORT 从 SORTIN 复制到 SORTOUT。您可以将该 JCL 包装在带有参数的 proc 中或使用 SET 语句等。

于 2012-10-25T03:24:46.363 回答