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、个文卷提供一单独的仅可由过程部的语句引用但仅能由输入输出控制系统改变其值因为在一个程序中可能存在多个当必要时用户必须用文卷名限定在相关联的文卷的语句执行期间按照下列规则自动修改当指明了语句的短语时自动重置为把重置为时就隐含地对增值使之超过整数或数据名引用的数据项之值当指明了语句的标识符或整数短语时的增量值等于整数或标识符引用的数据项的值当未指明语句的短语时该的增量值为见语句当设备重定位到各个后继逻辑页的第一可写行时的值自动重置为见语句在执行相关联文卷的带有短语的语句时的值自动置为每个逻辑页到下一页是连接的其间不提供附加的空格如果与该文卷描述款相关的文卷连接符是外部文卷连接符则运行单位中与该文卷
31、连接符相关的所有文卷描述款必须具有一个子句如果任一文卷描述款有一个子句的话整数整数整数整数相应地具有同样的值如果它们被指定的话具有由数据名引用的同样的外部数据项子句功能子句在定长记录中指出字符位置数或在变长记录中指明字符位置的范围如果字符位置数确有变化的话该子句就指出字符位置的最小数和最大数一般格式格式整数格式整数整数数据名格式整数整数语法规则对格式而言文卷记录描述款中不能指定大于整数的字符位置数对格式而言文卷记录描述款描述的记录含有的字符位置数不得小于整数之值也不能大于整数之值整数要大于整数数据名必须在工作存储节或连接节中描述一无正负号初等整数一般规则对所有格式而言如果未指定子句则每个数据记
32、录的大小完全在记录描述款中定义如果相关的文卷连接符是外部连接符则运行单位中与该文卷连接符有关的所有文卷描述款必须为整数或整数和整数指定相同的值如果未指明子句与该文卷连接符有关的所有记录描述款必须等长对格式而言格式用来指明定长记录整数指明文卷中每一记录的字符位置数对格式而言格式用来指明变长记录整数指明文卷中每一记录的最小字符位置数整数指明文卷中每一记录的最大字符位置数与记录描述款相关的字符位置数等于所有初等项除去重定义和重命名的字符位置数之和再加上同步所需的隐含的如果指明了表则记录中表元的最小数目用在上述的相加运算中来确定与记录描述有关的最小字符位置数记录中描述的表元的最大数目用在上述相加运算中
33、以确定与记录描述有关的最大字符位置数如果未指明整数文卷中任一记录的最小字符位置数等于该文卷的记录中描述的最小字符位置数如果未指明整数文卷中任一记录的最大字符位置数等于该文卷的记录中描述的最大字符位置数如果指明了数据名在对文卷执行或语句之前必须把记录的字符位置数放入数据名引用的数据项中如果指明了数据名则或语句的执行以及或语句的不成功的执行都不改变数据名引用的数据项的值在执行或语句时记录中的字符位置数由下列条件确定如果指明了数据名则由数据名引用的数据项的内容确定如果未指明数据名且记录中不包含有可变出现的数据项则由记录中的字符位置数确定如果未指明数据名且记录中确定包含有可变出现的数据项则由表的固定部
34、分加上执行输出语句时表中用出现号描述的那部分确定如果指定了数据名则对文卷执行或语句成功之后数据名引用的数据项之值就指出刚读入的记录的字符位置数如果在或语句中指定了短语则在隐含的语句中充当发送项的当前记录的字符位置数由下列条件确定如果指明了数据名则由数据名引用的数据项的内容确定如果未指明数据名则由假定指明数据名时要传送到数据名引用的数据项的值来确定对格式而言当使用格式的子句时整数和整数分别指出最小数据记录的最小字符位置数以及最大数据记录的最大字符位置数可是在这种情况下每个数据记录的长度完全在记录描述款中定义不管逻辑记录中数据项的字符类型是什么数据记录的大小总是用存储逻辑记录所需要的字符位置数来指
35、明的一个记录的大小是由所有固定长的初等项加上属于这个记录的任何可变长的数据项的最大字符数确定的这个和数可能与实际的记录长度不同见中字符表示及数基的选择中子句和子句子句功能子句详细列出有关文卷标号记录中的数据项的描述在标准的这一版本中视子句是过时成分因为在标准的以后的修改版中要把它删掉一般格式实现名数据名字值语法规则必要时数据名应该受限但不能带下标或位标也不能是有子句描述的项数据名必须在工作存储节中定义一般规则对于输入文卷相应的标号例行程序核对实现名的值是否等于字值或数据名引用的数据项的值这取决于何者被指明对于输出在适当的时间实现名的值等于字值或数据名引用的数据项的值这取决于何者被指明如果相关的
36、文卷连接符是外部文件连接符则运行单位与该文卷连接符有关的所有子句必须是一致的实现者指明这些一致性的规则顺序模块的过程部一般描述源程序中出现顺序模块里的语句时过程部中就含有申述过程下面列出语句出现时过程部的一般格式节名语句段名句子节名段名句子语句功能语句终止卷或单位和文卷的处理而且在可能时也终止具有反绕选用和或锁选用或撤销选用的文卷的处理一般格式文卷名语法规则在语句中引用的文卷无须全都具有相同组织或存取方式一般规则除在下面的一般规则中另有说明的情形外卷和单位这两个术语是同义的并且在语句中完全可以互用顺序海量文卷的处理逻辑上等价于磁带或类似的顺序媒体上文卷的处理在多文卷带环境中的文卷处理逻辑上等价
37、于顺序的单卷或单单位文卷的处理只要文卷整个包含在一卷中就行只对处于打开方式的文卷才能执行语句为了说明应用于不同存储媒体的各种语句的效果将所有文卷分成下述几类非卷或非单位文卷这种输入或输出媒体的文卷对反绕和卷或单位的概念是没有意义的顺序单卷或单单位文卷全部包含在一个卷或一个单位上的顺序文卷顺序多卷或多单位文卷包含在多于一卷或多于一个单位上的顺序文卷对各类文卷的每一种语句执行结果概括在表中表文卷类型和语句格式关系表语句格式文卷类型非卷或非单位顺序单卷或单单位顺序多卷或多单位下面给出表中各个符号的定义这是根据文卷是输入文卷输出文卷还是输入输出文卷而分别给出相应的定义否则一个定义就适用于输入文卷输出文
38、卷以及输入输出文卷对前面的卷或单位的影响输入文卷和输入输出文卷在当前卷或单位以前的文卷中所有的卷或单位都被关闭但由以前的语句控制的那些卷或单位则为例外如果当前卷或单位不是文卷的最末一卷或最末一个单位则不处理紧接在文卷的当前卷或当前单位之后的那些卷或单位输出文卷在当前卷或单位以前的文卷中所有的卷或单位都被关闭但由先前的语句控制的那些卷或单位则为例外当前的卷不反绕当前的卷或设备在当前的位置离开关闭文卷输入文卷和输入输出文卷如果文卷位于它的末端并且对该文卷指明了标号记录则按照实现者的标准标号约定处理标号当指明有标号记录但不出现或当未指出标号记录而出现时语句的行为是未定义的但系统执行由实现者指定的关闭
39、操作如果文卷定位在它的末端位置而对该文卷没有指明标号记录则不处理标号而执行实现者指出的其他关闭操作如果文卷未定位在它的末端位置则执行由实现者指出的关闭操作但不进行尾标处理输出文卷如果对文卷指明了标号记录则按实现者的标准标号约定处理标号当指明了标号记录但不出现或未指明标号记录而出现时语句的行为是未定义的系统执行由实现者指出的关闭操作如果对该文卷没有指明标号记录则不处理标号但执行由实现者指出的其他关闭操作卷或单位的撤销适用的话反绕当前的卷或单位该卷或单位逻辑上从该运行单位撤销然而若跟着执行不带或短语的语句接着对该文卷执行语句则按照该文卷中卷或单位的适当次序该卷或单位可以再次被存取文卷锁给文卷加锁来
40、保证在运行单位的执行期间该文卷不能再次被打开关闭卷或单位输入文卷和输入输出文卷进行下列操作如果当前卷或单位是文卷的最后或仅有的一个卷或单位或者卷位于非卷或非单位媒体上则不进行卷或单位对换且当前卷指针保持不变如果文卷存在另一卷或单位就对换卷或单位当前卷指针值改变以指向文卷中下一卷或单位执行标准开始卷或单位的标号过程如果当前不存在数据记录就再对换一次输出文卷卷或单位媒体进行下列操作执行标准结束卷或单位的标号过程对换卷或单位改变当前卷指针值以指向下一卷或单位执行标准开始卷或单位的标号过程引用该文卷的下一次执行的语句把下一逻辑数据记录送到该文卷的下一卷或单位输出文卷非卷或非单位媒体该语句的执行被认为是
41、成功的文卷保持打开方式且除了一般规则中指明的动作以外不采取其他动作反绕当前卷或类似的设备定位在开始物理位置未考虑的任选短语语句执行时假定不出现任选短语执行语句使得与文卷名相关的状态之值改变见状态如果不出现任选的输入文卷则不对文卷进行文卷末端或卷或单位末端处理并且文卷位置指示符和当前卷指针保持不变对文卷成功地执行了不带或短语的语句之后与文卷名相关的记录区就不再是可用的了如果这样的语句执行不成功则记录区的可用性就是未定义的对文卷成功地执行了不带或短语的语句之后文卷从打开方式下撤销并且不再与文卷连接符相关联如果在一个语句中指定的文卷名多于一个则执行这个语句的结果就如同对语句中的每个文卷名以同样的顺序
42、分开写出的一串语句一样语句功能语句初启文卷的处理在标准的这一版本中视短语是过时成分因为在标准的以后的修改版中要把它删掉一般格式文卷名文卷名文卷名文卷名语法规则短语只能用于顺序文卷中对多文卷不能指明短语短语只能用于未指明子句的文卷在语句中引用的文卷无须全都具有相同的组织方式或存取方式一般规则语句的成功执行决定了文卷的可用性并且使文卷处于打开方式语句的成功执行通过文卷连接符把文卷与文卷名联系起来如果一个文卷在物理上出现且由输入输出控制系统识别则此文卷就是可用的表显示了对可用及不可用的文卷打开时的结果表文卷的可用性文卷可用文卷不可用输入正常打开打开不成功输入任选文卷正常打开正常打开首次读产生末端条件
43、正常打开打开不成功任选文卷正常打开打开使文卷产生输出正常打开文卷中无记录打开使文卷产生正常打开打开不成功任选文卷正常打开打开使文卷产生语句的成功执行使程序可使用相关的记录区如果与文卷名相关的文卷连接符是外部文卷连接符则运行单位中只有一个与文卷连接符相关的记录区如果一个文卷不处于打开方式则任何隐式或显式引用该文卷的语句都不能执行但带有或短语的语句语句或带有或短语的语句则除外在执行任何可允许的输入输出语句之前首先必须成功地执行语句表可允许的语句中在交点处的指出在列的顶部给出的文卷的打开方式下可以使用给定的语句表可允许的语句语句打开方式输入输出输入输出扩展在同一个运行单位中文卷可以用和短语打开在对文
44、卷初次执行的语句后对同一个文卷每当要执行下一个语句就必须首先执行一个不带或短语的语句执行语句并不获取或释放第一个数据记录如果对文卷指明了标号记录则开始的标号处理如下当指明短语时执行语句引起依据实现者所指明的对输入标号核对的约定核对标号当指明短语时执行语句引起依据实现者所指明书写输出标号的约定书写标号当指明了标号记录但未出现或当未指明而标号记录出现时语句的行为是未定义的在语句执行期间如果文卷属性冲突条件发生则该语句的执行是不成功的见文卷属性冲突条件和短语只能用于顺序单卷或单单位文卷见语句在多文卷带环境下完全包含在一单卷带上的顺序文卷见子句如果在存放文卷的存储媒体上和短语不适用便跳过这些短语如果文
45、卷的存储媒体允许反绕则应用下列规则当既没有指明短语又没有指明短语时执行语句后文卷定位在开始位置当指明短语时执行语句不引起该文卷重新定位在语句开始执行之前文卷必须已经定位在开始位置当指明短语时执行语句引起文卷定位在它的末端当指明短语时后面使用该文卷的语句使该文卷的数据记录是按反序方向可用的即从文卷的最末一个记录开始如果文卷是用短语打开的且该文卷是未出现的任选文卷语句对文卷位置指示符赋值以指明任选输入文卷未出现用或短语打开的文卷把文卷位置指示符置为当指明短语时语句将该文卷定位于紧接在该文卷的最末一个逻辑记录之后当指明短语并且子句指明标号记录出现则执行语句包括如下几步仅在单卷或单单位文卷的情形处理开
46、始的文卷标号处理最末一个现存的卷或单位的初始的卷或单位的标号就如同文卷用短语打开一样处理现存的结束的文卷标号就如同文卷用短语打开一样然后就删去这些标号随后就如同文卷用短语打开时一样进行处理带有短语的语句必须引用一个支持输入和输出操作的文卷这些操作应对以方式打开的顺序文卷是允许的带有短语的语句执行后将引用的文卷置于允许输入和输出操作的打开方式之下当指明了短语并且子句指明标号记录出现执行语句包括如下几步依照实现者所指明的对输入输出标号核对的约定核对标号依照实现者对输入输出标号的书写约定书写新标号在多文卷带环境下的文卷的处理逻辑上等价于单文卷带环境下的顺序文卷的处理只要一组文卷位于多文卷上且其中之一
47、被语句引用则下列规则适用不能有多于一个文卷同时处于打开方式对文卷以输入方式打开的顺序无限制如果文卷名引用的文卷之一是带有短语的语句的主项则在执行语句时在相关的多文卷上比该卷位置号小的所有文卷必须已经存在于卷上同时卷上不存在位置号比此时将到卷中的该文卷的位置号要大的文卷每个文卷都必须是顺序文卷对于一个不可用的任选文卷在带有或短语的语句执行成功后就建立了该文卷建立过程就如同按序执行下列语句文卷名文卷名上述语句执行后再执行源程序中指明的语句当成功地执行带有短语的语句时文卷就建立了该文卷不包含数据记录语句执行成功后对当前卷指针赋值目的是为一个可用的输入或文卷指出第一个或仅有的一个卷或单位为一扩展文卷指
48、出包含最后逻辑记录的卷或单位为一个不可用输出或扩展文卷指出新的卷或单位语句执行后改变了与文卷名相关的状态之值见状态如果在一个语句中指定的文卷名多于一个则执行这个语句的结果就如同对语句中的每个文卷名以同样的顺序分开写出的一串语句一样文卷记录的最小长度和最大长度在文卷生成时建立并且以后不可改变语句功能语句使文卷的下一逻辑记录成为可用的一般格式文卷名标识符命令语句命令语句语法规则与标识符有关的存储区和与文卷名有关的记录区不能是同一个存储区如果对文卷名没有指明可应用的过程则必须指明短语一般规则在执行这个语句时文卷名引用的文卷必须用输入或方式打开见语句短语是任选的且对语句的执行无影响语句执行后与文卷名有
49、关的状态之值就被改变见状态在语句初始执行时对文卷位置指示符赋以确定值用它来确定成为可用的记录其规则如下所列顺序文卷中记录的比较与记录号有关如果文卷位置指示符指出没有建立有效的下一记录则语句的执行是不成功的如果文卷位置指示符指出不存在一个任选输入文卷则按照一般规则继续执行下去如果文卷位置指示符是由先前执行的语句建立的就选择文卷中记录号大于或等于文卷位置指示符值的第一个现存记录如果文卷位置指示符是由先前执行的语句建立的则选择文卷中记录号大于文卷位置指示符值的第一个现存记录如果发现一记录满足上述规则它就在与文卷名有关的记录区中成为可用的如果没有发现满足上述规则的记录则对文卷位置指示符赋值以指明不存在下一逻辑记录且按照一般规则继续执行下去一个记录成为可用的之后对文卷位置指示符赋值以指向可用记录的记录号如果不考虑存取时间与处理时间重叠时所用的方法则语句的概念没有变化在命令语句如果指定的话执行之前记录对目标程序是可用的如果未指明命令语句则在语句之后的任一语句执行之前记录对目标程序也是可用的当一个文卷的逻辑记录用多个记录描述来描述时这些记录自动地共享同一个存储区这便等价于对该区隐