1

我正在尝试将一些成员从一个 PDS 复制到另一个。假设我在一个 PDS 中有 500 个成员。我正在尝试将前 100 个移至第二个 PDS,下一个 100 移至第三个 PDS,依此类推。复制到另一个 PDS 的成员也应该从源 PDS 中删除。

是否可以使用 JCL 做到这一点?我正在查看 IEBGENER,但我发现我们可以通过指定名称直接复制成员。

4

2 回答 2

1

您可以在几个工作步骤中执行此操作。作为大纲:

  • 将 LISTDS 'input-pds-name' MEMBERS 的输出捕获到数据集中
  • 使用 ICETOOL 操作 MEMBERS 列表以生成 IDCAMS REPRO 和 DELETE 命令
  • 运行 IDCAMS REPRO
  • 运行 IDCAMS DELETE

设置 ICETOOL 以选择 MEMBERS 列表并将其格式化为 REPRO/DELETE 命令是迄今为止最困难的一步。事实上,您可能需要链接几个 ICETOOL 步骤才能搞定。除非您有大量使用 ICETOOL 的经验,否则这可能需要很长时间才能弄清楚。这是IBM DFSORT Programming Guide的链接 (ICETOOL 只是 DFSORT 的 BATCH 前端),让您了解您所面临的问题。

我建议另一种方法。尝试编写一个 REXX 过程来替换 ICETOOL 步骤。捕获 LISTDS 输出并将其格式化为适当的 IDCAMS REPRO/DELETE 命令将是一个更简单的过程。

REXX 在几乎所有 IBM 大型机上都可用,因此访问应该不是问题。

如果您需要更多帮助,请提供有关数据集命名约定的更多详细信息。特别是输出 PDS 名称。我不需要或想要确切的名称,只是它们是如何构造的。例如,它们看起来像这样:

  • HLQ.SOMENAME.FILE001
  • HLQ.SOMENAME.FILE002
  • HLQ.SOMENAME.FILE003

其中前 100 个成员被复制到 FILE001,接下来的 100 个被复制到 FILE002 等等。这可以使您制作文件复制实用程序的通用化程度有所不同。此外,您是否继续以 100 个块为单位进行复制,直到输入 PDS 耗尽或是否有一些停止限制?

于 2010-09-28T16:50:59.393 回答
0

如果您有一个名为“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 开头的成员都会从旧数据集复制到新数据集。

于 2011-06-01T11:36:10.123 回答