Cấu trúc điều kiện trong COBOL – IF, EVALUATE và best practice cho backend dev
5:00 read
Vì sao phải hiểu rõ điều kiện trong COBOL?
Trong mọi ngôn ngữ lập trình, rẽ nhánh điều kiện (conditional) là trung tâm của business logic. Với COBOL – đặc biệt trong hệ thống banking/enterprise – điều kiện lại càng quan trọng hơn vì:
- Business rule thường dài, nhiều nhánh, dễ sai nếu code IF lồng nhau quá phức tạp
- Cần đọc/maintain chương trình cũ hàng chục ngàn dòng, sử dụng cả
IFvàEVALUATE - Error handling, logging, mapping status → message đều dùng condition
Ở bài 004, bạn đã nắm toán tử và biểu thức, bài này tập trung vào:
- Cú pháp và cách dùng
IF ... ELSE ... END-IF.trong COBOL EVALUATE– tương đươngswitch-casetrong ngôn ngữ hiện đại- Kết hợp điều kiện với
AND,OR,NOT - Best practice để code điều kiện đọc được, tránh "IF hell"
- Liên hệ trực tiếp với code enterprise trong
[course/cobol/sections/code-example/RZZBSQLN1.PCO](course/cobol/sections/code-example/RZZBSQLN1.PCO)
IF, ELSE, END-IF trong COBOL
Cú pháp cơ bản
IF condition
statement-1
END-IF.
Với ELSE:
IF condition
statement-1
ELSE
statement-2
END-IF.
So với Java/Python:
IF~ifELSE~elseEND-IF.~ dấu{}đóng block
Ví dụ đơn giản: kiểm tra tuổi
01 WS-AGE PIC 99.
PROCEDURE DIVISION.
MOVE 20 TO WS-AGE.
IF WS-AGE >= 18
DISPLAY "Adult"
ELSE
DISPLAY "Minor"
END-IF.
STOP RUN.
Ví dụ trong enterprise: check file status
Trong RZZBSQLN1.PCO có đoạn:
INP1-OPEN-RTN.
MOVE "INP1-OPEN-RTN" TO DSP_PROC.
OPEN INPUT INP1FILE.
IF F_STS NOT = "00"
MOVE "FILE :" TO DSP_MSG
MOVE INP1_FILE TO DSP_MSGNAIYO
MOVE "No.004" TO DSP_MSGCD
...
PERFORM IO-ERROR THRU IO-ERROR-EXT
GO TO STOP-PGM
END-IF.
INP1-OPEN-EXT.
EXIT.
Giải nghĩa theo mindset backend dev:
open INP1FILE
if (fSts != "00") {
// fill error message
ioError()
goto stopPgm
}
Pattern này lặp lại trong nhiều routine:
- Check file open/close/read
- Nếu error → set message →
PERFORM IO-ERROR→GO TO STOP-PGM
Yêu cầu đăng nhập
Vui lòng đăng nhập để truy cập nội dung này
Additional Resources
Course Guide
Comprehensive PDF guide with examples
GitHub Repository
Example code for all lessons
Discussion
Have a question about this lesson? Post it here and get answers from instructors and peers.
