如何使用REXX / CLIST批处理程序(无ISPF)复制成员?

在z / OS下,我想编写一个REXX或CLIST脚本来将一个顺序数据集复制到另一个,然后运行另一个脚本(REXX)。另一个脚本需要存在特定的SDS,我希望能够在运行第二个脚本之前将许多选项中的一个复制到该成员。这是来自TSO所以我无法访问任何花哨的ISPF东西。 所以,基本上:
Copy 'level1.level2.name.type1' to 'level1.level2.name'
runother p1 p2 p3
runother
Rexx脚本使用'level1.level2.name'来做自己的魔术 - 我只是为每个可能性提供一个不同的。 所以我需要一个名为'xx42'的脚本,它复制'level1.level2.name.42',然后我可以为42以外的值修改它。更好的是参数化该脚本所以我可以使用
xx 42 p1 p2 p3
要么
xx 27 p1 p2 p3
而不是为每个值都有一个脚本。这将复制给定的SDS,然后将参数
p1
p2
p3
传递给
runother
。     
已邀请:
在搜索其他内容时,我发现了这篇文章。 (即我没有花2年的时间来制定这个回应)并且认为未来的主要人士(我们还存在吗?)可能会觉得它很有用。 你也可以做一个SMCOPY:
address TSO "SMCOPY FDS('LEVEL1.LEVEL2.NAME.42') TDS('LEVEL2.LEVEL2.NAME')"
FDS - 从数据集,TDS到数据集。如果TDS不存在,您将获得返回码4,但副本将被执行。您也可以使用SMCOPY复制库成员。     
经过一番摆弄后,我发现你可以手动分配所需的数据集并运行
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
    
您还可以使用SORT从SORTIN到SORTOUT进行复制。您可以使用参数或使用SET语句等将该JCL包装在proc中。     

要回复问题请先登录注册