Site logo

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ả IFEVALUATE
  • 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 đương switch-case trong 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 ~ if
  • ELSE ~ else
  • END-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-ERRORGO 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.