Chuyển đến nội dung chính
Mô-đun 2 · Bài học 2 trong tổng số 24/10 trong khóa học~12 min
Bài học theo mô-đun (2/2)

Quyết định với IF và ĐÁNH GIÁ

Việc ra quyết định trong COBOL được thực hiện chủ yếu bằng cách sử dụng câu lệnh điều kiện IF và cấu trúc lựa chọn nhiều nhánh EVALUATE (tương tự switch hoặc match trong các ngôn ngữ hiện đại).

Câu lệnh điều kiện IF

Cú pháp cơ bản của câu lệnh IF là:

COBOL
IF condition
    statements-if-true
ELSE
    statements-if-false
END-IF.

Trong các phiên bản COBOL hiện đại (COBOL-85 trở lên), câu lệnh phải kết thúc rõ ràng bằng END-IF. thay vì chỉ dựa vào dấu chấm cuối cùng ., giúp giảm đáng kể các lỗi logic và phân tích cú pháp.

Điều kiện chung

  • Lớn hơn: > hoặc GREATER THAN
  • Nhỏ hơn: < hoặc LESS THAN
  • Bằng: = hoặc EQUAL TO
  • Lớn hơn hoặc bằng: >= hoặc GREATER THAN OR EQUAL TO
  • Nhỏ hơn hoặc bằng: <= hoặc LESS THAN OR EQUAL TO
COBOL
IF WS-BALANCE < 0
    DISPLAY "OVERDRAWN"
ELSE
    DISPLAY "ACCOUNT ACTIVE"
END-IF.

Tuyên bố ĐÁNH GIÁ

Khi chúng ta cần so sánh một biến với nhiều giá trị riêng biệt, các câu lệnh IF lồng nhau có thể trở nên phức tạp. Câu lệnh EVALUATE giải quyết vấn đề này bằng cách cấu trúc các lựa chọn một cách rõ ràng:

COBOL
EVALUATE WS-USER-ROLE
    WHEN "ADMIN"
        DISPLAY "FULL ACCESS"
    WHEN "EDITOR"
        DISPLAY "EDIT ACCESS"
    WHEN OTHER
        DISPLAY "LIMITED ACCESS"
END-EVALUATE.
  • WHEN OTHER: Xác định nhánh dự phòng (tương đương với default hoặc else cuối cùng trong các ngôn ngữ hiện đại).
  • END-EVALUATE.: Đóng cấu trúc.

Hãy tự mình thử

tập thể dục#cobol.m2.l2.e1
Nỗ lực: 0Đang tải…

Viết khối IF-ELSE-END-IF để kiểm tra xem biến WS-USER-AGE có lớn hơn hoặc bằng 18 hay không. Nếu đúng, hãy in 'ADULT', nếu không thì in 'MINOR' bằng DISPLAY.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Sử dụng >= để so sánh, DISPLAY cho đầu ra và END-IF. (có dấu chấm ở cuối khối).

Giải pháp khả dụng sau 3 lần thử

tập thể dục#cobol.m2.l2.e2
Nỗ lực: 0Đang tải…

Hoàn thành cấu trúc ĐÁNH GIÁ để kiểm tra biến WS-STATUS. Nếu giá trị là 'A' in 'HOẠT ĐỘNG', nếu đó là 'I' in 'KHÔNG HOẠT ĐỘNG', nếu không thì đối với bất kỳ giá trị nào khác in 'UNKNOWN'.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Viết từng nhánh WHEN theo sau là HIỂN THỊ của nó và sử dụng KHI KHÁC để xử lý dự phòng.

Giải pháp khả dụng sau 3 lần thử