GB T 3057-1996 信息技术 程序设计语言 Fortran.pdf

上传人:吴艺期 文档编号:240382 上传时间:2019-07-13 格式:PDF 页数:306 大小:26.96MB
下载 相关 举报
GB T 3057-1996 信息技术 程序设计语言 Fortran.pdf_第1页
第1页 / 共306页
GB T 3057-1996 信息技术 程序设计语言 Fortran.pdf_第2页
第2页 / 共306页
GB T 3057-1996 信息技术 程序设计语言 Fortran.pdf_第3页
第3页 / 共306页
GB T 3057-1996 信息技术 程序设计语言 Fortran.pdf_第4页
第4页 / 共306页
GB T 3057-1996 信息技术 程序设计语言 Fortran.pdf_第5页
第5页 / 共306页
亲,该文档总共306页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

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、必须不使用任何过时的功能 既不使用任何非标准形式也不使用任何非标准关系引用标准下列标准所包含的条文 通过在本标准中的引用而构成为本标准的条文 本标准出版时 所示版本均为有效 所有的标准都会被修订 使用本标准的各方应探讨使用下列标准最新版本的可能性数据元和交换格式 信息交换 日期和时间的表示方法信息处理 信息交换用七位编码字符集建议术语及概念高级语法本章介绍了和程序单元有关的术语以及在构造 语句和各表达式级以上的其他 概念 并阐明它们之间的关系 中描述了语法规则的记法 注意 本章中某些语法规则遵守在较后章条中适当地方给出的约束一个 必须精确地包含一个GB/T 3057-199日internal-

31、SlJb p 1og ram-p aTt end -subp 70g ram-l,mt R203四ternal皿bprogrumH functio现-础bprogTam0. subroutine-subp 7og Tam R1215 function-subprog叫明H junction-stmt C叩酬ficat阳n-partC四ecution-partinternal-8t句TogTam-partend-function-8tmt R1219 subroutine-subprogram M subroutine-stmt sp ecification-part C四e四tion-part

32、internal础bprogTam-partend -subTOutine-slmt Rl104 module module-stmt sp ecification-part mod ule-p 1og ram-part end -mod ule-fimt RlllO block-l ata is block-da阳.stmtC甲e口fication-partend -hlock-d ata-stmt R204叩时ificati棚partH u串IJtmtimplicit-part d eclaration-con.st7uct J. . . R205 im p licitpart u imp

33、 licit-part-lJtmt. implicit-stmt R206 im p licit-p urt-stmt u impl:阳t-lJtmt0 p aTameter-8tmt 0. jarmat-stmt 0. entry-stmt R207 d eclaratio扭曲1tstructH d凹ived-type-def0. interface-block 0. ty p e-d eclaratio饵-stmt0 d eclaration-stmt 0 p Qrameter-st刑t。rfor酬at-ltmt。rentry-ltmt 。rltmt-function-ltmt R208

34、execution-part M executable-泪饵ltructC四e四tion-par由1iltruct.R209 execution-part-nslruct M executable-泪饵slruct。rformat-slmt 0 da归-slmt0 entry-slmt R210回曲rnal-subprog ram-p art u contain8-8tmt int回nal-subprogram战时ernal-幽bprogramJ. 6 GB/T 3057-199日R211四teTnal-subp1og Tum is functio现-础bprogramor subroutin

35、e-subp 7og Tom R212 mod ule-subprogram-part H contains-stmt module-8U bpTOgram t明odule-血bprogramJ. R213 mod ule-subprogram is fu锦ctio现础bprogramor subroutine-subp 1og Tam R214 d eclaration-slmt is acc醋HJt扭主。ralZocatable-slmt or common-81mt or data-,mt or dime饵sion-stmtor eq盯vale饵ce-stmtor ext凹nal-slm

36、tor inte现t-st作lt。rintri7也sic-stmt。rnamelist-stmt 。roptional-stmt 。rp01.1I曲r-stmt。r&lve-stmt 。rtarg et-stmt R215 executable-construct H actiQ饵$omtor case-const俨uctor donstruct or 、f咽咄咄4or w here-construct R216 action-stmt u allocate-stmt or a88ig啤m四t4mtor backspa四stmtor call-stmt or clo-stmt or comp

37、uted -g oto-stmt or conti扭ue-stmtor cycle-stmt or deallocate-sl刑t。rend file-stmt 。rend -function-slmt 。rend-prog ram-stmt 。rend -subroutine-slmt 。rex it-stmt 。rgoto-stmt 。rif-slmt or inquire-stmt or .uUify-stmt or op四4mtor po四曲问晒gnm四t4mtor pn饲t4mt7 约束 必须不包含 或程序单元概念程序单元是 程序的基本成分程序单元可以是主程序 外部辅程序 模块或块数

