Site logo

Toán tử và biểu thức trong COBOL – Hướng dẫn chi tiết cho backend developer

5:00 read

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ản
  • COMPUTE – 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 đó:

  • source có thể là literal, biến, field trong group
  • target là 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.