1、计 算 机 基 础 教 育 丛 书C O B O L 语 言 ( 上 册 )( 修 订 版 )谭 浩 强 编 著清 华 大 学 出 版 社( 京 ) 新 登 字 158 号内 容 提 要本 书 是 作 者 在 其 编 著 的 CO BO L 语 言 一 书 的 基 础 上 修 订 补 充 而 成 。 本 书 根 据 AN SI COBOL 1974( 即 ISO CO BO L-78) 标 准 的 规 定 , 介 绍 了 COBO L 语 言 及 其 程 序 设 计 。 作 者 针 对 初 学 者 在 学 习 COBO L 语 言 时 所 遇 到 的 问 题 , 对 各 部 分 内 容 作 了
2、 合理 的 安 排 。 本 书 的 叙 述 通 俗 易 懂 , 循序 渐 进 , 例 题 丰 富 , 启 发 性 强 , 便 于 初 学 者 理 解 。本 书 可 作 为 高 等 学 校 和 计 算 机 学 习 班 的 教 材 , 也 可 供 计 算 机 程 序 设 计 人 员 和 企 事 业 单 位 管 理 人 员 及 其 他 初 学 者 自 学 参 考 。版 权 所 有 , 翻 印 必 究 。 本 书 封 面 贴 有 清 华 大 学 出 版 社 激 光 防 伪 标 志 , 无 标 志 者不 得 销 售 。计 算 机 基 础 教 育 丛 书COBOL 语 言 ( 上 册 )( 修 订 版 )
3、谭 浩 强 编 著清 华 大 学 出 版 社 出 版 北 京 清 华 园 通 县 宏 飞 印 刷 厂 印 刷新 华 书 店 总 店 北 京 科 技 发 行 所 发 行开 本 : 7 8 10 9 2 1 / 1 6 印 张 : 1 3 字 数 : 3 2 0 千 字1 9 94 年 5 月 第 2 版 1 9 94 年 5 月 第 1 次 印 刷印 数 : 00016000ISBN 7-302-01434-5/ T P 559定 价 : 9. 80 元计 算 机 基 础 教 育 丛 书出 版 说 明近 年 来 , 我 国 的 计 算 机 应 用 事 业 迅 速 发 展 , 大 批 科 技 人
4、员 、 大 中 学 生 、 管 理 人 员 、 以 及 各 行 各 业 的 在 职 人 员 都 迫 切 要 求 学 习 计 算 机 知 识 , 他 们 已 经 认 识 到 , 计 算 机 知 识 是 当 代 知 识 分 子 的 知 识 结 构 中 不 可 缺 少 的 重 要 部 分 。计 算 机 应 用 人 才 的 队 伍 由 两 部 分 人 组 成 : 一 部 分 是 从 计 算 机 专 业 毕 业 的 计 算 机 专 门 人 才 , 他 们 是 计 算 机 应 用 人 才 队 伍 中 的 骨 干 力 量 ; 另 一 部 分 是 各 行 各 业 中 从 事 计 算 机 应 用 的人 才 ,
5、他 们 既 熟 悉 本 专 业 的 业 务 , 又 掌 握 计 算 机 应 用 的 技 术 , 人 数 众 多 , 是 计 算 机 应 用 人 才 队 伍 的 基 本 力 量 。 他 们 掌 握 计 算 机 知 识 情 况 和 应 用 计 算 机 的 能 力 在 相 当 大 程 度 上 决 定 了 我 国 计 算 机 应 用 的 水 平 。 因 此 , 在 搞 好 计 算 机 专 业 教 育 的 同 时 , 在 广 大 非 计 算 机 专 业 中 开 展 计 算 机 基 础 教 育 是 十 分 必 要 的 。非 计 算 机 专 业 中 的 计 算 机 教 学 , 无 论 就 目 的 、 内 容
6、 、 教 学 体 系 、 教 材 、 教 学 方 法 等 各 方 面 都 与 计 算 机 专 业 有 很 大 的 不 同 , 它 以 应 用 为 目 的 , 以 应 用 为 出 发 点 。 如 果 不 注 意 这 个 特 点 , 将会 事 倍 功 半 。 广 大 非 计 算 机 专 业 的 师 生 、 在 职 干 部 迫 切 希 望 有 一 套 适 合 他 们 的 教 材 , 以 便 循 序 渐 进 地 迈 入 计 算 机 应 用 领 域 , 并 且 不 断 地 提 高 自 己 的 水 平 。 我 们 在 前 几 年 陆 续 编 写 了 一 些 适 合 初 学 者 使 用 的 教 材 , 受
7、到 广 大 群 众 的 欢 迎 。 许 多 读 者 勉 励 我 们 在 此 基 础 上 进 一 步 摸 索 和 总 结 规 律 , 为 我 国 的 广 大 非 计 算 机 专 业 人 员 编 写 一 整 套 合 适 的 教 材 。近 年 来 , 全 国 许 多 专 家 、 学 者 在 这 个 领 域 作 了 有 益 的 探 索 , 写 出 了 一 批 受 到 群 众 欢 迎 的计 算 机 基 础 教 育 的 教 材 。 特 别 是 全 国 高 等 学 校 计 算 机 基 础 教 育 研 究 会 作 了 大 量 的 工 作 , 在 集思 广 益 的 基 础 上 , 提 出 了 在 高 等 学 校
8、 的 非 计 算 机 专 业 中 进 行 计 算 机 教 育 的 四 个 层 次 的 设 想 , 受 到 广 泛 的 注 意 和 支 持 。 我 们 认 为 : 计 算 机 的 应 用 是 分 层 次 的 , 同 样 , 计 算 机 人 才 的 培 养 也 是 分 层 次 的 ; 非 计 算 机 专 业 中 各 个 领 域 的 情 况 不 同 , 也 不 能 一 律 要 求 , 在 进 行 计 算 机 教 育 时也 应 当 有 不 同 的 层 次 。 对 于 每 一 个 学 习 计 算 机 知 识 的 人 , 还 有 一 个 由 浅 入 深 , 逐 步 提 高 的 过 程 。我 们 认 为 ,
9、 编 辑 出 版 一 套 全 面 而 有 层 次 的 计 算 机 基 础 教 育 的 教 材 , 目 前 不 仅 是 十 分 必 要 的 , 而 且 是 完 全 有 条 件 的 。 在 全 国 高 等 学 校 计 算 机 基 础 教 育 研 究 会 和 许 多 同 志 的 积 极 推 动 和清 华 大 学 出 版 社 的 大 力 支 持 下 , 我 们 决 定 编 辑 计 算 机 基 础 教 育 丛 书 。 它 的 对 象 是 : 高 等 学 校 非 计 算 机 专 业 的 学 生 、 计 算 机 继 续 教 育 或 培 训 班 的 学 员 、 广 大 在 职 自 学 人 员 。本 丛 书 包
10、 括 计 算 机 科 学 技 术 的 一 些 最 基 本 的 内 容 , 例 如 计 算 机 各 种 常 用 的 高 级 语 言 、 微 机 系 统 应 用 基 础 、 计 算 机 软 件 技 术 基 础 、 计 算 机 硬 件 技 术 基 础 、 微 型 计 算 机 的 原 理 与 应 用 、 算 法 与 数 据 结 构 、 数 据 库 基 础 、 计 算 机 辅 助 设 计 基 础 、 微 机 网 络 与 应 用 、 系 统 分 析 与 设 计 等 , 形 成 多 层 次 的 结 构 , 读 者 可 以 根 据 需 要 与 可 能 选 学 。本 丛 书 的 宗 旨 是 针 对 广 大 非
11、计 算 机 专 业 的 需 要 和 特 点 来 组 织 教 材 , 敢 于 破 除 框 框 , 从 实 际 出 发 , 用 读 者 容 易 理 解 的 体 系 和 叙 述 方 法 , 深 入 浅 出 、 循 序 渐 进 地 帮 助 读 者 更 好 地 掌 握 课 程 的 基 本 内 容 。 希 望 我 们 的 丛 书 能 在 这 方 面 闯 出 自 己 的 风 格 , 在 实 践 中 接 受 检 验 。本 丛 书 的 作 者 大 多 数 是 高 等 学 校 中 有 较 丰 富 教 学 经 验 的 教 师 。 但 是 , 由 于 计 算 机 科 学 技 术 的 飞 速 发 展 以 及 我 们 的
12、 水 平 有 限 , 丛 书 肯 定 会 存 在 许 多 不 足 , 丛 书 的 书 目 和 内 容 也 应 当 不 断 发 展 和 更 新 。 我 们 热 情 地 希 望 得 到 社 会 各 界 和 广 大 读 者 的 批 评 指 正 。主 编 谭 浩 强 林 定 基 刘 瑞 挺 前 言用 计 算 机 进 行 事 务 管 理 , 是 计 算 机 最 重 要 的 用 途 之 一 。 CO BOL 语 言 是 国 际 上 最 广 泛 流 行 的 用 于 数 据 处 理 的 一 种 计 算 机 高 级 语 言 , 在 商 业 、 银 行 、 财 会 、 企 业 管 理 、 行 政 事 务 等 领
13、域 中 得 到 广 泛 的 应 用 。 但 由 于 COBOL 语 言 的 规 定 比 较 繁 琐 , 很 多 初 学 者 学 习 起 来 感 到 困 难 和 枯 燥 , 不 少 读 者 迫 切 希 望 有 一 本 介 绍 COBOL 语 言 的 通 俗 而 实 用 的 入 门 书 。 为 了 推 动 计 算 机 在 管 理 方 面 的 应 用 , 作 者 于 1984 年 编 写 了 CO BOL 语 言 一 书 , 由 清 华 大 学 出 版 社 出 版 。 在 编 写 该 书 的 过 程 中 , 作 者 深 入 研 究 了 CO BOL 语 言 初 学 者 的 基 础 和 认 识 规 律
14、 , 根 据 作 者 学 习 和 讲 授 COBOL 语 言 的 体 会 , 改 革 了 传 统 的 COBOL 教 材 的 写 法 , 重 新 组 织 了 易 于 初 学 者 接 受 和 理 解 的 教 材 体 系 。 该 书 出 版 后 受 到 社 会 各 界 和 广 大 读 者 的 欢 迎 和 好 评 , 认 为 是 介 绍 COBOL 语 言 的 较 好 的 书 , 为 初 学 者 学 习 COBOL 语 言 减 少 了 许 多 障 碍 。 该 书 出 版 后 已 重 印 多 次 , 累 计 印 数 达 60 多 万 册 。 中 央 电 视 台 还 以 该 书 为 教 材 , 组 织
15、了 “COBOL 语 言 ”电 视 讲 座 , 由 作 者 主 讲 。 该 书 的 出 版 对 推 动 CO BOL 语 言 在 我 国 的 应 用 起 了 积 极 作 用 。根 据 计 算 机 技 术 的 发 展 , 根 据 读 者 的 要 求 , 作 者 对 C OBOL 语 言 一 书 进 行 了 较 大 的 修 订 补 充 , 并 改 名 为 CO BOL 程 序 设 计 , 仍 由 清 华 大 学 出 版 社 出 版 , 以 期 抛 砖 引 玉 , 促 进 计 算 机 语 言 在 我 国 的 进 一 步 推 广 普 及 。本 书 的 对 象 是 COBOL 语 言 的 初 学 者 。
16、 写 法 上 力 求 通 俗 易 懂 , 深 入 浅 出 , 不 从 规 则 定 义 出 发 罗 列 一 系 列 的 规 定 而 使 人 望 而 生 畏 , 而 是 通 过 大 量 具 体 实 例 来 说 明 问 题 , 然 后 给 出 基 本 的 语 法 规 则 。COBOL 程 序 包 括 四 大 部 分 ( 标 识 部 、 环 境 部 、 数 据 部 、 过 程 部 ) , 每 一 部 分 又 有 许 多 规 定 , 有 的 初 学 者 往 往 分 不 清 其 主 次 和 它 们 之 间 的 关 系 , 感 到 头 绪 较 乱 , 无 从 入 手 。 作 者 认 为 , 这 四 个 部
17、分 中 的 核 心 部 分 是 过 程 部 。 本 书 的 写 法 是 以 过 程 部 为 主 要 线 索 , 说 明 其 它 三 个 部 分 如 何 与 过 程 部 配 合 组 成 一 个 完 整 的 COBOL 程 序 。COBOL 的 语 法 规 则 很 多 , 特 别 是 “可 选 项 ”很 多 , 如 果 都 一 一 介 绍 , 将 会 使 本 书 十 分 繁 杂 而 重 点 不 突 出 。 考 虑 到 本 书 是 一 本 入 门 教 科 书 而 不 是 COBO L 使 用 手 册 , 作 者 认 为 , 略 去 那 些 次 要 的 、 繁 琐 的 “可 选 项 ”对 初 学 者
18、可 能 是 适 宜 的 。 教 科 书 应 该 用 读 者 最 容 易 理 解 的 方 式 使 读 者 建 立 起 本 课 程 的 基 本 概 念 和 掌 握 程 序 设 计 的 一 般 技 巧 , 为 今 后 进 一 步 学 习 、 使 用 和 提 高 打 下 基 础 。 而 手 册 的 任 务 是 给 出 一 个 包 罗 万 象 的 规 定 和 说 明 , 以 备 查 阅 , 它 的 对 象 是 对 本 门 课 程 已 有 一 定 知 识 的 读 者 。为 帮 助 一 部 分 从 未 接 触 过 计 算 机 的 读 者 在 学 习 计 算 机 语 言 时 不 致 发 生 困 难 , 在 “
19、绪 论 ” 一 章 中 介 绍 了 关 于 计 算 机 的 一 般 知 识 。 同 时 , 考 虑 到 不 同 程 序 读 者 的 需 要 , 以 及 考 虑 到 初 学 者 今 后 的 提 高 , 本 书 也 包 括 了 一 些 较 深 入 而 实 用 的 内 容 , 例 如 : 表 处 理 的 位 标 ( 足 标 ) 引 用 方 法 和 SE A RCH 语 句 、 COPY 语 句 以 及 U SE 语 句 等 , 对 磁 带 文 件 和 磁 盘 文 件 亦 作 了 较 详 细 的 介 绍 。 在 目 录 中 打 “* ”符 号 的 是 初 学 者 第 一 次 学 习 时 可 以 不 必
20、 选 学 的 部 分 , 需 要 时 再 选 学 。在 每 章 中 都 有 程 度 适 当 的 例 题 , 帮 助 读 者 更 好 地 理 解 和 运 用 所 学 的 知 识 , 使 读 者 不 致 感 到 枯 燥 。 即 使 从 未 接 触 过 计 算 机 的 读 者 , 也 能 通 过 学 习 本 书 掌 握 COBO L 语 言 的 基 本 内 容 ,并 编 写 出 一 般 的 COBOL 程 序 。为 了 使 读 者 对 COBOL 语 言 的 全 部 内 容 有 一 个 粗 略 的 了 解 , 在 本 书 的 附 录 中 印 出 了 A N SI COBOL 1974( 即 ISO
21、COBOL -78) 语 法 规 则 表 。 但 读 者 开 始 时 不 需 要 对 它 的 每 一 部 分 内 容 都 搞 得 很 清 楚 。 随 着 编 制 程 序 技 巧 的 逐 步 提 高 , 不 断 地 扩 充 自 己 的 知 识 范 围 。 为 使 初 学者 编 制 简 单 的 程 序 时 查 阅 语 法 格 式 的 方 便 , 本 书 附 录 中 有 一 个 “简 单 的 COBOL 程 序 语 法 格 式 索 引 ”。关 于 COBOL 语 言 中 术 语 的 译 名 , 本 书 尽 量 采 用 使 读 者 易 于 理 解 而 含 义 确 切 的 译 法 。 例 如 , Wor
22、 king-stor age s ection 译 为 “工 作 单 元 节 ”, 表 处 理 中 的 Index 译 为 “位 标 ”, M nemonic- n ame 为 “助 忆 名 ”等 等 。 同 时 也 照 顾 到 已 广 泛 流 行 的 一 些 译 法 , 并 在 文 中 注 明 英 文 原 文 和 国 内 不 同 的 译 法 , 以 便 读 者 在 阅 读 其 它 书 籍 时 不 致 发 生 困 难 。由 于 实 用 的 COBO L 源 程 序 一 般 都 比 较 长 , 因 此 本 书 只 能 介 绍 一 些 最 基 本 的 COBOL 例 题 。 我 们 对 这 些 例
23、 题 都 作 了 比 较 详 细 的 分 析 。 有 了 这 个 基 础 , 读 者 不 难 看 懂 或 编 写 较 复 杂 的 程 序 。清 华 大 学 出 版 社 出 版 的 C OBOL 语 言 习 题 和 例 题 集 ( 谭 浩 强 主 编 ) 一 书 提 供 了 本 书 习 题 的 参 考 解 答 , 并 给 出 三 十 多 个 程 序 例 题 ( 包 括 COBOL“报 表 生 成 ”功 能 的 使 用 ) , 可 作 为 学 习 本 书 时 的 参 考 。最 后 , 作 者 还 想 说 明 : COBOL 语 言 是 一 种 很 有 实 用 价 值 的 计 算 机 高 级 语 言
24、 , 它 特 别 适合 于 数 据 处 理 , 它 的 报 表 生 成 和 输 出 的 功 能 丰 富 , 是 其 它 高 级 语 言 难 以 比 拟 的 。 用 惯 了 COBOL 语 言 的 同 志 都 感 到 COBO L 语 言 功 能 强 , 十 分 好 用 。 有 人 以 为 有 了 dBA SE 等 小 型数 据 库 系 统 以 后 , COBOL 语 言 就 没 有 用 了 。 这 是 一 种 误 解 。 用 数 据 库 组 织 数 据 , 用 COBOL 程 序 去 调 用 数 据 和 按 人 们 要 求 的 格 式 来 输 出 数 据 , 是 十 分 有 效 的 。 事 实
25、 上 , COBOL 语 言 仍然 是 有 生 命 力 的 。不 久 前 , 国 外 已 推 出 COBOL 语 言 的 最 新 版 本 CO BOL 85。 但 目 前 国 内 还 未 普 遍 使 用COBOL 85, 在 一 些 计 算 机 系 统 上 还 未 提 供 COBOL 85 的 编 译 系 统 。 因 此 本 书 仍 根 据 ISO COBOL -78 标 准 介 绍 COBOL 程 序 设 计 。 有 了 这 个 基 础 , 再 学 习 和 掌 握 COBOL 85 是 不 困 难 的 。在 本 书 的 修 订 工 作 中 , 高 志 强 同 志 帮 助 我 对 本 书 进
26、行 全 面 的 整 理 和 修 改 , 并 增 写 了 部 分 内 容 。由 于 作 者 的 水 平 和 经 验 有 限 , 本 书 无 疑 存 在 不 少 缺 点 甚 至 错 误 , 恳 切 地 希 望 从 事COBOL 语 言 教 学 和 实 际 工 作 的 同 志 以 及 广 大 读 者 给 予 批 评 指 正 。谭 浩 强 1993. 5 第 一 章 C O B O L 语 言 概 述1 .1 COBOL 语 言 的 发 展 概 况COBOL 是 Common Business Oriented Language ( 通 用 商 业 语 言 ) 的 缩 写 。 实 际 上 , COBO
27、L 不 仅 是 商 业 数 据 处 理 的 理 想 语 言 , 而 且 广 泛 应 用 于 数 据 管 理 领 域 , 例 如 财 会 工 作 、 统 计 报 表 、 计 划 编 制 、 情 报 检 索 、 人 事 管 理 等 。 因 此 COBOL 语 言 也 被 称 为 “用 于 管 理 的 语 言 ”。 在 计 算 机 的 应 用 领 域 中 , 数 据 处 理 ( data processing) 是 应 用 最 广 泛 的 一 个 领 域 。 数 据 处理 的 日 益 广 泛 应 用 要 求 人 们 设 计 出 能 满 足 实 际 数 据 处 理 工 作 中 各 种 要 求 的 一
28、种 计 算 机 语言 。 COBOL 语 言 就 是 在 这 种 形 势 下 应 运 而 生 的 。1959 年 5 月 , 美 国 国 防 部 召 开 了 一 个 有 政 府 机 关 、 企 业 、 计 算 机 厂 家 代 表 参 加 的 会 议 , 各 方 面 都 认 为 有 必 要 设 计 出 一 种 数 据 处 理 专 用 的 计 算 机 语 言 。 会 上 确 定 了 常 设 机 构 , 以 研 究 这 种 语 言 。 这 个 会 议 称 为 CODASY L ( Conference on Data Systems Languages) , 意 为 数 据系 统 语 言 会 议 。
29、 1959 年 12 月 提 出 了 世 界 上 第 一 个 COBOL 语 言 文 本 , 次 年 4 月 由 美 国 政 府 印 刷 局 正 式 发 表 , 因 此 称 COBOL-60。 后 来 进 一 步 扩 充 和 完 善 , 出 现 了 COBOL-61 , 扩 展 COBOL-61。 它 们 为 后 来 的 版 本 提 供 了 基 础 。1965 年 美 国 出 现 了 更 完 善 的 版 本 , 即 COBOL-65 , 但 直 到 1968 年 8 月 才 由 美 国 国 家 标 准 化 协 会 ANSI ( American National Standard Instit
30、 ute) 通 过 批 准 了 这 个 语 言 的 标 准 版 本 , 作 为 各 厂 家 的 依 据 。 这 就 是 ANSI COBOL X3 .23-1968。 1972 年 国 际 标 准 化 组 织 ISO ( Inter- national Standard O rganization) 决 定 把 它 作 为 ISO COBOL-72 国 际 标 准 COBOL 文 本 , 该 文 本 已 为 美 、 英 、 法 、 日 、 苏 等 21 个 会 员 国 承 认 。1974 年 , 美 国 ANSI 对 COBOL-68 作 了 修 改 扩 充 , 发 表 了 ANSI COBO
31、L X3 .23-1974 文 本 。 1978 年 ISO 宣 布 ANSI COBOL X3 .23-1974 作 为 国 际 标 准 文 本 , 即 ISO COBOL-78 。标 准 版 本 的 出 现 , 为 COBOL 语 言 的 推 广 应 用 创 造 了 一 个 有 利 的 条 件 。 多 年 来 各 国 计算 机 厂 商 都 以 ISO COBOL 72 ( 即 ANSI COBOL 1968) 或 ISO COBOL-78 ( 即 ANSI COBOL1974 ) 作 为 设 计 软 件 的 依 据 。 几 年 前 , 美 国 又 提 出 新 的 COBOL 版 本 , 即
32、 COBOL 85 。 它 在ANSI COBOL 1974 的 基 础 上 , 扩 充 了 功 能 , 适 合 于 结 构 化 程 序 设 计 。 但 目 前 国 内 大 多 数 计算 机 系 统 还 未 配 置 COBOL 85 编 译 系 统 , 而 仍 普 遍 使 用 ANSI COBOL 1974 。 因 此 本 书 的 叙 述 仍 然 以 COBOL 1974 为 基 础 , 并 在 附 录 中 给 出 COBOL 85 的 语 法 一 览 。 掌 握 了 COBOL 1974 之 后 , 再 学 习 COBOL 85 是 不 会 有 什 么 困 难 的 。应 该 说 明 , 尽
33、管 COBOL 标 准 化 程 度 比 较 高 , 但 各 个 计 算 机 厂 家 在 实 现 它 时 还 是 有 一 些 差 别 的 , 在 具 体 用 计 算 机 时 应 查 阅 该 计 算 机 系 统 的 COBOL 说 明 书 。1 .2 COBOL 语 言 的 特 点COBOL 语 言 的 主 要 特 点 有 : 1 ( 一 ) 最 适 于 数 据 处 理 领 域 。 所 谓 数 据 处 理 是 指 对 大 量 数 据 的 收 集 、 统 计 、 分 类 和 加 工 。 例 如 企 业 管 理 、 库 存 管 理 、 报 表 统 计 、 帐 目 计 算 、 信 息 情 报 检 索 等
34、 方 面 的 应 用 都 属 于 数 据 处 理 。数 据 处 理 的 特 点 是 : 算 术 计 算 量 少 而 逻 辑 处 理 多 ; 输 入 输 出 量 大 ; 数 据 间 存 在 着 一 定的 逻 辑 关 系 ( 数 据 项 间 有 清 晰 的 层 次 关 系 , 例 如 职 工 工 资 中 包 括 应 发 工 资 、 扣 除 部 分 、 实 发 工 资 几 部 分 , 应 发 工 资 又 包 括 基 本 工 资 、 附 加 工 资 等 ) ; 大 量 的 分 类 排 序 ( 如 按 年 龄 大 小 排 名 单 ,按 受 教 育 程 度 分 类 ) ; 对 打 印 报 表 要 求 较
35、高 、 多 样 化 等 等 。在 企 业 ( 如 银 行 、 商 业 、 工 厂 ) 和 其 它 部 门 ( 如 领 导 机 关 、 业 务 管 理 部 门 ) 的 管 理 工 作 中 , 一 般 并 无 很 复 杂 的 计 算 公 式 , 不 要 求 太 高 深 的 数 学 基 础 , 但 是 处 理 数 据 的 量 很 大 。COBOL 正 是 针 对 数 据 处 理 要 求 而 设 计 的 。 COBOL 所 处 理 的 问 题 具 有 数 据 繁 多 而 运 算 简 单 的 特 点 。 COBOL 中 也 有 加 、 减 、 乘 、 除 、 乘 方 等 运 算 以 及 表 达 式 的
36、概 念 , 但 这 些 不 是 COBOL 的 重 点 。 它 的 主 要 功 能 是 描 述 数 据 结 构 和 分 析 处 理 大 批 量 的 数 据 。COBOL 对 数 据 的 处 理 过 程 , 与 人 工 处 理 的 过 程 是 相 似 的 , 即 与 人 们 的 思 维 过 程 比 较 接近 , 因 此 , 一 般 的 管 理 人 员 是 比 较 容 易 理 解 和 掌 握 COBOL 语 言 的 。( 二 ) COBOL 比 较 接 近 于 自 然 语 言 ( 指 的 是 英 语 ) 。 COBOL 程 序 看 起 来 很 像 一 篇 用 英语 写 的 文 章 。 例 如 ,
37、用 ADD A T O B 来 表 示 A + B B( A 加 B, 结 果 放 在 B 中 ) , 用 MOVE C TO D 表 示 将 变 量 C 的 值 传 送 到 变 量 D 中 。 COBOL 大 量 采 用 普 通 英 语 词 汇 和 句 型 , 学 过 英语 的 人 看 COBOL 程 序 感 到 通 俗 易 懂 。 也 就 是 说 它 的 特 点 是 : 成 文 自 明 。 看 它 的 英 文 意 思就 可 以 大 致 懂 得 程 序 的 含 义 。( 三 ) 通 用 性 强 , 由 于 COBOL 语 言 的 标 准 化 程 度 较 高 。 不 同 厂 家 生 产 的 计
38、 算 机 系 统 所提 供 的 COBOL, 是 COBOL 标 准 的 全 集 或 一 个 子 集 。 一 个 计 算 机 上 的 COBOL 程 序 向 另 一计 算 机 系 统 上 移 植 , 是 比 较 容 易 实 现 的 。( 四 ) COBOL 的 结 构 严 谨 , 层 次 分 明 。 每 个 程 序 分 四 大 部 分 ( 称 为 部 , division ) , 每 个 部下 面 又 分 为 若 干 节 ( section) , 节 下 面 又 分 为 若 干 段 ( paragraph) 。 每 一 部 分 都 有 固 定 的 程 式 。 这 个 特 点 使 初 学 者 比
39、 较 容 易 通 过 摹 仿 别 人 程 序 中 的 有 关 部 分 , 从 而 较 快 地 写 出 自 己 的 程 序 。( 五 ) COBOL 的 缺 点 是 比 较 繁 琐 。 如 同 中 国 古 代 的 八 股 文 一 样 , 程 序 无 论 大 小 简 繁 , 一 律 都 要 写 齐 四 大 部 分 , 对 每 个 部 进 行 必 要 的 定 义 和 说 明 。 因 此 源 程 序 显 得 比 较 冗 长 。据 国 外 统 计 , 在 大 、 中 型 计 算 机 系 统 上 运 行 COBOL 程 序 所 占 用 的 计 算 机 时 间 为 全 部 机时 一 半 以 上 , 超 过
40、了 任 何 一 种 其 它 语 言 , 是 目 前 世 界 上 使 用 得 最 多 的 一 种 计 算 机 语 言 。1 .3 最 简 单 的 COBOL 程 序 介 绍为 了 使 初 学 者 从 一 开 始 就 了 解 COBOL 源 程 序 的 格 式 以 及 它 的 组 成 , 建 立 起 一 个 整 体的 概 念 , 我 们 在 这 一 节 中 先 介 绍 两 个 最 简 单 的 COBOL 源 程 序 。【 例 1 .1】1 6 7 8 12IDENPROGT IFICATIO N DIVISION .( 标 识 部 )RAM - ID . EXAM1 . ( 程 序 标 识 段 )
41、 2 ENVI RONMENT DIVISION .( 环 境 部 )DATA DIVISION .( 数 据 部 )PROC EDUR E DIVISION .( 过 程 部 )S . DISPLAY THIS IS A COBOL PROGRA M . STO P R UN .这 个 程 序 的 目 的 是 使 计 算 机 在 指 定 的 外 部 设 备 ( 终 端 显 示 器 或 打 印 机 ) 上 显 示 ( 或 打 印 ) 出 “ T HIS IS A COBOL P ROG RAM。 ”这 样 一 串 字 符 , 然 后 停 止 运 行 。 这 些 操 作 是 在 “ 过 程 部”
42、 中 指 定 的 。 程 序 倒 数 第 二 行 的 “ S”是 段 名 。 在 本 例 中 过 程 部 只 包 括 一 个 段 , 即 S 段 。 在 S 段 中 有 两 个 句 子 , 每 个 句 子 以 句 点 “ .”和 空 格 结 束 。【 例 1 .2】 将 A 和 B 的 值 相 加 , 其 结 果 放 在 B 中 。1 6 7 8 12IDEN T IFICATIO N DIVISION .(标 识 部 )PROG RAM - ID . EXAM2 . (程 序 标 识 段 )ENVI RONMENT DIVISION .(环 境 部 )DATA DIVISION .(数 据
43、部 )WORK ING - STORAGE SECT ION . (工 作 单 元 节 )77 PICTU RE IS 9(3 ) . (对 A 进 行 描 述 )77 PICTU RE IS 9(3 ) . (对 B 进 行 描 述 )PROC EDUR E DIVISION .(过 程 部 )ACCEPT A (输 入 A 的 值 )ACCEPT B (输 入 B 的 值 )ADD A TO B ( A + B B)DISPLAY A , B . (显 示 A 和 B 的 值 )S .STO P R UN . (停 止 运 行 )这 个 程 序 的 名 字 叫 “ EXAM2”。 与 例
44、1 .1 不 同 , 在 本 例 中 数 据 部 下 面 有 一 个 WOR K- I NG-STO RAGE SECT ION ( 工 作 单 元 节 , 或 称 工 作 存 储 节 ) , 用 它 来 描 述 程 序 中 用 到 的 中 间工 作 单 元 。 今 有 两 个 数 据 项 A 和 B, 用 “ PICT U RE IS 9 ( 3) ”来 说 明 ( 描 述 ) A 和 B 的 类 型 是数 值 型 的“ , 9”代 表 数 值 型 “, ( 3 )”代 表 数 据 长 度 为 三 位 , 即 A 和 B 的 值 是 三 位 整 数 ( 有 关 数据 描 述 将 在 以 后
45、详 述 , 在 此 只 要 求 大 体 知 道 它 们 的 作 用 即 可 ) 。 在 过 程 部 中 , 只 有 一 个 S 段 。 在 S 段 中 有 两 个 句 子 。 每 个 句 子 以 句 点 和 空 格 为 结 束 标 志 。 第 一 个 句 子 中 包 含 四 个 语 句 , 每 个 语 句 完 成 一 个 特 定 的 操 作 。 ACCEP T A 和 ACCEP T B 是 从 指 定 的 外 部 设 备 上 先 后 接收 两 个 数 值 给 A 和 B( 指 定 的 外 部 设 备 可 以 是 控 制 台 或 终 端 的 键 盘 , 也 可 以 是 读 卡 机 或 软 磁
46、盘 机 , 由 具 体 的 计 算 机 系 统 规 定 ) 。 例 如 , 如 果 从 键 盘 上 打 入 “ 012”和 “ 024”二 个 数 值 给 计 算 机 , 则 A 的 值 为 12 , B 的 值 为 24 。 第 三 个 语 句 是 加 法 语 句 , ADD A TO B 表 示 “将 A 的 值 加 到 B 上 面 去” , 即 A + B B , 也 就 是 12 + 24 = 36 , 将 36 存 放 在 B 中 , 因 此 , B 的 值 为 36 。 第 四 3 个 语 句 为 显 示 语 句 , 显 示 出 A 和 B 的 值 , 在 指 定 的 外 部 设
47、备 上 输 出 A 和 B 的 值 (12 和 36 ) 。至 此 , 第 一 个 句 子 完 了 。 第 二 个 句 子 是 ST OP R UN , 停 止 程 序 运 行 。对 这 两 个 例 子 , 可 以 暂 时 “ 不 求 甚 解” , 即 只 要 求 大 体 上 知 道 它 们 的 意 思 即 可 , 有 关 各 部 分 将 在 下 面 各 章 中 详 细 说 明 。1 .4 .1 部1 .4 COBOL 程 序 的 结 构从 上 面 两 个 例 子 中 可 以 看 到 , 每 一 个 程 序 都 应 包 括 以 下 四 大 部 分 , 每 个 部 ( Division ) 有自
48、 己 的 部 名 , 每 一 个 部 的 作 用 如 下 :IDENT IFICATIO N DIVISIO N ( 标 识 部 ) 主 要 用 来 指 定 源 程 序 名 字 , 也 可 以 写 入 其 它 用 作 备 忘 的 某些 信 息 (如 日 期 、 作 者 等 ) 。EN VIRONMENT DIV ISION ( 环 境 部 ) 指 出 程 序 中 用 到 的 数 据 文 件 名 与 计 算 机 系 统 的 设 备 的 对 应关 系 , 即 把 某 一 文 件 名 与 一 外 部 设 备 联 系 起 来 。 此 外 还 指 定 目 标 程序 中 使 用 的 专 门 控 制 方 法
49、 及 程 序 所 用 内 存 区 的 大 小 等 。DATA DIVISION ( 数 据 部 ) 程 序 中 所 用 到 的 全 部 数 据 ( 包 括 输 入 输 出 的 数 据 和 中 间 数据 ) 都 应 在 数 据 部 中 说 明 它 们 的 类 型 和 所 占 内 存 的 情 况 。PROCEDUR E DIVISION (过 程 部 ) 用 来 给 出 程 序 要 执 行 的 指 令 , 使 计 算 机 产 生 相 应 的 操 作 。例 如 进 行 运 算 或 其 它 处 理 。在 以 上 四 个 部 分 中 , 只 有 过 程 部 是 执 行 部 分 。 计 算 机 的 任 何 一 个 操 作 都 是 由 过 程 部 中的 指 令 给 出 的 。 因 此 , 过 程 部 是 整 个 程 序 的 核 心 部 分 , 由 它 决 定 程 序 的 每 一 步 操 作 。 也 就 是 说 , 程 序 所 预 定 的 功 能 主 要 是 靠 这 部 分 来 完 成 的 。 前