GB/T 4092.7-1992
标准分类号
标准ICS号:信息技术、办公机械设备>>35.060信息技术用语言
中标分类号:电子元器件与信息技术>>信息处理技术>>L74程序语言
出版信息
出版社:中国标准出版社
页数:12页
标准价格:37.0 元
出版日期:1993-05-01
相关单位信息
首发日期:1983-12-26
复审日期:2004-10-14
起草人:钱树人、王静英、冯惠、段祥
起草单位:南京大学
归口单位:全国信息技术标准化技术委员会
提出单位:中华人民共和国机械电子工业部
发布部门:国家技术监督局
主管部门:国家标准化管理委员会
标准简介
排序-合并模块,提供这样一种功能:按照一组由用户提出的包含在每个记录中的键,对一个或多个文卷中的记录排序或者合并两个或多个有同样次序的文卷中的记录。 GB/T 4092.7-1992 程序设计语言COBOL 排序--合并模块 GB/T4092.7-1992 标准下载解压密码:www.bzxz.net
标准内容
1引言
1.1 功能
中华人民共和国国家标
程序设计语言COBOL
排序合并模块
Programming LanguageCOBOL
Sort-merge module
GB/T 4092.7—92
代替 GB 4092. 7—83
排序-合并模块,提供这样一种功能:按照一组由用户提出的包含在每个记录中的键,对个或多个文卷中的记录排序或者合并两个或多个有同样次序的文卷中的记录。此外,用可以选用输人或输出过程对记录进行特定的处理。这种特定处理可以在记录被SORT语句排序之前或之后应用或在记录被MERGE语句合并之后应用。
1.2语言概念
1.2.1排序义卷
排序文卷是由SORT语句进行排序的记录集。排序文卷没有程序员能够控制的标号过程,并且对于分块及内部存储分配的规则仅由SORT语句所特有。就缓冲区、块或卷而论,REILEASE语们以及RETURN语句没什么意义。然而,排序文卷可以认为是一个内部文卷,该文卷根据输入文卷建立(RE-LEASE语句),进行处理《SORT语句),然后使之成为可用的(RETURN语句)输出文卷。排序文卷通过文卷控制款命名并由排序-合并文卷描述款来描述。排序文卷通过RELEASE,RETURN 和 SORT 语句引用。
1.2.2合并文卷
合并文卷是由MERGE语句进行合并的记录集。合并文崔没有程序员能够控制的标号过程并且对丁分块及内部存储分配的规则仪由MERGE语句实行。就缓冲区、块或卷而论,RETURN语句没什么意义。然而,合并文卷可以认为是一个内部文卷,该文卷根据输入文卷建立并通过对它们的合并(MERGE语句),成为可用的(RETURN语句)输出文卷。合并文卷由文卷控制款命名并由排序-合并文卷描述款描述。合并文羞通过RETURN 和 MERGE语句引用。
2排序-合井模块的环境部
2.1输入-输出节
涉及输入-输出节的信息见顺序[-0模块的2.1。2.2FILE-CONTROL 段
涉及FILE-CONTROL段的信息见顺序I-O模块的2.2。2.3文卷控制款
.2.3.1功能
文卷控制款说明排序或合并文卷的有关物理属性,国家技术监督局1992-08-04批准1993-05-01实施
2.3.2~-般格式
2.3.3语法规则
GB/T 4992.7—92
SELECT文卷名1ASSIGNTO
【实现名1
学倘1
(1)数据部中描述的每一个排序或合并文卷,在FI.E-CONTROI.段中能且只能指称-次。SELECT子句中指山的每一个排序或合并文卷在尚一程序的数据部中必须有一个排序-合并文卷描还款。(2)因为文名1表示一个排序或合并文卷,所以在FILE-CONTROL段中只有ASSIGN子句允许跟在文卷名「之后。
2.3.4一般规则
(1)ASSIGV子句指出文卷名1引用的文卷和实现名1或字值1引用的存储媒体的联系。2.4 1-O-CONTROL段
2.4.1功能
I-O-CONTR(1.段指出包括排序或合并文卷的不同文卷共的存储区。2.4.2--般格式
I O.CONTROL.
RECORD
2.4.3语法规则
SORT-MERGE,
AREA FOR 文卷名 14文卷名 21
<1)SAME子句RECORD选择的可用性依赖于出实现支摔的顺序I-O模块的级。2.4.4一般规则
(1)有关排序-合并模块的SAMERECORD/SORT/SORT-MERGEAREA子句在下面介绍。2.5SAMERECORD/SORT/SORT-MERGEAREA子句)2.5.1功能
SAMERECC>RD/SORT/SORT-MERGEAREA了句中指出不同文卷(至有一个是排序或合井文卷)共享的存储区。
-般格式
FRECORD
SAMESORT
SORT-MERGE
2.5.3语法规则
AREAFOR文卷名1文卷名2)
(1)在SAMFRFCORD/SORT/SORT-MERGEAREA中子句指出的每个文卷名必须在同-一程序的 FILE-CONTROL段中指出。
(2)文卷名1和文卷名2不可引用外部文卷连接符。(3)SORT和SORT-MERGE是等价的。(4)除非使用S()RT,SORT-MERGE或RECORD短语,否则,表示排序或合并文卷的名不能出现在SAME子句中。
(5)在一个程序中可以出现多个SAME予付,然而:..个文卷名-定不能出现在两个或两个以上的SAMERECOREAREA子句中。b.表示排序或合并文卷的文卷名不能出现在多于,个SAMESORTAREA或SAMESORTMERGEAREA子衔巾。
C如果在SAME子句和一个或若十个SAMESORTAREA或SAMESORT-MERGEAREA子句中出现了不是表示排序或合并文卷的文卷名,则SAME子句中命名的所有文卷名都必须在那个GB/T4092.7—92
SAMESORTAREA或SAMESORT-MERGEAREA子句中命名(6)在SAMESORTAREA,SAME SORT-MERGEAREA或SAME RECORDAREA子句中用的文券名不要求有相同的组织和存取方试。2.5.4般规则
(1)SAIERFCORDAREA子句指出文卷名1、文卷名2引用的两个或多个文卷在处理当前遥辑记录中共享同一个存储区。所有这些文卷可以间时处于打开方式。在SAMERECXRDAREA中的逻辑记录被看成是在SAMERECORDAREA子句中出现的每个被打开的输出文卷的逻辑记录和布SAMERECORDAREA子句中出现的最近读入的输人文卷的逻辑记录。这等价于隐含的存储区重定义,即记录对齐于最左字符位置。(2)如果使用SAMESORTAREA或SAMESORT-MERGEAREA了句,那么这些文卷名中至少有一个是表示排序或合并文卷的。该子句指出存储区按以下规定共享:SAMESORTAREA或SAMESORT-MERGEAREA子句指出一个存储区,它对于每·个已命名的排序或合并文卷在排序或合并时是可用的。因此为排序或合并文卷的排序或合并分配的存储区,在任·其它排序或合并文卷的排序或合并时也是可以重新使用的。b此外,分配给非排序或合并的文卷的存储区,也可以根据排序或合并的需要分配给在SA.MESORTAREA或SAMESORT-MERGEAREA子句中命名的排序或合并文卷。这种分配的范围将由“实现者指出。
.非排序或合并文卷彼此不共享间一个存储区。但是如果用户希望这些文卷彼此共享同一个存储区的话,程序必须包含SAMEAREA或SAMERECORDAREA子付,指出与这些文卷相关联的文卷名。
d在引用该子句中命名的排序或合并文卷的SORT或MERGE语句执行期间,在这个子衍中命名的任何非据序合并文卷不能被打开。3排序-合并模块的数据部
3.1文卷节
文卷节位于源程序的数据部。文卷节定义排序和合并文卷的结构。每个排序文卷或合并卷通过一个排序合并文卷描述款以及一个多个记录描述款来定义。记录描述款紧接在排序合并文卷描述款之后书写。
下面给出排序-合并模块中文卷节的一般格式。FILESECTION
[排序合并文卷摘述款
{记录描述款
3.1.1排序-合并文卷描述款bZxz.net
在COB)I.程序中、排序合并文卷描述款SD款表示文卷节中最高层组织。文卷节首后面限由层指示符(SD)、文卷名及一系列独立子句组成的排序合并文卷描述款。排序合并文卷描述款(SD款)的了句规定与排序文卷或合并文卷相关联的数据记录拿按管没有用户可以控制的标号过程.分块规则和内部存储规则仪由SORT和MERGE语句所专用。排序合并文卷描述款用句点结束。3.1.2记录描述结构
记录描述由描述特定记录之特性的一组数据描述款组成。每个数据描述款由层号跟以数据名或FILLER子句(若指出的话),在需要时再眼以一系列独立的子句。记录描述可以有层次结构,因此使用某一款的子句可以为不同,这依赖于其后是否跟以从属款。数据描述款中特定子句的可用性依赖于由实现支撑的核心模块的级。:
3.1.3初值
GB/T 4092.7—92
在文卷节中数据项的初值是无定义的。3.2排序-合并文卷描述款
,3.2.1功能
排序-合并文卷描述款提供关于排序或合并文卷的物理结构和记录名信息。3.2.2一般格式
FD文卷名1
(CONTAINS 整数 1 CHARACTERS
RECORIK
IS VARYING IN SIZE [IFROM 整数 2JTO 整数 3]CHARACTERS][DEPENDING ON 数据名]
[CONTAINS 整数 4 TO 整数 5 CHARACTERS(数据名2)
RECORD[S
IRECORDS AREJ
3.2.3语法规则
(1)层指示符SD表明排序·合并文卷描述的开始,并且必须位于文卷名1前面。(2)跟忙文名1后面的各子句是任选的,而且出现的次序是无关紧要的。(3)排序或合并文卷描述款后面可以个或冬个记录描述款。然而,不能对这种文卷执行输入-,输出语句。
(4)REC()RD子句的格式2的可用性依赖于实现支撑的顺序I-O模块的级。3.2.4一般规则
(1)排序-台并模块的DATARECORDS子句与顺岸I-O模的DATARECORDS子何相同。因此DATARFC(RDS子句的说明见顺序I-O的3.5。在标准COBOL的这一版本中视DATA.RFCURDS子句是过时成分,因为在标准COBOL的以后的修改版中要把它删掉。(2)排序-合并模块的RCOR)子句与顺序I-O模块的RECORD子句相同。因此RECORD子句的说明见频序 I-() 的 3. 8。
4排序-合并模块的过程部
4.1MERGE语句
4.1.1动能
MIERtiF语句按照·组指定的键,把两个或多个有相同顺序的文卷合并在·-起。在这一处理期间。MERGE语可按合并序使记录对输出过程或输出文卷可用。4.1.2-般格式
MERGE 文卷名1
IASCENDING
KEY(数据名1)
IDESCENDING
[COLLATING SEQUENCE IS 宇母表名 1]]USING 文卷名2 (文卷名 3) *
OUTPUT PROCEDURE IS 过程名1
[GIVING(文巷名..
4.1.3语法规则
THROUGH
(1)MERGE语旬可以在过程部中除申述部分以外的任何地方出现。(2)文卷名1必须在数据部的排序合并文卷描述款中被描述。过程名
3)若文卷名1引用的文卷包含变长记录,则文卷名2及文卷名3引用的文卷中所含记录的长度不能小十文卷名1描述的最小记录也不能大于文卷名1描述的最大记录。若文卷名1引用的文卷含有定长记录,则义卷名2及文卷名3引用的文卷中所含记录的长度不能大于文卷名1描述的最大记录。GB/T4092.7—92
(4)数据名1是键数据名并且遵守下列规则:由键数据名标识的数据项必须在文卷名1相关联的记录中描述。a.
b.键数据名可以受限。
键数据名标识的数据项不能是包含变长数据项的组项。c
d.如果文卷名1有多个记录描述,那么要求由键数据名指出的数据项仅能在一个记录描述中描述。把在-个记录描述款中,键数据名引用的相同字符位作为该文所有记录的键。e.
出键数据名指出的那些数据项不可以在包含有(CCURS子句或隶属于包含有OCCURS子付的款中描述。
f.芥文卷名1引旧的文卷含有变长记录,则由键数据名标识的全部数据项必须被包含在记录的开始的X个字符位中,这里X等于文卷名1引用的文卷所规定的最小记录长度。(5)文卷名2、文卷名3和文卷名4必须在数据部的文卷描述款.而不在排序合并描述款中描述。(6)多文卷带卷中的文卷名最多只能有一个出现在MERGE语句中。(7)MFRGE语句中同一文卷名不可以重复出现。(8)在MERGE语句中没有一对文卷名可以被规定在同一SAMEAREA,SAMESORTAREA或 SAME SORT-MERGE AREA子句中,MERGE语句中能被规定在间SAMERECORD AREA子旬中的仅是那些与GIVING短语相关联的文卷(见 GB/T 4092.4中 2.13 SAME子句和 2.5 SAMERECORD/SORT/SORT-MERGEAREA子)。:(9).字THRU和 THROUGH是等价的。(10)若文卷名 4 引用索引文卷,则数据名 1 的第一个说明必须与 ASCENDING 短语有关,并且由数据名1引用的数据项在记录中占有的字符位置必须与那个文卷的主记录键相关的数据项相同。(II)若指定了GIVING短语,且文卷名 4引用的文卷含有变长记录,则文名 1引用的文卷中所含的记录长度不能小于文卷名4描述的最小记录,也不能人于其最大记录的长度。茗文卷名4引用的文卷包含定长记录,则文卷名1引用的义卷中所含的记录长度不能大于文卷名4描述的最大记录长度。4.1.4一般规则
(1)MERGE语句将合并所有包含在文卷名2和文卷名3引用的文卷中的记录。(2)若文卷名1引用的文卷仅含定长记录,则对文卷名2或文卷名3引用的文卷中,任何长度小于那个定长的记录,当记录被发送到文卷名1引用的文卷上时,在那个记录的最后一个字符之后,从其后在边第一字符位置开始填以空格,空格的数目就是比定长少的那些字符位置数。(3)跟在字KEY后面的数据名,在MERGE语句中按其重要性的递降次序从左到右地排列而不管它们是如何被划分到各KEY短语中去的。最左边的数据名是主键,下个数据名是下一个重要的键,依此类推。
当指出ASCEVDING短语时,合并顺序是键数据名指出的数据项内容从最低值到最高值的颇序,这根据关系条件中运算对象比较的规则进行。b,当指出DESCENDING短语时,合并顺序是键数据名指出的数据项内容从最高值到最低值的顺序,这根据关系条件中运算对象的比较规则进行。(4)按照关系条件中运算对象的比较规则,当一个数据记录的所有键数据项的内容等于一个或多个其它数据记录的相应键数据项的内容时,这些记录的回送次序是:a。按照 MERGE 语句中指出的相关输人文羞的次序进行。b.与一个输入文卷相关的所有记录在另一个输入文卷的记录回送之前被同送。(5)用于非数值键数据项比较的对比序列在MERGE语句执行开始时,按下列优先饮序决定::首先,如果MERGE语句中指出COLLATINGSEQUENCE短语的话,就根据CL.LATINGSEQUENCE短语建立对比序列。
b。其次,建立和程序的对比序列一样的对比序列。GB/T 4092.7—92
(6)仅当文卷名2和文卷名3所引用之文卷的记录按MERGE语句中ASCENDING或T)ESCENDINGKEY短语的规定排序时,合并操作的结果才是可预测的。(7)文卷名2和文卷名3引用的文卷中的全部记录被传送到文卷名1引用的文卷中。在执行MERGE语句的F始时文卷名2和文卷名3叫用的文卷不能处于打开状态。对义卷名2和文卷名3引用的每一个文卷,MERGE语句的执行引起下述动作::初始化文卷处理。执行初始化就象执行了具有INPIIT短语的OPEN语句一样。若输出过程被指出,则在控制转到输出过程之前执行这个初始化。b.逻辑记录被获取并被发放给合并操作。获取每个记录就象执行了具有NEXT和ATEND短语的READ语句样
终止文卷处理。执行终止就象执行了没有任选短语的CLOSE语句··样。若输出过程被指出,C
则直到控制通过输出过程的最后一个语句之后才执行这个终止。执行这些隐式功能,犹如执行相关的USEAFTEREXCEPTION或ERROR过程一-样。(8)输出过程可以由这样一些过程组成,这些过程是从文卷名1引用的文卷上选择、修改或复制记录所必需的,RETURN语句依合并次序一次可使一个记录成为可用的。范国包括:在输出过程范围内由执行CALL、EXIT、GOTO和PERFORM语句引起控制转移的全部语们;还有申述过程中的全部语句,这些语句由输出过程范围中语句的执行引起其执行。输出过程的范围内不能导致任何MERGERELEASE或SORT语台执行。(9)如果指出输山过程,则在MERGE语句执行期间转向它。编译程序在输出过程最后-句的结束处插入返同机制。在控制到达输出过程的最后一个语句时,返回机制终止合并处埋然后把控制转移到MERGE语句后的下一个可执行请句。在进入输出过程之前,合并过程到达这样的一点,在这一点处可,以按合并次序选取需要的记录。在输出过程中为了取得下一个记录,RETURN语句是必需的。(10)输出过程的执行期问,不能执行对文卷名2或文卷名3引用的文卷进行管理或访问其有关的记录区的语们。在执行MERGE讲句时隐式引用的任何USEAFTEREXCEPTION过程的执行期间,不能执行对文卷名2、文卷名3或文卷名4引用的.文卷进行管理,或访间其有关的记录区的语句。(11)若GIVING短语被指出,则所有已合并的记录书写到文卷名4引用的文件上,如同MERGE语句所隐含的输出过程一样。在执行MERCE语句的开始处,文卷名4引用的文卷不能处下打开状态。对文卷名4引用的每--个文卷,MERGE语句的执行导致下述动作:a.韧始化文卷处理。执行初始化就象执行了具有OUTPUT短语的(PEN语句。b.已合并的逻转记录被回送并被写到该文卷。写出每个记录就象执行了不带任何任选短语的WRITE语句
对于相对文罄,回送的第一个记录的村对键数据项值为“1\;同送的第二个记录,值为2”,等等。MERGE语句执行以后,相对链数据项的内容指示回送到该文卷的最后记录。C
终止义卷处理。执行终止就象执行了不带任选短语的CIOSE语句执行这些隐含功能,犹如执行相的USEAFTEREXCEPTION或ERROR过程一样;然而,执行这种UISE过程不能引起管理由文卷名4引用的文卷或访问与其相关的记录区的语句的执行。在第一次企图往文卷定义的边界之外写记录时,就执行对该文卷规定的任一USEAFTERSTANDARDEXCEPTIN或ERROR过程,当控制从那个USE过程返回或若没指出这种USE过程时,如同上述11C段样,整止对文卷的处理。
(12)若文卷名4引用的文卷只含定长记录,则对文卷名1引用的文卷中任一长度小于那个定长的记录,当记录被回送到文举名4引用的文卷上时,在那个记录的最后一个字符之后,其右边第一字符位置开始填以空格,空格的数目就是比定长少的那些字符位置数。(13)程序分段可以应用于包含MERGE语句的程序,然而要应用如下限制:a,如果MERGE语句不是在独立程序段中出现,那么MERGE语句引用的任何输出过程必须:GB/T 4092.7—92
1)全部出现在非独立的程序段中,或2)全部包含在一个独立的程序段巾。b.如果MERGE语句出现在独立的程序段中,么MERGE语句引用的任何输出过程必须:1)全部包含在非独立程序段中,或2)全部包含在MERGE语句所在的同一个独立程序段巾。4.2RELEASE谱句
4.2.1功能
REIEASE语句传送记录给SORI操作的初始阶段。4.2.2·般格式
RELEASE 记录名 1 [FROM 标识符 1] 4.2.3语法规则
(1)记录名1必须是排序合并义卷描述款中的逻辑记录名,并且可以受限。(2)REI.FASE语句只能在与某一个文卷的SORT语句相关联的输入过程范围内使用,该文卷的排序合并文卷描述款包含有记录名1。(3)记录名1和标识符1不能引用同*个存储区。4.2.4-股规则
(1)RELEASE语的执行使得记录名1指称的记录被发放给排序操作的初始阶段,(2)RELEASE语句执行之后,除非与记录名1有关的排序合并文卷已在SAMERECORI AREA了句中指出,否刚记录区中的逻辑记录不再可用。和输出文卷有关的在同一个SAMERECORD AREA子句中引用的其它文卷的记录,以及记录名1相关的文卷对程序都还是可用的。(3)具有FROM短语的RELEASE语的执行结果与按指明的顺序执行下述语句的结果等价:a.按照对MOVE语句所指明的规则执行:MOVE 标识符 1TO 记录名 1
b.不带FROM短语的同·RELEASE语句。(4)RELEASE语句的执行完贼以后,与标识符1相关联的数据区的内容是可用的。记录名 1引用的数据区中的信息己不再可用,用SAMERECORDAREA子句规定时为例外。4.3RETURN语句
4.3-1功能
RETUR语付从SORT操作的最后阶段获得排序好的记录或在MEREE操作期间获得合并好的记录。
·般格式
RETURN 文卷名1 RECORD [INTO 标识符1]ATEND命令语句1
[NCT AT END 命令语句 2._
TEND-RETURNJ
4.3.3语法规则
(1)跟标识符1相关联的存储区和跟文卷名1相关联的记录区不能是间一个存储区。(2)文卷名1必须在数据部的排序合并文卷描述款中描述。(3)RETLRN语句只能征和SORT或MERGE语句相关联的输出过程范围内对文卷名1使用。4.3.4一般规则
(1)当一个文卷的逻辑记录用一个以上的记录播述来描述时,这些记录白动地共享同一个存储区,这等价于隐舍的区重定义。任何落在当前数据记录范围之外的数据项的内容,在RETURN语句执行完成后是无定义的。
GB/T 4092.7—92
(2)REIURN语句的执行使得文卷名1的下一个现存记录在与文卷名1相关联的记录区里成为可用的。这下个记录根据SORT或MERGE语句中列出的键指出的次序来决定。若文卷名1不存在下一个逻辑记录,则出现末端条件并把控制转到ATEND短语的命令语句1。接照命令语句1中指出的各语句的规则继续执行.若执行了过程分支或显式引起控制转移的条件语句,则按照那个谱句的规则执行控制转移否购,在命令语奇1执行完戒后,控制转向RETLURN语的结尾处开耳忽略NOTATEND短语(若被指出)。当末端条件出现时,RETURV语句的执行是不成功的而国与文卷名1相关联的记录区的内容是无定义的。在ATEVD短语中的命令语句1执行以后,RFTURV语句不能再作为当前输出过程中的一部分执行,
(3)若在RETURV语执行期间,术出现未端条件记录是可利用的并F1根据 [NTO 短语的存在情说执行隐含的MOVE操作,控制转向命令语句2(荐指出):否则.控制转问RETURN语句的结尾处
(4)END-RETURN短语限定RETURN语句的作用域(见预备辩识6.6.4.3语句的作用域)。(5)RETURN语们中可以规定INTO短语:。仅当一个记录描述从属于排序合并文卷描述款时,或b与文卷名1关联的全部记录名及标识符1引用的数据项描述组顶或初等孚符项时。(6)其有1VTO短语的RETURN语句的执行结果等价了按序应川下述舰则:.不带INTO短语的同一RETURN语句的执行。b,按照不带CORRESPONDING短语的MOVE语句的规则把当前记录从记录区送到标识符1指定的区。根据RECORD子句指出的规则确定当前记录的长度。若文券描述款包合RECORDISVARYING子句,则隐含的移动是成组移动。当RETURN语句执行失败时.不出现隐含的MOVE语向。与标识符1相关联的任何下标在记录被读以后和传送到数据项之前即计算。在记录区和标识符1引用的数据项量的数据均是可用的。4.4 SORT语句
4.4.1功能
SOR工语句通过执行输入过程或传送另一个文卷的记录以建之排序文券,在排详文卷中按照指出的一组键对记录排序。然后,在排序操作的最阶段,使得排序文卷中的每:·个记录按照排序的次序,对某些输出过程或输出文卷可用。4.4.2-般格式
SORT 文卷名1{ON
JASCENDING
DESCENDING
KEY数据名I.
[WITH DUPLICATES IN ORDFR ]
[COLLATING SEQUENCE IS 字表名 T(THROUGH
INPUTPROCEDUREIS过程名1
LITHRU
USING「文卷名2]
OUTPUTPROCEDUREIS过程名3
IGIVINGi文卷名3]
4.4.3语法规则:
过程名2
THROUGH;
(1)SORT语句可以在过程部中除申述部分以外的任何地方出现。(2)文卷名1必须在数据部排序合并文卷描述款中播述。过程名4
(3)若指明IJSING短语,而月文卷名1引用的文卷包含变长记录求则义券名2引川之文卷所包含记录的长度不能小于文卷名1描述的最小记求,也不能人」其最人记录的长度.若文卷名1引用的文卷GR/T 4092 7-92
包含定长记录,则文券名2引川之文卷所含记录的长度不能大于文卷名1引用文卷描述的最大记录长度。
(4)数据弃1是键数据·并要遵舒下列规则:由键数据名标识的数据项必须在相关联的文卷名1的记录中描述。a.
键数谢名可以受限。
C、由键数据名标识的数据项不能是包含变长数据项的组项。d,如果文卷名1有多个录描述,则市键数据名标识的那些数据项只在唯一的一个记录描述中描述。把在个录捆述中,链数据名引用的相同字符位臂作对该文卷所有记录的键。e:由键数据名标识的数据项不能在被包含OCCURS子句的描述献中,或隶属于包含OCCURS子句的描述款中描述。
f.若文卷名1引用的文卷包含定长记录,那么由键数据名标识的全部数据项必须被包含在记录的开始X个字符位置中,这里X等于文卷名1引用的文卷所指明的最小记录长度。(5)字 THRU 和 THROUGII 是等价的。(6)文卷名2和文卷名3必须在数据部的文卷描述款,而不在排序合并文卷描述款中描述,(7)文卷名2文卷名3引用的文羞可以驻留在同--个多文卷卷上。(8)若文卷名3引用了索引文卷,数据名1的第一个说明必须与ASCENDING短语相关,并且由数据名1引用的数据项在记录中占有的字符位置必须与那个文件的主记录键相关的数据项一样。(9)在同SORT语句中,没有一对文卷名可以被规定在同--个SAMESORTAREA或SAMESORT-MERGEAREA子句中。与GIVING短语相关联的义卷名不能在尚一SAME子句中指出(见GB/T 4092.4 牛 2.13 SAME-和 2.5 SAME RECORD/SORT/SORT-MERGE AREA 子句)。(10)若指阴了GIVINC短语:且文卷名3引用的文卷包含变长记录,则文卷名1引用之文卷所含记录的长小能小于文卷名3猫述的最小记录,也不能无于其最大记录的长度。者文卷名3引用的文卷含有定长记录,则文卷名1引用文卷所含记录的长度不能大于文卷名3引用的文卷的最人记录长度。4.4.4一般规则
(1)若文卷名1引用的文卷仅含定长记录,则对文卷名2引用的文卷中任何长度小于那个定长的记录,当记录被发放到文卷名1引用的文卷上时,在那个记录的最后-一个字符之后,其右边第一字符位置开始填以牢格,牢格的数就是比是长少的那些学符位置数。(2)在SORT语句!跟在字KEY后闻的数据名·按照重要程度的递减次序从左到右地列出,而不考虑它们如何被划分到各KFY短语中去。最左边的数据名是主链,下一个数据名是下:个最重要的键,依此类推。
a。当指出ASC:FVI>ING短语时,排序顺序将是按链数据名指出的数据项内容的最低值到最高值题序。这依据关系条件中的运穿对象比较规则进行。h.当指出PFSCENDING短语时·排序顺序将是按键数据名指出的数据项内容的最高值到最低值顺序。这依据关系条件中的运算对象比较规则进行。(3)若指出DIJP1.ICATES短语,并且与一个数据记录相关的所有键数据项的内容等于与一个或多个其它数据记求相关的相应数拼项的内容,则这些记录的回送淡序是:。按照SC)RT语句中指明的相关输入文卷的次序。在给定的输入文卷中,按对该文卷存取记录的欲岸。
。当输入过程被指出时按照输入过程发送这些证求的次序(4)若未指山IJUIFI.IC'ATES短语,而与个数据记录相关的所有键数据项的内容等于与一个或多个其它数据记录相关的相应键数据顶的内容,则这些记求的回送次序是末定义的。(5)应用十非数值键数抛项比较的对比序列在执行SORT语句的开始时接下列优先次序决定:9、首先,如果在SORT语句中指出COLLATINGSEQUENCE短语,则根据COLLATINGSE-QUENCE短语建立的对比序列。
GB/T 4092.7-92
b,其次,建立和程序的对比序列一样的对比序列。(6)SORT评句的执行由下面三个不同的阶段组成:a.使记录对义卷名1引用的文卷成为可用的。为达此目的,或通过执行输人过程中的RELEASE语句或通过隐含执行对文卷名2的READ语句,在本阶段开始时,文卷名2引用的文卷不能处于打开方式。在本阶段终止时,文卷名2引用的文卷不是处于打开方式。b,文卷名1引用的文卷是顺序的。在这阶段期间,对文卷名2和文卷名3引用的文卷不作处理。c。文卷名1引用的文卷记录可按排序好的次序应用。排序好的记录或者写到文卷名3引用的文卷中或者通过执行RETURN语句使记录成为可用的以便输出过程处埋。在本阶段J始时,文卷名3引用的文卷不能处丁打开方式。在本阶段终止时,文卷名3引用的文卷不是处于打开方式。(7)输入过程可以出这样一些过程组成,这些过程是从文卷名1引用的文件上选择、修改或复制记录所必需的,KEIL.EASF语何-一次使一个这样的记录成为可用的。范围包括:在输入过程范用内由执行CALL、EXITGOTO和PERFORM语句引起控制转移的全部语勺;还有申述过程中的全部语句,这些语句由输入过程范围中语句的执行引起其执行。输入过程的范围不能导致任何MERGE,RETURN或SURT语句执行。(8)如果指出输入过程.则在文卷名1由SRT语句排序之前。控制转到输入过程。编译程序在输入过程的最后语句的未端插入返回机制,当控制达到输入过程中的最后一个语句时,被释放到义卷名1上的记录己排序。
(9)若指出USING短语,由文卷名2引用的诸文卷的全部记录被送到文卷名1引用的文卷中。对文卷名2引用的每个文卷,执行S(>RT语句导致下列动作:初始化文卷处理。执行初始化就象执行具有INPUT短语的OPEN语句-一样。h逻辑记录被获取并发送给排序操作。获取每个记录就象执行了具有NEXT和ATEND短语的 READ语句一样。
对相对文卷,若文卷名2在GIVING短中被引用,则在SORT语句执行以后,相对键数据项的内容是无定义的。
终止文卷处理。执行终止就象执行了不带任选短语的CLOSE诉句-样。在文卷名1引用的文卷被SORT语句排序之前执行这个终止。执行这些隐含功能,犹如执行相关的USEAFTEREXCEPTION或ERROR过程一样,然而,执行这种UJSE过程不能引起管理由文卷名2引用的文卷或访问与其相关的记录区的语句的执行.(10)输出过程可以由这样·些过程组成,这些过程是从文卷名1引用的文件上选择,修改或复制记录所必需的,RLTURN请句一次可使一个记录成为可用的。范围包括,在输出过程范图内由执行CAII.,FXIT,GOTO和PERFOM语句引起控制转移的全部语句还有申述过程中的全部语创,这些语句由输出过程范围中语句的执行引起其执行。輪出过程的范围不能导致任何MERGE,REILEASE或SORT语句的执行。(11)如果指出输出过程,则文卷名1引用的文卷被SORT语句排序以后控制转向它。编译程序在输出过程最后语句的末端插入一个返回机制,当控制转移到输出过程的最后··个语句时,返向机制就结束排序,然后控制转移到SORT语句后的下一个可执行语句。在进人输出过程之前,排序过程到达这样的-点,在这一点处可以按排序次序选取需要的记录。在输出过程中为取得下一个记录,RETURN语句是必需的。
(12)如果指出IVING短语,布文卷名1上的所有排序过的记录自动地被写到文卷名3上去,犹如SORT语句隐含的输出过程一样,对文卷名3引用的每个文卷,SCRT语句的执行导致下述动作:.初始化.文卷处理。执行初始化就象执行了具有OUTPUT短讲的OPEN语句。在任输入过程执行以后,执行这个初始化。。
GB/T 4092.7—92
h,排序好的逻辑记录被回送并写往该文卷。写记录就象执行了不带任何任选短语的WRITE语对相对文卷,回送的第一个记录的相对键数据项值为“1\;回送的第二个记录,值为“2”,等等。SORT语句执行以后,相对键数据项的内容指出同送该文卷的最后记录。c.终止文卷处理。执行终止就象执行了不带任选短语的CLOSE语句。执行这些隐含功能,犹如执行了相关的USEAFIEREXCEPTION或ERROR过程一样,然而-执行这种USE过程不能引起管理由文卷名3引用的文卷或访问其相关的记录区的语句的执行。在第一次企图往文卷定义的边界之外写记录时,就执行对该文卷规定的任一 USE AFTER STANDARD EXCEPTION或ERROR过程,当控制从USE过程返同或若没指出这种USE过程时,如同上述12C段一样,终止文卷处理。
(13)若文卷名3引用的文卷只含定长记录,则对文卷名1引用的文卷中任长度小于那个长度的记录,当记录被回送到文卷名3引用的文卷「时,在那个记录的最后一个字符之后,其右边第一字符位置开始填以空格,空格的数目就是比定长少的那些字符位置数。(I4)程序分段可以应用于含有 SORT语句的程序。然而有下列限制,a、如果 SORT语句出现在非独立程序段的节中。那么 SORT语句引用的任何输入过程或输出过程必须:
1)全部山现在非独立程序段中,或2)全部包含在·个独崔库段中。b.
如果 SORT语句出现在一独立程序段中,那么由 SORT语句引用的任何输入过程或输出过程必须:
1)全部包含在非独立程序段巾,或2)全部包在SORT语句所在的同一个独立程序段中。附加说明:
本标推出中华人民共和国机械电子工业部提出。本标雄由南京大学负贵起草。
本标主要起草人钱树人、王静英、冯惠、段祥。本标准由 1983 年 12 月百饮发布,1992年 8 月第一次修订。
小提示:此标准内容仅展示完整标准里的部分截取内容,若需要完整标准请到上方自行免费下载完整标准文档。