Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
CAN/CSA Z243.180-89 (R2004) 是加拿大标准协会(CSA)针对 PL/I 程序设计语言发布的加拿大国家标准。该标准于 1989 年首次发布,2004 年经确认继续有效,至 2026 年仍为加拿大采纳的国家标准之一。本标准等效采用国际标准 ISO 6160:1984 及美国国家标准 ANSI X3.53-1984,是 PL/I 语言领域最为权威的规范之一。
本标准适用于以下范围:
任何声称“符合 CAN CSA Z243.180-89”的 PL/I 实现都必须满足标准中规定的所有必需特性,不得省略核心功能(如基本数据类型、语句或输入输出机制)。
CAN CSA Z243.180-89 对 PL/I 程序设计语言进行了全面而严格的规范,涵盖词法、语法、语义以及程序执行模型。以下为重点技术领域。
标准定义了三类字符(字母、数字、特殊字符)、标识符规则以及预处理(COMPILE)指令。数据分成若干基本类型和复合类型,下表总结了核心数据类型及其典型精度要求。
| 数据类型 | 关键字 | 精度 / 长度 | 存储属性 | 备注 |
|---|---|---|---|---|
| 算术固定二进制 | FIXED BINARY | (p,q) 或 (p) | 0–31 位;若未指定则默认 15 | p 为总位数,q 为小数位数 |
| 算术浮点二进制 | FLOAT BINARY | 单精度 (6) / 双精度 (16) | 默认单精度 | 满足 ISO 浮点要求 |
| 算术固定十进制 | FIXED DECIMAL | (p,q) | p 最高 15 位 | 常用于财政计算 |
| 算术浮点十进制 | FLOAT DECIMAL | 精度最少 6 位 | 具体实现定义范围 | 较少使用 |
| 字符串 | CHARACTER | VARYING / NONVARYING | 最大长度 32767 | 必要时可变长度 |
| 位串 | BIT | 长度 1–32767 | 固定或可变 | 用于真值及位操作 |
标准包含完整的程序流程语句:IF-THEN-ELSE 条件分支、DO 组(含 DO WHILE/UNTIL)、GOTO、LEAVE(循环退出)以及 CALL 与 RETURN。语句定义严格遵循语义规则,例如所有标签必须在同一过程中可见。
PL/I 采用块结构(PROCEDURE / BEGIN 块),允许嵌套且变量作用域遵循 BLOCK 层级的可见性规则。标准同时定义了内部和外部过程以及入口名(ENTRY)的接口规范,包括参数传递(按引用或按值)和可选参数的支持。
标准规定了两种 I/O 模型:流式 I/O(GET FILE / PUT FILE,包括 LIST、DATA、EDIT 数据格式)和记录式 I/O(READ / WRITE,面向文件记录块)。此外还定义了文件的 OPEN、CLOSE 以及环境装订(ENVIRONMENT)参数,用于控制文件属性(记录长度、文件组织等)。
ON 语句用于定义条件处理,涵盖 ERROR、ZERODIVIDE、ENDFILE、IONFLOW 等条件。标准要求条件处理可嵌套并能恢复执行或改变控制流,是 PL/I 安全编程的关键特性。
遵循 CAN CSA Z243.180-89 标准实施 PL/I 语言时,开发者与工具链需关注以下要点:
%INCLUDE 管理头文件,这将提高代码与标准参考实现的一致性。 CAN CSA Z243.180-89 在内容上与以下标准保持等效:
自 1989 年以来,本标准一直是加拿大 PL/I 领域的法定参照。由于三方标准内容一致,开发者只需任意一份即可理解全部要求。此外,CSA 标准在 2004 年的确认并未引入技术变动,确保了向后兼容性。
本标准与更早的 PL/I 方言(如 IBM 的 OS PL/I)之间存在少数差异(例如 DEFAULT 语句的默认属性、某些 ON 条件的标识符)。实现者应仔细比对标准条款与编译器扩展,避免方言专用代码影响符合性。