Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
CAN CSA Z243.181-89 (2004) 是加拿大标准协会(CSA)发布的程序设计语言国家标准,其技术内容等效于国际标准 ISO 7185:1983。该标准于 1989 年首次发布,2004 年经确认仍然有效,是加拿大在电子信息处理领域的重要技术规范之一。标准全称为《程序设计语言 Pascal》,旨在提供一种无歧义、机器无关的语言定义,涵盖语法形式、语义规则和标准程序库,使程序能够在不同计算平台上实现高度可移植。
本标准适用于:
标准正文采纳了扩展巴科斯范式(EBNF)对语法进行精确描述,并采用自然语言结合数学符号定义语义,保证了语言在逻辑上的一致性和完整性。
一个标准 Pascal 程序由程序首部、声明部分和语句部分组成。程序首部指明程序名称及参数(文件参数);声明部分按顺序定义标号、常量、类型、变量、过程及函数;语句部分为复合语句,包含执行逻辑。标准严格规定了标识符的有效性——字母开头、长度不限(但实现可限制有效位数)、不区分大小写,并保留 35 个关键字如 program、var、begin、end 等。
Pascal 语言以丰富且严谨的数据类型著称,所有变量必须显式声明类型,编译器据此进行类型检查。主要数据类型分类如下表所示:
| 类别 | 类型名称 | 说明 | 示例 |
|---|---|---|---|
| 简单类型 | 整型(integer) | 整数值,最小范围 -32768..32767(实现可更宽) | var i: integer; |
| 实型(real) | 浮点实数,精度由实现定义 | var r: real; | |
| 字符(char) | 单个字符,序数值按实现字符集排列 | var ch: char; | |
| 布尔(boolean) | 逻辑值 true 与 false | var b: boolean; | |
| 用户定义简单类型 | 枚举(enumerated) | 列举有序常量集合 | type color = (red, green, blue); |
| 子界(subrange) | 有序类型的连续子范围 | var digit: 0..9; | |
| 结构类型 | 数组(array) | 同构元素集合,索引为有序类型 | a: array[1..10] of real; |
| 记录(record) | 异构字段集合 | type student = record name: packed array[1..30] of char; age: integer end; | |
| 集合(set) | 基类型的元素集合,运算包括并、交、差 | var s: set of char; | |
| 文件(file) | 有序序列,支持读写 | var f: file of integer; |
标准提供结构化编程所需的全部控制语句:if-then-else、case、while-do、repeat-until、for-to/downto 以及 with 语句。过程与函数支持值参数和变量参数(形参前加 var),允许递归调用但未规定静态嵌套深度上限(由实现定义)。标准还预定义了若干常量和函数,如 maxint、abs、sqr、succ、odd 等,以及标准过程 read、write、reset、rewrite 等用于文本文件交互。
对于编译器实现者而言,必须严格区分“标准要求”与“允许实现定义”的部分。例如整数的精度、实数的表示、字符集的序数、文件缓冲行为等均属于实现定义,但在评估合规性时需根据 ISO 7185 附录 A 列出偏差。建议实现采用所见即所得的源字符处理,避免对制表符、行尾符做非标转换。
对于程序员,编写符合标准的代码应注意以下几点:
packed 关键字:标准仅指出 packed 结构可能在空间上优化,但访问效率由实现决定;不可假设 packed 数组与 packed 记录的对齐方式。read(write),必须用 get/put 或 read(仅适用于文件类型为字符或整型等预定义情况)简化。建议所有非文本文件均采用 get、put 系列原语。inrange 或自定义守卫条件。 CAN CSA Z243.181-89 完全是 ISO 7185:1983 的加拿大采纳版,两者技术内容完全一致。ISO 7185 后来经过修订(ISO 7185:1990 及后续),增加了少量对扩展性的建议,但核心定义基本不变。本标准的 2004 年确认表示 CSA 继续认可该版本的有效性,未引入重大改动。
在 Pascal 语言家族中,还有另一个重要标准:ISO 10206:1991(扩展 Pascal),它提供了模块化、泛型、动态数组、字符串与多种增强运算。但 CAN CSA Z243.181-89 只对应基础 Pascal,未包含这些扩展。如果开发者需要支持更现代的范式,应参考 ISO 10206 所定义的扩展 Pascal,或查阅相应的行业实现手册。
此外,该标准填补了当时加拿大在程序设计语言国家标准领域的空白,与同系列的 CSA Z243 其他标准(如 Z243.176 关于 Fortran 语言,Z243.199 关于 C 语言)共同构成信息处理标准体系。其内容也与 ISO/IEC 9945(POSIX)中关于 Pascal 测试方法的部分相协调,确保操作系统层面的交互一致性。
real 的绝对值应至少涵盖 1E-38 到 1E+38,有效位数至少 6 位十进制数。具体是否采用 IEEE 754 格式则由编译器决定。 * 本文基于 2026 年可公开获取的标准版本信息撰写,旨在提供技术参考。具体应用时请以 CSA 官方发布的最新版本为准。