1、中华人民共和国国家标准程序设计语言排序合并模块发布实施国家技术监督局发布中华人民共和国国家标准程序设计语言排序合并模块代替国家技术监督局批准实施引言功能排序合并模块提供这样一种功能按照一组由用户提出的包含在每个记录中的键对一个或多个文卷中的记录排序或者合并两个或多个有同样次序的文卷中的记录此外用户可以选用输入或输出过程对记录进行特定的处理这种特定处理可以在记录被语句排序之前或之后应用或在记录被语句合并之后应用语言概念排序文卷排序文卷是由语句进行排序的记录集排序文卷没有程序员能够控制的标号过程并且对于分块及内容存储分配的规则仅由语句所特有就缓冲区块或卷而论语句以及语句没什么意义然而排序文卷可以认
2、为是一个内部文卷该文卷根据输入文卷建立语句进行处理语句然后使之成为可用的语句输出文卷排序文卷通过文卷控制款命名并由排序合并文卷描述款来描述排序文卷通过和语句引用合并文卷合并文卷是由语句进行合并的记录集合并文卷没有程序员能够控制的标号过程并且对于分块及内部存储分配的规则仅由语句实行就缓冲区块或卷而论语句没什么意义然而合并文卷可以认为是一个内部文卷该文卷根据输入文卷建立并通过对它们的合并语句成为可用的语句输出文卷合并文卷由文卷控制款命名并由排序合并文卷描述款描述合并文卷通过和语句引用排序合并模块的环境部输入输出节涉及输入输出节的信息见顺序模块的段涉及段的信息见顺序模块的文卷控制款功能文卷控制款说明
3、排序或合并文卷的有关物理属性一般格式文卷名实现名字值语法规则数据部中描述的每一个排序或合并文卷在段中能且只能指称一次子句中指出的每一个排序或合并文卷在同一程序的数据部中必须有一个排序合并文卷描述款因为文卷名表示一个排序或合并文卷所以在段中只有子句允许跟在文卷名之后一般规则子句指出文卷名引用的文卷和实现名或字值引用的存储媒体的联系段功能段指出包括排序或合并文卷的不同文卷共享的存储区一般格式文卷名文卷名语法规则子句选择的可用性依赖于由实现支撑的顺序模块的级一般规则有关排序合并模块的子句在下面介绍子句功能子句中指出不同文卷至少有一个是排序或合并文卷共享的存储区一般格式文卷名文卷名语法规则在中子句指出
4、的每个文卷名必须在同一程序的段中指出文卷名和文卷名不可引用外部文卷连接符和是等价的除非使用或短语否则表示排序或合并文卷的名不能出现在子句中在一个程序中可以出现多个子句然而一个文卷名一定不能出现在两个或两个以上的子句中表示排序或合并文卷的文卷名不能出现在多于一个或子句中如果在子句和一个或若干个或子句中出现了不是表示排序或合并文卷的文卷名则子句中命名的所有文卷名都必须在那个或子句中命名在或子句中引用的文卷名不要求有相同的组织和存取方式一般规则子句指出文卷名文卷名引用的两个或多个文卷在处理当前逻辑记录中共享同一个存储区所有这些文卷可以同时处于打开方式在中的逻辑记录被看成是在子句中出现的每个被打开的输
5、出文卷的逻辑记录和在子句中出现的最近读入的输入文卷的逻辑记录这等价于隐含的存储区重定义即记录对齐于最左字符位置如果使用或子句那么这些文卷名中至少有一个是表示排序或合并文卷的该子句指出存储区按以下规定共享或子句指出一个存储区它对于每一个已命名的排序或合并文卷在排序或合并时是可用的因此为排序或合并文卷的排序或合并分配的存储区在任一其它排序或合并文卷的排序或合并时也是可以重新使用的此外分配给非排序或合并的文卷的存储区也可以根据排序或合并的需要分配给在或子句中命名的排序或合并文卷这种分配的范围将由实现者指出非排序或合并文卷彼此不共享同一个存储区但是如果用户希望这些文卷彼此共享同一个存储区的话程序必须包
6、含或子句指出与这些文卷相关联的文卷名在引用该子句中命名的排序或合并文卷的或语句执行期间在这个子句中命名的任何非排序或合并文卷不能被打开排序合并模块的数据部文卷节文卷节位于源程序的数据部文卷节定义排序和合并文卷的结构每个排序文卷或合并卷通过一个排序合并文卷描述款以及一个或多个记录描述款来定义记录描述款紧接在排序合并文卷描述款之后书写下面给出排序合并模块中文卷节的一般格式排序合并文卷描述款记录描述款排序合并文卷描述款在程序中排序合并文卷描述款款表示文卷节中最高层组织文卷节首后面跟由层指示符文卷名及一系列独立子句组成的排序合并文卷描述款排序合并文卷描述款款的子句规定与排序文卷或合并文卷相关联的数据记
7、录拿按笮没有用户可以控制的标号过程分块规则和内部存储规则仅由和语句所专用排序合并文卷描述款用句点结束记录描述结构记录描述由描述特定记录之特性的一组数据描述款组成每个数据描述款由层号跟以数据名或子句若指出的话在需要时再跟以一系列独立的子句记录描述可以有层次结构因此使用某一款的子句可以颇为不同这依赖于其后是否跟以从属款数据描述款中特定子句的可用性依赖于由实现支撑的核心模块的级初值在文卷节中数据项的初值是无定义的排序合并文卷描述款功能排序合并文卷描述款提供关于排序或合并文卷的物理结构和记录名信息一般格式文卷名整数整数整数数据名整数整数数据名语法规则层指示符表明排序合并文卷描述的开始并且必须位于文卷名
8、前面跟在文卷名后面的各子句是任选的而且出现的次序是无关紧要的排序或合并文卷描述款后面可以跟一个或多个记录描述款然而不能对这种文卷执行输入输出语句子句的格式的可用性依赖于实现支撑的顺序模块的级一般规则排序合并模块的子句与顺序模块的子句相同因此子句的说明见顺序的在标准的这一版本中视子句是过时成分因为在标准的以后的修改版中要把它删掉排序合并模块的子句与顺序模块的子句相同因此子句的说明见顺序的排序合并模块的过程部语句功能语句按照一组指定的键把两个或多个有相同顺序的文卷合并在一起在这一处理期间语句按合并次序使记录对输出过程或输出文卷可用一般格式文卷名数据名字母表名文卷名文卷名过程名文卷名过程名语法规则语
9、句可以在过程部中除申述部分以外的任何地方出现文卷名必须在数据部的排序合并文卷描述款中被描述若文卷名引用的文卷包含变长记录则文卷名及文卷名引用的文卷中所含记录的长度不能小于文卷名描述的最小记录也不能大于文卷名描述的最大记录若文卷名引用的文卷含有定长记录则文卷名及文卷名引用的文卷中所含记录的长度不能大于文卷名描述的最大记录数据名是键数据名并且遵守下列规则由键数据名标识的数据项必须在文卷名相关联的记录中描述键数据名可以受限键数据名标识的数据项不能是包含变长数据项的组项如果文卷名有多个记录描述那么要求由键数据名指出的数据项仅能在一个记录描述中描述把在一个记录描述款中键数据名引用的相同字符位置作为该文卷
10、所有记录的键由键数据名指出的那些数据项不可以在包含有子句或隶属于包含有子句的款中描述若文卷名引用的文卷含有变长记录则由键数据名标识的全部数据项必须被包含在记录的开始的个字符位置中这里等于文卷名引用的文卷所规定的最小记录长度文卷名文卷名和文卷名必须在数据部的文卷描述款而不在排序合并描述款中描述多文卷带卷中的文卷名最多只能有一个出现在语句中语句中同一文卷名不可以重复出现在语句中没有一对文卷名可以被规定在同一或子句中语句中能被规定在同一子句中的仅是那些与短语相关联的文卷见中子句和子句字和是等价的若文卷名引用索引文卷则数据名的第一个说明必须与短语有关并且由数据名引用的数据项在记录中占有的字符位置必须与
11、那个文卷的主记录键相关的数据项相同若指定了短语且文卷名引用的文卷含有变长记录则文卷名引用的文卷中所含的记录长度不能小于文卷名描述的最小记录也不能大于其最大记录的长度若文卷名引用的文卷包含定长记录则文卷名引用的文卷中所含的记录长度不能大于文卷名描述的最大记录长度一般规则语句将合并所有包含在文卷名和文卷名引用的文卷中的记录若文卷名引用的文卷仅含定长记录则对文卷名或文卷名引用的文卷中任何长度小于那个定长的记录当记录被发送到文卷名引用的文卷上时在那个记录的最后一个字符之后从其后右边第一字符位置开始填以空格空格的数目就是比定长少的那些字符位置数跟在字后面的数据名在语句中按其重要性的递降次序从左到右地排列
12、而不管它们是如何被划分到各短语中去的最左边的数据名是主键下个数据名是下一个重要的键依此类推当指出短语时合并顺序是键数据名指出的数据项内容从最低值到最高值的顺序这根据关系条件中运算对象比较的规则进行当指出短语时合并顺序是键数据名指出的数据项内容从最高值到最低值的顺序这根据关系条件中运算对象的比较规则进行按照关系条件中运算对象的比较规则当一个数据记录的所有键数据项的内容等于一个或多个其它数据记录的相应键数据项的内容时这些记录的回送次序是按照语句中指出的相关输入文卷的次序进行与一个输入文卷相关的所有记录在另一个输入文卷的记录回送之前被回送用于非数值键数据项比较的对比序列在语句执行开始时按下列优先次序
13、决定首先如果语句中指出短语的话就根据短语建立对比序列其次建立和程序的对比序列一样的对比序列仅当文卷名和文卷名所引用之文卷的记录按语句中或短语的规定排序时合并操作的结果才是可预测的文卷名和文卷名引用的文卷中的全部记录被传送到文卷名引用的文卷中在执行语句的开始时文卷名和文卷名引用的文卷不能处于打开状态对文卷名和文卷名引用的每一个文卷语句的执行引起下述动作初始化文卷处理执行初始化就象执行了具有短语的语句一样若输出过程被指出则在控制转到输出过程之前执行这个初始化逻辑记录被获取并被发放给合并操作获取每个记录就象执行了具有和短语的语句一样终止文卷处理执行终止就象执行了没有任选短语的语句一样若输出过程被指出
14、则直到控制通过输出过程的最后一个语句之后才执行这个终止执行这些隐式功能犹如执行相关的或过程一样输出过程可以由这样一些过程组成这些过程是从文卷名引用的文卷上选择修改或复制记录所必需的语句依合并次序一次可使一个记录成为可用的范围包括在输出过程范围内由执行和语句引起控制转移的全部语句还有申述过程中的全部语句这些语句由输出过程范围中语句的执行引起其执行输出过程的范围内不能导致任何或语句执行如果指出输出过程则在语句执行期间转向它编译程序在输出过程最后一句的结束处插入返回机制在控制到达输出过程的最后一个语句时返回机制终止合并处理然后把控制转移到语句后的下一个可执行语句在进入输出过程之前合并过程到达这样的一
15、点在这一点处可以按合并次序选取需要的记录在输出过程中为了取得下一个记录语句是必需的输出过程的执行期间不能执行对文卷名或文卷名引用的文卷进行管理或访问其有关的记录区的语句在执行语句时隐式引用的任何过程的执行期间不能执行对文卷名文卷名或文卷名引用的文卷进行管理或访问其有关的记录区的语句若短语被指出则所有已合并的记录书写到文卷名引用的文件上如同语句所隐含的输出过程一样在执行语句的开始处文卷名引用的文卷不能处于打开状态对文卷名引用的每一个文卷语句的执行导致下述动作初始化文卷处理执行初始化就象执行了具有短语的语句已合并的逻辑记录被回送并被写到该文卷写出每个记录就象执行了不带任何任选短语的语句对于相对文卷
16、回送的第一个记录的相对键数据项值为回送的第二个记录值为等等语句执行以后相对键数据项的内容指示回送到该文卷的最后记录终止文卷处理执行终止就象执行了不带任选短语的语句执行这些隐含功能犹如执行相关的或过程一样然而执行这种过程不能引起管理由文卷名引用的文卷或访问与其相关的记录区的语句的执行在第一次企图往文卷定义的边界之外写记录时就执行对该文卷规定的任一或过程当控制从那个过程返回或若没指出这种过程时如同上述段一样终止对文卷的处理若文卷名引用的文卷只含定长记录则对文卷名引用的文卷中任一长度小于那个定长的记录当记录被回送到文卷名引用的文卷上时在那个记录的最后一个字符之后其右边第一字符位置开始填以空格空格的数
17、目就是比定长少的那些字符位置数程序分段可以应用于包含语句的程序然而要应用如下限制如果语句不是在独立程序段中出现那么语句引用的任何输出过程必须全部出现在非独立的程序段中或全部包含在一个独立的程序段中如果语句出现在独立的程序段中那么语句引用的任何输出过程必须全部包含在非独立程序段中或全部包含在语句所在的同一个独立程序段中语句功能语句传送记录给操作的初始阶段一般格式记录名标识符语法规则记录名必须是排序合并文卷描述款中的逻辑记录名并且可以受限语句只能在与某一个文卷的语句相关联的输入过程范围内使用该文卷的排序合并文卷描述款包含有记录名记录名和标识符不能引用同一个存储区一般规则语句的执行使得记录名指称的记
18、录被发放给排序操作的初始阶段语句执行之后除非与记录名有关的排序合并文卷已在子句中指出否则记录区中的逻辑记录不再可用和输出文卷有关的在同一个子句中引用的其它文卷的记录以及记录名相关的文卷对程序都还是可用的具有短语的语句的执行结果与按指明的顺序执行下述语句的结果等价按照对语句所指明的规则执行标识符记录名不带短语的同一语句语句的执行完成以后与标识符相关联的数据区的内容是可用的记录名引用的数据区中的信息已不再可用用子句规定时为例外语句功能语句从操作的最后阶段获得排序好的记录或在操作期间获得合并好的记录一般格式文卷名标识符命令语句命令语句语法规则跟标识符相关联的存储区和跟文卷名相关联的记录区不能是同一个
19、存储区文卷名必须在数据部的排序合并文卷描述款中描述语句只能在和或语句相关联的输出过程范围内对文卷名使用一般规则当一个文卷的逻辑记录用一个以上的记录描述来描述时这些记录自动地共享同一个存储区这等价于隐含的区重定义任何落在当前数据记录范围之外的数据项的内容在语句执行完成后是无定义的语句的执行使得文卷名的下一个现存记录在与文卷名相关联的记录区里成为可用的这下一个记录根据或语句中列出的键指出的次序来决定若文卷名不存在下一个逻辑记录则出现末端条件并把控制转到短语的命令语句按照命令语句中指出的各语句的规则继续执行若执行了过程分支或显式引起控制转移的条件语句则按照那个语句的规则执行控制转移否则在命令语句执行
20、完成后控制转向语句的结尾处并且忽略短语若被指出当末端条件出现时语句的执行是不成功的而且与文卷名相关联的记录区的内容是无定义的在短语中的命令语句执行以后语句不能再作为当前输出过程中的一部分执行若在语句执行期间未出现末端条件则记录是可利用的并且根据短语的存在情况执行隐含的操作控制转向命令语句若指出否则控制转向语句的结尾处短语限定语句的作用域见预备知识语句的作用域语句中可以规定短语仅当一个记录描述从属于排序合并文卷描述款时或与文卷名相关联的全部记录名及标识符引用的数据项描述组项或初等字符项时具有短语的语句的执行结果等价于按序应用下述规则不带短语的同一语句的执行按照不带短语的语句的规则把当前记录从记录
21、区送到标识符指定地区根据子句指出的规则确定当前记录的长度若文卷描述款包含子句则隐含的移动是成组移动当语句执行失败时不出现隐含的语句与标识符相关联的任何下标在记录被读以后和传送到数据项之前立即计算在记录区和标识符引用的数据项里的数据均是可用的语句功能语句通过执行输入过程或传送另一个文卷的记录以建立排序文卷在排序文卷中按照指出的一组键对记录排序然后在排序操作的最后阶段使得排序文卷中的每一个记录按照排序的次序对某些输出过程或输出文卷可用一般格式文卷名数据名字母表名过程名过程名文卷名过程名过程名文卷名语法规则语句可以在过程部中除申述部分以外的任何地方出现文卷名必须在数据部排序合并文卷描述款中描述若指明
22、短语而且文卷名引用的文卷包含变长记录则文卷名引用之文卷所包含记录的长度不能小于文卷名描述的最小记录也不能大于其最大记录的长度若文卷名引用的文卷包含定长记录则文卷名引用之文卷所含记录的长度不能大于文卷名引用文卷描述的最大记录长度数据名是键数据名并且要遵守下列规则由键数据名标识的数据项必须在相关联的文卷名的记录中描述键数据名可以受限由键数据名标识的数据项不能是包含变长数据项的组项如果文卷名有多个记录描述则由键数据名标识的那些数据项只在唯一的一个记录描述中描述把在一个记录描述中键数据名引用的相同字符位置作为该文卷所有记录的键由键数据名标识的数据项不能在被包含子句的描述款中或隶属于包含子句的描述款中描
23、述若文卷名引用的文卷包含定长记录那么由键数据名标识的全部数据项必须被包含在记录的开始个字符位置中这里等于文卷名引用的文卷所指明的最小记录长度字和是等价的文卷名和文卷名必须在数据部的文卷描述款而不在排序合并文卷描述款中描述文卷名和文卷名引用的文卷可以驻留在同一个多文卷卷上若文卷名引用了索引文卷则数据名的第一个说明必须与短语相关并且由数据名引用的数据项在记录中占有的字符位置必须与那个文件的主记录键相关的数据项一样在同一语句中没有一对文卷名可以被规定在同一个或子句中与短语相关联的文卷名不能在同一子句中指出见中子句和子句若指明了短语且文卷名引用的文卷包含变长记录则文卷名引用之文卷所含记录的长度不能小于
24、文卷名描述的最小记录也不能大于其最大记录的长度若文卷名引用的文卷含有定长记录则文卷名引用文卷所含记录的长度不能大于文卷名引用的文卷的最大记录长度一般规则若文卷名引用的文卷仅含定长记录则对文卷名引用的文卷中任何长度小于那个定长的记录当记录被发放到文卷名引用的文卷上时在那个记录的最后一个字符之后其右边第一字符位置开始填以空格空格的数目就是比定长少的那些字符位置数在语句中跟在字后面的数据名按照重要程序的递减次序从左到右地列出而不考虑它们如何被划分到各短语中去最左边的数据名是主键下一个数据名是下一个最重要的键依此类推当指出短语时排序顺序将是按键数据名指出的数据项内容的最低值到最高值顺序这依据关系条件中
25、的运算对象比较规则进行当指出短语时排序顺序将是按键数据名指出的数据项内容的最高值到最低值顺序这依据关系条件中的运算对象比较规则进行若指出短语并且与一个数据记录相关的所有键数据项的内容等于与一个或多个其它数据记录相关的相应键数据项的内容则这些记录的回送次序是按照语句中指明的相关输入文卷的次序在给定的输入文卷中按对该文卷存取记录的次序当输入过程被指出时按照输入过程发送这些记录的次序若未指出短语而与一个数据记录相关的所有键数据项的内容等于与一个或多个其它数据记录相关的相应键数据项的内容则这些记录的回送次序是未定义的应用于非数值键数据项比较的对比序列在执行语句的开始时按下列优先次序决定首先如果在语句中
26、指出短语则根据短语建立的对比序列其次建立和程序的对比序列一样的对比序列语句的执行由下面三个不同的阶段组成使记录对文卷名引用的文卷成为可用的为达此目的或通过执行输入过程中的语句或通过隐含执行对文卷名的语句在本阶段开始时文卷名引用的文卷不能处于打开方式在本阶段终止时文卷名引用的文卷不是处于打开方式文卷名引用的文卷是顺序的在这阶段期间对文卷名和文卷名引用的文卷不作处理文卷名引用的文卷记录可按排序好的次序应用排序好的记录或者写到文卷名引用的文卷中或者通过执行语句使记录成为可用的以便输出过程处理在本阶段开始时文卷名引用的文卷不能处于打开方式在本阶段终止时文卷名引用的文卷不是处于打开方式输入过程可以由这样
27、一些过程组成这些过程是从文卷名引用的文件上选择修改或复制记录所必需的语句一次使一个这样的记录成为可用的范围包括在输入过程范围内由执行和语句引起控制转移的全部语句还有申述过程中的全部语句这些语句由输入过程范围中语句的执行引起其执行输入过程的范围不能导致任何或语句执行如果指出输入过程则在文卷名由语句排序之前控制转到输入过程编译程序在输入过程的最后语句的末端插入返回机制当控制达到输入过程中的最后一个语句时被释放到文卷名上的记录已排序若指出短语由文卷名引用的诸文卷的全部记录被送到文卷名引用的文卷中对文卷名引用的每个文卷执行语句导致下列动作初始化文卷处理执行初始化就象执行具有短语的语句一样逻辑记录被获取
28、并发送给排序操作获取每个记录就象执行了具有和短语的语句一样对相对文卷若文卷名在短语中被引用则在语句执行以后相对键数据项的内容是无定义的终止文卷处理执行终止就象执行了不带任选短语的语句一样在文卷名引用的文卷被语句排序之前执行这个终止执行这些隐含功能犹如执行相关的或过程一样然而执行这种过程不能引起管理由文卷名引用的文卷或访问与其相关的记录区的语句的执行输出过程可以由这样一些过程组成这些过程是从文卷名引用的文件上选择修改或复制记录所必需的语句一次可使一个记录成为可用的范围包括在输出过程范围内由执行和语句引起控制转移的全部语句还有申述过程中的全部语句这些语句由输出过程范围中语句的执行引起其执行输出过程
29、的范围不能导致任何或语句的执行如果指出输出过程则文卷名引用的文卷被语句排序以后控制转向它编译程序在输出过程最后语句的末端插入一个返回机制当控制转移到输出过程的最后一个语句时返回机制就结束排序然后控制转移到语句后的下一个可执行语句在进入输出过程之前排序过程到达这样的一点在这一点处可以按排序次序选取需要的记录在输出过程中为了取得下一个记录语句是必需的如果指出短语在文卷名上的所有排序过的记录自动地被写到文卷名上去犹如语句隐含的输出过程一样对文卷名引用的每个文卷语句的执行导致下述动作初始化文卷处理执行初始化就象执行了具有短语的语句在任一输入过程执行以后执行这个初始化排序好的逻辑记录被回送并写往该文卷写
30、记录就象执行了不带任何任选短语的语句对相对文卷回送的第一个记录的相对键数据项值为回送的第二个记录值为等等语句执行以后相对键数据项的内容指出回送该文卷的最后记录终止文卷处理执行终止就象执行了不带任选短语的语句执行这些隐含功能犹如执行了相关的或过程一样然而执行这种过程不能引起管理由文卷名引用的文卷或访问其相关的记录区的语句的执行在第一次企图往文卷定义的边界之外写记录时就执行对该文卷规定的任一或过程当控制从过程返回或若没指出这种过程时如同上述段一样终止文卷处理若文卷名引用的文卷只含定长记录则对文卷名引用的文卷中任一长度小于那个长度的记录当记录被回送到文卷名引用的文卷上时在那个记录的最后一个字符之后其右边第一字符位置开始填以空格空格的数目就是比定长少的那些字符位置数程序分段可以应用于含有语句的程序然而有下列限制如果语句出现在非独立程序段的节中那么语句引用的任何输入过程或输出过程必须全部出现在非独立程序段中或全部包含在一个独立程序段中如果语句出现在一独立程序段中那么由语句引用的任何输入过程或输出过程必须全部包含在非独立程序段中或全部包含在语句所在的同一个独立程序段中附加说明本标准由中华人民共和国机械电子工业部提出本标准由南京大学负责起草本标准主要起草人钱树人王静英冯惠段祥本标准由年月首次发布年月第一次修订
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1