Site logo
Tác giả
  • avatar Nguyễn Đức Xinh
    Name
    Nguyễn Đức Xinh
    Twitter
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.