38、据程序单元 一个辅程序可以是函数辅程序或子程序辅程序 模块包含的定义是对其他的程序单元形成可访问性 块数据程序单元用来对有名公用块中的数据对象规定初始值 程序单元的每种类型在第 章或第章中描述了外部辅程序是不包含在主程序 模块或另一辅程序内的一个辅程序内部辅程序是包含在主程序或另一辅程序内的一个辅程序 模块辅程序是包含在模块中但却又不是内部辅程序的一个辅程序一个程序单元由非交迭的作用域单位的集合组成作用域单位是导出类型定义 见过程接口体 排除了任何导出类型定义和包含于其中的过程接口体 见一个程序单元或辅程序 排除了导出类型定义 过程接口体及包含在它内部的辅程序包含另一个作用域单位的作用域单位称

39、作是宿主作用域单位可执行程序可执行程序精确地由一个主程序单元和任意个 包含零个 其他种类的程序单元组成 这组程序单元可以包含任意次序的不同种类的程序单元的任一组合主程序在 中描述主程序过程过程封装了在程序执行期间可直接援引的任意计算序列 过程或者是函数或者是子程序函数是在表达式中援引的过程 它的援引导致计算一个值 然后此值用于表达式求值 返回函数值的变量称为结果变量子程序是在 语句中援引的过程或由定义的赋值语句 见 援引的过程 子程序可用于改变程序状态 这由改变此子程序可访问的任意数据对象的值来进行 除计算函数值以外 函数也可以改变程序状态在第 章中详细描述过程外部过程外部过程是由外部辅程序或

40、用不同于 的方法定义的过程 外部过程可由主程序或由可执行程序的任一过程来援引模块过程模块过程是由模块辅程序 见 定义的过程 模块过程可由该模块中另一模块辅程序援引或由使用该模块的任意作用域单位所援引 包含辅程序的模块称为模块过程的宿主内部过程内部过程是由内部辅程序 见 所定义的过程 把包含内部过程的主程序或辅程序称为内部过程的宿主内部过程局部于它的宿主 在这个意义之下 即内部过程在该宿主的作用域单位内能访问 或在其全部内部过程内能访问 但在别处不能访问过程接口块过程接口块的目的是描述一组过程的接口 见 并允许这些过程能通过一个单个类属名 定义的运算符或定义的赋值来进行援引 它确定引用的形式 通

41、过此形式可援引过程模块模块含有 或从其他模块访问 对其他程序单元形成可访问的一些定义 这些定义包括数据对象声明 类型定义 过程定义以及过程接口块 模块的目的是形成各种定义 模块中包含着对可执行程序中的全部其他程序单元的可访问的定义 而此可执行程序需要这种可访问性 在另一程序单元内的作用域单位可以要求对包含在模块中的定义进行访问 在第 章中进一步描述模块执行的概念把每个 语句分类为可执行语句或不可执行语句在程序单元中可以出现哪类语句 在次序上有些限制 且某些可执行语句只可以出现在某些可执行构造中可执行语句 不可执行语句程序执行是计算动作的按时间的序列 可执行语句是完成或控制一个或多个这种动作的一

42、条指令于是 程序单元的可执行语句确定了程序单元的计算行为 可执行语句是组成 语法类的全部内容不可执行语句不规定动作 它们的作用是配置计算动作发生的程序环境 不可执行语句是全部不作为可执行分类的这些语句 在块数据程序单元内的全部语句必须是不可执行的 模块只可在模块中的辅程序内包含可执行语句说明语句是能出现在 中的全部语句 但 和 语句除外语句次序表 在作用域单位中允许的语句作用域单位的种类 主程序 模块 块数据 外部辅程序 模块辅程序 内部辅程序 接口体语句 是是是 是 是 是 是语句 否否否 是 是 否 否语句 是否否 是 是 是 否杂项声明 见注 是是是 是 是 是 是语句 是是是 是 是

43、是 否导出类型定义 是 是 是 是 是 是 是接口块 是是否 是 是 是 是语句函数 是否否 是 是 是 否可执行语句 是 否 否 是 是 是 否是是否 是 是 否 否注 杂项声明是指 语句 语句 类型声明语句以及说明语句 注意 模块的作用域单位不包括此模块包含的任何模块辅程序的语法规则规定了程序单元和辅程序内的语句次序 这些规则在图 和表 中阐明了 图 指出了语句的排列规则 这些规则适用于全部程序单元和辅程序 竖行描写了各种可被散置的语句 横行描写了各种必须不被散置的语句 如果有 语句 它必须紧跟在程序单元头之后出现 内部辅程序或模块辅程序必须跟在一个 语句之后 在辅程序中的 语句和 语句之

