- 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
COBOL chia thành 4 division chính:
IDENTIFICATION DIVISION.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
1️⃣ IDENTIFICATION DIVISION
Khai báo tên chương trình:
PROGRAM-ID. SAMPLE.
2️⃣ ENVIRONMENT DIVISION
Định nghĩa môi trường chạy chương trình, hệ thống máy tính và các thiết bị I/O (file, printer, terminal,...).
Ví dụ đơn giản:
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.
Phần này giúp chương trình COBOL biết đang chạy trên môi trường nào và làm việc với những file/thiết bị nào.
3️⃣ DATA DIVISION
Khai báo biến:
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
Viết logic:
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.
