【问题标题】:How do I copy a member with a REXX/CLIST batch program (no ISPF)?如何使用 REXX/CLIST 批处理程序(无 ISPF)复制成员?
【发布时间】:2012-10-25 11:24:46
【问题描述】:

在 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,然后将参数 p1p2p3 传递给 runother

【问题讨论】:

    标签: mainframe rexx tso clist


    【解决方案1】:

    在搜索其他内容时,我偶然发现了这篇文章。 (即,我没有用 2 年时间来制定这个回应)并认为未来的 mainframians(我们还存在吗?)可能会发现它很有用。

    你也可以做一个 SMCOPY:

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

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

    【讨论】:

      【解决方案2】:

      经过一番折腾,我发现您可以手动分配所需的数据集并运行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
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-22
          • 1970-01-01
          • 2021-04-20
          • 2016-09-10
          • 2012-01-24
          • 1970-01-01
          相关资源
          最近更新 更多