44、间 一般地 不可执行语句在可执行语句之前 尽管 语句 语句以及 语句也可以出现在可执行语句之间 表 指出在作用域单位内允许出现哪种语句图 语句排列的要求语句或是语句每个程序单元 模块辅程序以及内部辅程序必须精确地有一个 语句和 语句是可执行的 并且可以是转移目标语句 执行一个 导致可执行程序执行的终止 执行一个 或等价于执行辅程序中的和 语句是不可执行的执行序列一个可执行程序的执行是从主程序的第一个可执行构造开始的 主程序或辅程序的执行涉及到其作用域单位内的可执行构造的执行 当援引一个过程时 从所援引的入口点后面出现的第一个可执行构造处开始执行 有以下的例外情况 执行的效果是如同可执行构造按它

45、们出现于主程序或辅程序中的次序执行 直到执行 或 语句时为止 但有下述例外情况转移语句 见 的执行改变执行序列 这些语句为执行序列显式地指定了一个新的启动位置结构 结构和 结构包含了一个内部语句结构 这些构造的执行包含了隐式 即自动的 的内部转移 参见第 章关于这些结构的每一个的详细语义交错返回 和 及 说明符都可能导致转移内部辅程序可以在主程序或辅程序的 语句之前 执行序列不包括全部这种定义数据概念不可执行语句用于定义数据环境的特征 这包括声明变量的类型 声明数组以及定义新的数据类型数据类型数据类型是数据的一个有名类目 它由一组值和表记这些值的一种方法以及解释和操作该值的运算的一个汇集一起来

46、表示其特征 这一主要概念在 中描述有两类数据类型 内在类型和导出类型内在类型内在类型是和运算一起隐式定义的一种类型 并且它总是可访问的 内在类型是和 内在类型的性质在 中描述了 内在类型可被参数化 在这种情况中 数据值的集合依赖于此参数的值 这种参数称为类型参数见 类型参数是和类型参数指明整数类型 见 的十进制指数范围 实型和复型 见 和 的十进制精度和指数范围 字符类型和逻辑类型 见 和 的表示方法长度类型参数规定了字符类型的字符个数导出类型导出类型是不被隐式定义的类型 但要求一个类型定义以声明是内在的或其他导出类型的一个成分 这样一种导出类型的标量对象称为结构 见 用于导出类型的仅有的内在

47、运算是类型一致的赋值 见 对于每种导出类型 都有能用来提供值的结构构造符 见 另外 导出类型的数据对象可以作为过程变元和函数结果来使用 而且也可以出现在输入 输出表中 若对导出类型需要其他的运算 则这些运算必须作为过程定义给出中将进一步描述了导出类型数据值每种内在类型都和一个值的集合相关联 即那个类型可以采取的数据 中描述了每个内在类型的值 因为导出类型最终是依据内在类型的成分规定的 因而 导出类型对象可以假设的值是由类型定义及各内在类型值的集合所确定的数据实体数据实体是一个数据对象 表达式求值的结果或函数引用的执行结果 称为函数结果 数据实体有数据类型 或内在的或导出的 并且有或可以有数据值

48、 例外情况是未定义的变量 每个数据实体有一个秩 因而或是一个标量或是一个数组数据对象数据对象常常缩写为对象是一个常量 见 变量 见第 章 或常量的子对象 有名数据对象的类型可以显式 见第 章 或隐式 见 地规定子对象是某些有名对象的一部分 它可独立于其他部分而被引用和定义 只是变量 这些包括数组的一部分 数组元素和数组片段 字符串的一部分 子串 和结构的一部分 成分 子对象自身也是数据对象 但子对象只能由子对象指定符所引用 变量的子对象是变量 第 章中描述了子对象由一个名引用的对象是有名标量 标量对象有名数组 数组对象由子对象指定符引用的子对象是数组元素 标量子对象数组片段 数组子对象结构成分

49、 标量或数组子对象子串 标量子对象变量在可执行程序执行期间变量可以有值并且可以被定义和重新定义常量常量在可执行程序执行期间有值 并且不能变为可以被定义或重定义 具有名的常量称为有名常量并且有 属性 见 不具有名的常量称为字面常量见常量子对象常量子对象是常量的一部分 所引用的部分可以依赖于变量的值 例如是有名常量 指定 的常量子对象表达式当求值时表达式产生一个数据实体 表达式 见 或表示一个数据引用或表示一个计算 它由操作数 运算符以及圆括号组成 表达式结果的类型 值和秩由第 章中的规则确定函数引用在表达式求值期间一旦执行函数 此函数引用见 就产生一个数据实体 函数结果的类型和秩由函数的接口所确定 见 函数结果的值由函数的执行所确定标量标量是一个不是数组的数据 标量可以是任何内在类型或导出类型 注意 一个结构是标量 即使它有作为成分的数组也是如此 标量的秩是零 标量的形由大小是零的 秩 的数组来表示数组数组是标量数据的一个集合 其全部数据都有相同的类型和类型参数 其各个元素

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 标准规范 > 国家标准

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1