我正在尝试将一些成员从一个 PDS 复制到另一个。假设我在一个 PDS 中有 500 个成员。我正在尝试将前 100 个移至第二个 PDS,下一个 100 移至第三个 PDS,依此类推。复制到另一个 PDS 的成员也应该从源 PDS 中删除。
是否可以使用 JCL 做到这一点?我正在查看 IEBGENER,但我发现我们可以通过指定名称直接复制成员。
您可以在几个工作步骤中执行此操作。作为大纲:
设置 ICETOOL 以选择 MEMBERS 列表并将其格式化为 REPRO/DELETE 命令是迄今为止最困难的一步。事实上,您可能需要链接几个 ICETOOL 步骤才能搞定。除非您有大量使用 ICETOOL 的经验,否则这可能需要很长时间才能弄清楚。这是IBM DFSORT Programming Guide的链接 (ICETOOL 只是 DFSORT 的 BATCH 前端),让您了解您所面临的问题。
我建议另一种方法。尝试编写一个 REXX 过程来替换 ICETOOL 步骤。捕获 LISTDS 输出并将其格式化为适当的 IDCAMS REPRO/DELETE 命令将是一个更简单的过程。
REXX 在几乎所有 IBM 大型机上都可用,因此访问应该不是问题。
如果您需要更多帮助,请提供有关数据集命名约定的更多详细信息。特别是输出 PDS 名称。我不需要或想要确切的名称,只是它们是如何构造的。例如,它们看起来像这样:
其中前 100 个成员被复制到 FILE001,接下来的 100 个被复制到 FILE002 等等。这可以使您制作文件复制实用程序的通用化程度有所不同。此外,您是否继续以 100 个块为单位进行复制,直到输入 PDS 耗尽或是否有一些停止限制?
如果您有一个名为“SAS”的产品,那么将选定的成员从一个 PDS 复制到另一个 PDS 将非常容易。
DATA PDS;
FILENAME OLD 'A*.B*.C*' DISP=SHR;
FILENAME NEW 'A*.B*.D*' DISP=OLD;
PROC PDSCOPY INDD=OLD OUTDD=NEW ALIASMATCH=BOTH
SHAREINPUT;
SELECT AJ:;
RUN;
注意:所有以 AJ 开头的成员都会从旧数据集复制到新数据集。