430 likes | 574 Views
大型主机平台系统应用开发基础. 教育部- IBM 精品课程. 单位:大连理工大学 作者:陆坤,李凤岐,姜厚云. 第七章 排序与合并. 7.1 排序的概念和步骤 7.2 数据的排序 7.3 数据的合并. 第一节 排序的概念和步骤. 排序与非排序文件处理 排序概述. 排序与非排序文件处理. 排序与非排序文件处理. 排序与非排序文件处理. 排序与非排序文件处理. 排序与非排序文件处理. 排序与非排序文件处理. 排序与非排序文件处理. 排序与非排序文件处理. 排序与非排序文件处理. 排序与非排序文件处理. 排序与非排序文件处理.
E N D
大型主机平台系统应用开发基础 教育部-IBM精品课程 单位:大连理工大学 作者:陆坤,李凤岐,姜厚云
第七章 排序与合并 • 7.1排序的概念和步骤 • 7.2 数据的排序 • 7.3 数据的合并
第一节 排序的概念和步骤 • 排序与非排序文件处理 • 排序概述
排序概述 • 在数据处理中,经常需要对一批数据按按某种方式进行排序,从而为进一步分析数据提供有力的参考,排序是数据处理中最重要和最基本的方法之一 • COBOL本身提供排序功能,无需额外设计 • 在对数据排序时,需指定排序键 (sort key)和排序方法 • 排序键是指记录中需要按此列进行排序的字段,可以分为主键(major/primary key)和次键(minor/secondary key) ,可以同时指定多个排序键 • 排序方法分为升序(ascending)和降序(descending),默认按EBCDIC编码顺序,如: ‘cap’ < ‘cat’, ‘C’ < ‘COBOL’, ‘1’> ‘A’
排序概述 NAME YEAR MAJOR ==================== ============= ======================== Smith 1 Liberal arts Jones 4 Engineering Adams 3 Business Howe 2 Liberal arts Frank 1 Engineering Epstein 2 Engineering Zev 4 Business Benjamin 4 Business Grauer 3 Liberal arts Crawford 2 Engineering Deutsch 4 Business Makoske 1 Business
排序概述 NAME YEAR MAJOR ==================== ============= ======================== Adams 3 Business Benjamin 4 Business Crawford 2 Engineering Deutsch 4 Business Epstein 2 Engineering Frank 1 Engineering Grauer 3 Liberal arts Howe 2 Liberal arts Jones 4 Engineering Makoske 1 Business Smith 1 Liberal arts Zev 4 Business
排序概述 NAMEYEAR MAJOR ==================== ============= ======================== Benjamin 4 Business Deutsch 4 Business Jones 4 Engineering Zev 4 Business Adams 3 Business Grauer 3 Liberal arts Crawford 2 Engineering Epstein 2 Engineering Howe 2 Liberal arts Frank 1 Engineering Makoske 1 Business Smith 1 Liberal arts
排序概述 NAMEYEARMAJOR ==================== ============= ======================== Benjamin 4 Business Deutsch 4 Business Zev 4 Business Adams 3 Business Makoske 1 Business Jones 4 Engineering Crawford 2 Engineering Epstein 2 Engineering Frank 1 Engineering Grauer 3 Liberal arts Howe 2 Liberal arts Smith 1 Liberal arts
排序概述 • 从输入文件中读取记录到排序工作文件 • 使用排序工作文件开始排序 • 将排序结果写入输出文件
第二节 数据的排序 • SORT语句 • 其它语句
SORT语句 SORT SORT-WORK-FILE ON ASCENDING KEY数据项1 数据项2 … ON DESCENDING KEY数据项3 数据项4 … 例1: SORT STUDENT-FILE ASCENDING MAJOR DESCENDING YEAR ASCENDING NAME 例2: SORT STUDENT-FILE ASCENDING MAJOR NAME DESCENDING YEAR
SORT语句 • 格式1: SORT SORT-WORK-FILE ASCENDING 数据项1 数据项2 … DESCENDING 数据项3 数据项4 … USING SORT-IN-FILE GIVING SORT-OUT-FILE • 格式2: SORT SORT-WORKFILE ASCENDING 数据项1 数据项2 … DESCENDING 数据项3 数据项4 … INPUT PROCEDURE过程名1 [ THRU 过程名2 ] OUTPUT PROCEDURE 过程名3 [ THRU 过程名4 ]
SORT语句 • USING自动对输入文件进行I/O操作; INPUT PROCEDURE 需要程序员编码进行I/O操作 • USING只能对输入文件的所有记录进行排序; INPUT PROCEDURE 可以对输入文件的记录进行过滤后再排序 • USING 只能对输入文件中已有列进行排序; INPUT PROCEDURE 可以对计算列(calculated field)排序 • GIVING 将排序结果保存到永久文件; OUTPUT PROCEDURE 只将结果保存在临时文件
其它语句 • 在环境部用SELECT语句定义输入和输出文件,在数据部用FD语句进行描述 • 在环境部用SELECT语句定义排序工作文件,在数据部用SD语句(sort descriptor)进行描述 • 注意: 格式1中SD记录区长度应和输入记录区相同; 而格式2可以不同
其它语句 • RELEASE语句类似于WRITE,将数据写入排序工作文件缓冲区,格式如下: RELEASE sw-file-record FROM identifier • RELEASE语句只能用于INPUT PROCEDURE,且至少使用一次 • RETURN语句类似于READ,将数据从排序工作文件缓冲区读出,格式如下: RETURN sw-file INTO identifier • RETURN语句只能用于OUTPUT PROCEDURE,且至少使用一次
第三节 数据的合并 • MERGE 语句
MERGE语句 • 合并是排序的一种特殊形式,将多个格式相同且按相同排序方式排序的文件组合成一个新的文件 • 格式: MERGE merge-work-file ON ASCENDING KEY sort-key1 sort-key2 … ON DESCENDING KEY sort-key3 sort-key4 … USING sorted-file1 sorted-file2 … GIVING merged-file | OUTPUT PROCEDURE 过程名1 [ THRU 过程名4 ]
MERGE语句 • 排序键的使用同SORT命令 • sorted-file*的文件用FD描述,merge-work-file 用SD描述,merged-file用FD描述 • 不能使用INPUT PROCEDURE语句
Thank You www.themegallery.com