对文件进行排序和合并

关于此任务

您可以使用 SORTMERGE 语句按特定顺序排列记录。 您可以在同一个 COBOL 程序中混合使用 SORTMERGE 语句。

注: 本主题中描述的 SORT 语句,排序过程和排序限制仅与格式 1 SORT 语句相关。 有关使用格式2 SORT 语句对表格进行排序的更多信息,请参阅排序表格
SORT 语句
接受不在序列中的输入 (来自文件或内部过程) ,并按请求的序列生成输出 (到文件或内部过程)。 您可以在记录排序之前或之后添加,删除或更改记录。
MERGE 语句
比较两个或更多已排序文件中的记录,并按顺序组合这些记录。 您可以在合并记录后添加,删除或更改记录。

程序可以包含任意数目的排序和合并操作。 它们可以是多次执行的相同操作,也可以是不同的操作。 但是,一个操作必须在另一个操作开始之前完成。

使用时 Enterprise COBOL ,您的 IBM® 许可程序用于排序和合并必须是DFSORT或同等产品。 如果提到 DFSORT ,那么可以使用任何等效的排序或合并产品。

COBOL 包含 SORTMERGE 语句的程序可以位于 16 MB 线之上或之下。

您执行的排序或合并步骤通常如下所示:

过程

  1. 描述要用于排序或合并的排序或合并文件。
  2. 描述要排序或合并的输入。 如果要在对记录进行排序之前对其进行处理,请对输入过程进行编码。
  3. 描述排序或合并的输出。 如果要在对记录进行排序或合并后处理这些记录,请对输出过程进行编码。
  4. 请求排序或合并。
  5. 确定排序或合并操作是否成功。

结果

限制:

  • 在 环境下,您无法运行包含 SORTMERGE 语句的 COBOLz/OS UNIX 程序。 此限制包括 BPXBATCH。
  • 不能在使用 THREAD 选项编译的程序中使用 SORTMERGE 语句。 这包括使用面向对象语法和多线程应用程序的程序,这两类程序都需要 THREAD 该选项。此外,使用`if SORT `或 MERGE `else`语句的 COBOL 程序不能直接或间接调用其他需要 z/OS Unix系统服务或使用多线程的应用程序。 例如,JVM 会同时使用这两种语言。
  • 您不能使用 "DFSORT传统技术。 常规技术用于以下情况:
    • 指定了 NOBLKSET 选项。 BLKSET 是调用 DFSORT时的缺省值。
    • 磁带设备用于中间工作存储器。
    • L5 在 DFSORT OPTION 控制的 RECORD 语句中使用。 L5 指定平均记录长度。 可以使用 AVGRLEN=n 语句来指定相同的值,而不是使用 L5。

    为协助迁移旧版 COBOL 程序,针对在AMODE 31环境中运行的程序,现提供容忍运行时APARs: PH20569(z/OS ( 2.2 )和 PH21261(z/OS ( 2.3/2.4 )。 AMODE 64 没有容错。 有关详细信息,请参阅《 使用 DFSORT 选项 NOBLKSET 》( Enterprise COBOL 迁移指南 )。

相关概念
排序和合并过程

相关参考资料   
CICS SORT 应用程序限制
  
排序语句 (Enterprise COBOL for z/OS 语言参考)  
MERGE语句 (Enterprise COBOL for z/OS 语言参考)