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à:
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ặcGREATER THAN - Nhỏ hơn:
<hoặcLESS THAN - Bằng:
=hoặcEQUAL TO - Lớn hơn hoặc bằng:
>=hoặcGREATER THAN OR EQUAL TO - Nhỏ hơn hoặc bằng:
<=hoặcLESS THAN OR EQUAL TO
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:
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ớidefaulthoặcelsecuố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ử
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.
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ử
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'.
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ử