Toán tử và biểu thức trong COBOL – Hướng dẫn chi tiết cho backend developer
Toán tử và biểu thức trong COBOL là gì?
Sau khi đã nắm biến và kiểu dữ liệu ở bài 002, bước tiếp theo để có thể viết được logic thực sự là hiểu toán tử (operator) và biểu thức (expression) trong COBOL.
Khác với nhiều ngôn ngữ hiện đại (Java, C#, Python) dùng ký hiệu +, -, *, / trực tiếp trong expression, COBOL ưu tiên dùng câu lệnh dạng "động từ":
MOVE– gán giá trịADD,SUBTRACT,MULTIPLY,DIVIDE– các phép toán số học cơ bảnCOMPUTE– phép tính expression linh hoạt hơn (gần với C/Java style)
Ngoài ra còn có:
- Toán tử so sánh trong
IF,EVALUATE:=,>,<,>=,<=,NOT = - Các toán tử logic:
AND,OR,NOT - Hằng số đặc biệt (figurative constants):
ZERO,ZEROES,SPACE,SPACES,HIGH-VALUE,LOW-VALUE,ALL "*", ...
Bài này tập trung vào:
- Cách viết và đọc các câu lệnh toán học/logic trong COBOL
- So sánh với cách viết trong ngôn ngữ hiện đại để developer backend dễ mapping
- Liên hệ với code thực tế như
RZZBSQLN1.PCO(batch chương trình enterprise)
MOVE – Gán giá trị trong COBOL
Cú pháp cơ bản
MOVE source TO target.
Trong đó:
sourcecó thể là literal, biến, field trong grouptargetlà biến/field sẽ nhận giá trị
Ví dụ:
01 WS-NAME PIC X(20).
01 WS-MESSAGE PIC X(50).
01 WS-COUNT PIC 9(4).
PROCEDURE DIVISION.
MOVE "Nguyen Van A" TO WS-NAME.
MOVE 0 TO WS-COUNT.
MOVE "Hello COBOL" TO WS-MESSAGE.
STOP RUN.
Trong RZZBSQLN1.PCO, bạn sẽ thấy rất nhiều lệnh dạng:
MOVE "INP1-OPEN-RTN" TO DSP_PROC.
MOVE ZERO TO COMPLETION-CODE.
MOVE SPACE TO BCMO-2.
MOVE PROGRAM_ID TO DSP_PROGID.
Mapping mindset backend dev:
MOVE "abc" TO WS-NAME.~WS_NAME = "abc";MOVE ZERO TO WS-COUNT.~wsCount = 0;
Gán group item
Với group item, MOVE sẽ sao chép cả block dữ liệu:
01 CUSTOMER-SRC.
05 CUST-ID PIC 9(5).
05 CUST-NAME PIC X(30).
01 CUSTOMER-DST.
05 CUST-ID PIC 9(5).
05 CUST-NAME PIC X(30).
PROCEDURE DIVISION.
MOVE 12345 TO CUST-ID OF CUSTOMER-SRC.
MOVE "Nguyen Van A" TO CUST-NAME OF CUSTOMER-SRC.
MOVE CUSTOMER-SRC TO CUSTOMER-DST.
STOP RUN.
Cẩn thận: cấu trúc source và target nên có cùng layout để tránh behaviour khó đoán.
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.
