COBOL 基础入门
COBOL 基础入门
本教程基于 GnuCOBOL(OpenCOBOL 的延续),结合
hello.cob与snake.cob实例讲解。
目录
1. 什么是 COBOL
COBOL(COmmon Business Oriented Language,面向商业的通用语言)诞生于 1959 年,是最早的高级编程语言之一。它的设计目标是让业务逻辑像英语一样可读,因此大量使用自然语言关键字。
特点:
- 面向过程,语法接近英语,可读性极强
- 强类型、显式声明,所有变量必须在
DATA DIVISION中定义 - 主要用于金融、银行、保险、政府等大型机(Mainframe)业务系统
- 至今全球仍有大量核心业务系统运行在 COBOL 之上
现代实现: GnuCOBOL 是开源的 COBOL 编译器,可将 COBOL 源码编译为 C 代码再编译为本地可执行文件,支持 Linux / Windows / macOS。
2. 环境准备
安装 GnuCOBOL
1 | # Fedora / RHEL / CentOS |
验证安装
1 | cobc --version |
若能看到版本信息,说明安装成功。
3. 第一个程序:Hello World
创建文件 hello.cob:
1 | IDENTIFICATION DIVISION. |
逐行解读:
| 行 | 说明 |
|---|---|
IDENTIFICATION DIVISION. |
标识部,程序的”身份证”,声明程序名、作者等 |
PROGRAM-ID. HELLO-WORLD. |
程序名,编译后可执行文件默认以此命名 |
AUTHOR. WECODER. |
作者信息(注释性,不影响运行) |
*> |
行内注释符号(自由格式) |
ENVIRONMENT DIVISION. |
环境部,声明运行环境(本例为空) |
DATA DIVISION. |
数据部,所有变量在此声明 |
WORKING-STORAGE SECTION. |
工作存储节,声明程序内部变量 |
01 WS-MESSAGE PIC X(30) VALUE "...". |
定义一个 30 字符的变量并赋初值 |
PROCEDURE DIVISION. |
过程部,编写实际逻辑 |
MAIN-PROCEDURE. |
段落名(Paragraph),逻辑代码的入口 |
DISPLAY WS-MESSAGE. |
输出变量内容到屏幕 |
STOP RUN. |
结束程序并返回控制权 |
4. 程序结构:四大部
COBOL 程序由四个部(Division)组成,顺序固定:
1 | IDENTIFICATION DIVISION. ← 标识部(必需) |
4.1 IDENTIFICATION DIVISION(标识部)
程序的元信息,必须是第一个部。
1 | IDENTIFICATION DIVISION. |
PROGRAM-ID是唯一必需的条目- 其他如
AUTHOR、DATE-WRITTEN、INSTALLATION均为文档性条目
4.2 ENVIRONMENT DIVISION(环境部)
声明程序运行所依赖的外部环境,如输入输出设备、文件系统。
1 | ENVIRONMENT DIVISION. |
CONFIGURATION SECTION:配置节,声明编译器/计算机信息INPUT-OUTPUT SECTION:输入输出节,声明文件与设备的关联
4.3 DATA DIVISION(数据部)
所有数据的声明区,包含多个节:
| 节 | 用途 |
|---|---|
FILE SECTION |
文件记录结构 |
WORKING-STORAGE SECTION |
程序内部变量(最常用) |
LOCAL-STORAGE SECTION |
每次调用重新初始化的局部变量 |
LINKAGE SECTION |
子程序接收的参数 |
4.4 PROCEDURE DIVISION(过程部)
编写程序逻辑的地方,由若干段落(Paragraph)组成。
1 | PROCEDURE DIVISION. |
5. 源码格式:固定格式 vs 自由格式
COBOL 有两种源码格式,列位置有严格规定。
固定格式(Fixed Format)
传统格式,本项目 snake.cob 采用此格式:
1 | 列号: 1 6 7 72 |
规则:
- 第 7 列写
*表示整行注释 - 部名、节名、段落名从 A 区(第 8 列) 开始
- 普通语句从 B 区(第 12 列) 开始
- 代码不能超过第 72 列
自由格式(Free Format)
GnuCOBOL 支持自由格式,无列位置限制,用 >> 指示符:
1 | >>SOURCE FORMAT FREE |
编译时加 -free 参数,或在源码首行写 >>SOURCE FORMAT FREE。
建议: 学习阶段用自由格式更轻松;维护老代码时需熟悉固定格式。
6. 编译与运行
基本编译
1 | # 编译为可执行文件(-x 表示生成可执行程序) |
常用编译选项
| 选项 | 说明 |
|---|---|
-x |
生成可执行文件 |
-free |
使用自由格式源码 |
-o <file> |
指定输出文件名 |
-c |
只编译为目标文件(.o),不链接 |
-m |
编译为可被 CALL 调用的模块(.so) |
-Wall |
显示所有警告 |
-std=<标准> |
指定 COBOL 标准(如 -std=default) |
使用一体化脚本
COBOL 项目通常提供 cobol.sh 一体化脚本:
1 | ./cobol.sh new hello # 创建 hello.cob |
下一章: 数据类型与变量