- Tác giả

- Name
- Nguyễn Đức Xinh
- Ngày xuất bản
- Ngày xuất bản
COBOL là gì? Giới thiệu COBOL – Ngôn ngữ chủ lực của hệ thống tài chính và mainframe
COBOL là gì? Tại sao vẫn là “xương sống” của hệ thống tài chính toàn cầu
COBOL (Common Business-Oriented Language) ra đời năm 1959, là ngôn ngữ lập trình hướng nghiệp vụ, tập trung vào xử lý dữ liệu và business logic. Dù đã hơn 60 năm tuổi, COBOL vẫn vận hành 70% giao dịch tài chính toàn cầu, đặc biệt trong các hệ thống ngân hàng, bảo hiểm, chính phủ và các tổ chức lớn.
Lý do COBOL vẫn tồn tại
- Độ ổn định cao: Hệ thống legacy COBOL cực kỳ ổn định, ít lỗi, vận hành liên tục hàng chục năm.
- Chi phí chuyển đổi lớn: Việc migrate sang công nghệ mới rất tốn kém, rủi ro cao.
- Khó thay thế: COBOL gắn liền với kiến trúc mainframe, xử lý khối lượng giao dịch khổng lồ.
Đối tượng nên học COBOL
- Developer muốn hiểu hệ thống legacy (banking, insurance, government)
- Backend engineer muốn làm việc với mainframe
- Technical lead cần maintain hệ thống cũ
- DevOps/Architect muốn hiểu kiến trúc enterprise lâu đời
Kiến trúc hệ thống COBOL trong thực tế
Một hệ thống enterprise điển hình sử dụng COBOL:
[Terminal] → [CICS] → [COBOL Program] → [DB2/VSAM]
- CICS: Transaction Manager
- DB2: Database
- VSAM: File storage
COBOL thường chạy trên các nền tảng như IBM Mainframe (z/OS), Micro Focus Visual COBOL, GnuCOBOL (Open Source).
Hướng dẫn cài đặt môi trường học COBOL
Cài đặt GnuCOBOL trên macOS
brew install gnu-cobol
cobc -v
Cài đặt trên Ubuntu
sudo apt update
sudo apt install gnucobol
Viết chương trình COBOL đầu tiên
Tạo file hello.cbl:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
DISPLAY "Hello, COBOL World!".
STOP RUN.
Compile và chạy:
cobc -x hello.cbl
./hello
Cấu trúc chương trình COBOL
Mỗi chương trình COBOL được tổ chức theo cấu trúc cố định gồm 4 division (phân đoạn). Thứ tự này là bắt buộc; mỗi division đảm nhiệm một vai trò riêng trong việc xây dựng chương trình.
IDENTIFICATION DIVISION. ← Metadata chương trình
ENVIRONMENT DIVISION. ← Môi trường & thiết bị I/O
DATA DIVISION. ← Khai báo dữ liệu
PROCEDURE DIVISION. ← Logic nghiệp vụ
1️⃣ IDENTIFICATION DIVISION
Giới thiệu: Division đầu tiên, bắt buộc trong mọi chương trình COBOL.
Chức năng:
- Định danh chương trình (PROGRAM-ID) – tên dùng khi gọi subprogram hoặc debug
- Khai báo thông tin mô tả: AUTHOR, DATE-WRITTEN, INSTALLATION (tùy chọn)
- Lưu trữ metadata giúp quản lý và bảo trì mã nguồn trong hệ thống enterprise
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE.
AUTHOR. YOUR-NAME.
DATE-WRITTEN. 2026-03-04.
2️⃣ ENVIRONMENT DIVISION
Giới thiệu: Mô tả môi trường phần cứng và ánh xạ file/thiết bị. Division này đảm bảo COBOL chạy đúng trên từng loại mainframe hoặc platform.
Chức năng:
- CONFIGURATION SECTION: Khai báo SOURCE-COMPUTER (máy biên dịch) và OBJECT-COMPUTER (máy thực thi) – quan trọng khi port giữa các hệ thống
- INPUT-OUTPUT SECTION: Gắn logical file name với physical device/file, định nghĩa tổ chức file (sequential, indexed, relative) và các đặc tả I/O
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-Z-SYSTEM.
OBJECT-COMPUTER. IBM-Z-SYSTEM.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT INPUT-FILE ASSIGN TO "data.txt"
ORGANIZATION IS LINE SEQUENTIAL.
Nếu chương trình không dùng file, division này có thể bỏ qua (minimal program).
3️⃣ DATA DIVISION
Giới thiệu: Chứa toàn bộ khai báo dữ liệu – biến, record file, record DB, và cấu trúc dữ liệu phức tạp.
Chức năng:
- FILE SECTION: Mô tả layout record của các file đã SELECT trong ENVIRONMENT DIVISION (FD – File Descriptor)
- WORKING-STORAGE SECTION: Biến dùng trong suốt thời gian chạy chương trình (khác với biến local trong một đoạn logic)
- LINKAGE SECTION: Định nghĩa tham số truyền vào/ra cho subprogram (CALL... USING)
- LOCAL-STORAGE SECTION: Biến local có scope theo một đoạn PERFORM (tùy COBOL version)
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-NAME PIC A(20).
01 WS-AGE PIC 99.
Giải thích PIC
| PIC | Ý nghĩa |
|---|---|
| 9 | Số |
| A | Chữ |
| X | Ký tự bất kỳ |
4️⃣ PROCEDURE DIVISION
Giới thiệu: Chứa toàn bộ logic nghiệp vụ – câu lệnh thực thi theo thứ tự, tương đương thân hàm main trong các ngôn ngữ khác.
Chức năng:
- Thực thi các thao tác: MOVE, COMPUTE, DISPLAY, ACCEPT, READ, WRITE,...
- Điều khiển luồng: IF/ELSE, PERFORM (vòng lặp, gọi paragraph), GOBACK/STOP RUN
- Gọi subprogram: CALL
- Xử lý file, DB, giao dịch CICS (tùy môi trường)
PROCEDURE DIVISION.
MOVE "John" TO WS-NAME.
MOVE 25 TO WS-AGE.
DISPLAY WS-NAME.
DISPLAY WS-AGE.
STOP RUN.
Biến & kiểu dữ liệu trong COBOL
Numeric
01 WS-SALARY PIC 9(7)V99.
V: vị trí dấu thập phân ẩn
String
01 WS-NAME PIC X(30).
Group Variable (giống struct trong C)
01 CUSTOMER.
05 CUST-ID PIC 9(5).
05 CUST-NAME PIC X(20).
Cấu trúc điều kiện và vòng lặp
IF ELSE
IF WS-AGE > 18
DISPLAY "Adult"
ELSE
DISPLAY "Minor"
END-IF.
LOOP – PERFORM
PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > 5
DISPLAY WS-I
END-PERFORM.
Xử lý file trong COBOL
COBOL rất mạnh về file:
SELECT INPUT-FILE ASSIGN TO "data.txt"
ORGANIZATION IS LINE SEQUENTIAL.
COBOL + Database (DB2 Concept)
Embedded SQL trong COBOL:
EXEC SQL
SELECT NAME INTO :WS-NAME
FROM CUSTOMER
WHERE ID = :WS-ID
END-EXEC.
COBOL trong doanh nghiệp
Hệ thống banking thường có:
- Batch Job
- Online Transaction (CICS)
- JCL (Job Control Language)
- VSAM file
- DB2
So sánh COBOL với các ngôn ngữ khác
| Tính năng | COBOL | Java | Python |
|---|---|---|---|
| Xử lý nghiệp vụ | Rất mạnh | Tốt | Tốt |
| Mainframe support | Native | Thông qua API | Thông qua API |
| Legacy system | Chủ lực | Phụ trợ | Phụ trợ |
| Modernization | Khó | Dễ | Dễ |
| Performance | Cao | Cao | Trung bình |
| Học liệu | Ít | Nhiều | Nhiều |
| Cộng đồng | Nhỏ | Rộng | Rộng |
Example Implementation: Hiển thị thông tin khách hàng
IDENTIFICATION DIVISION.
PROGRAM-ID. CUSTOMER-INFO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 CUSTOMER.
05 CUST-ID PIC 9(5).
05 CUST-NAME PIC X(20).
PROCEDURE DIVISION.
MOVE 12345 TO CUST-ID.
MOVE "Nguyen Van A" TO CUST-NAME.
DISPLAY "ID: " CUST-ID.
DISPLAY "Name: " CUST-NAME.
STOP RUN.
Giải thích:
- Khai báo biến nhóm CUSTOMER gồm ID và NAME
- Gán giá trị cho từng biến
- Hiển thị thông tin ra màn hình
Kết luận
COBOL không chỉ là “ngôn ngữ cũ” mà còn là nền tảng vận hành hàng tỷ giao dịch tài chính mỗi ngày. Việc hiểu và làm chủ COBOL giúp developer mở rộng cơ hội nghề nghiệp trong các lĩnh vực ngân hàng, bảo hiểm, chính phủ, và các hệ thống enterprise lớn. Nếu bạn muốn trở thành chuyên gia về hệ thống legacy, COBOL là lựa chọn không thể bỏ qua.
