Site logo

Vòng lặp và PERFORM trong COBOL – Hiểu rõ loop pattern trong batch program

5:00 read

Tại sao phải hiểu PERFORM và vòng lặp trong COBOL?

Ở các bài trước bạn đã có:

  • Bài 002: hiểu DATA DIVISION, PIC, level number, group item
  • Bài 004: nắm toán tử & biểu thức (MOVE, ADD, COMPUTE, ...)
  • Bài 005: làm chủ cấu trúc điều kiện (IF, EVALUATE)

Để đọc được một batch program thực tế như RZZBSQLN1.PCO, bạn còn thiếu một mảnh ghép rất quan trọng:

Vòng lặp và cách COBOL điều khiển flow bằng PERFORM.

Trong Java/C#/Python, bạn quen với for, while, do-while. Trong COBOL, hầu hết control flow đều xoay quanh:

  • PERFORM paragraph – gọi một đoạn code như gọi hàm
  • PERFORM paragraph THRU paragraph-EXIT – gọi một block nhiều paragraph liên tiếp
  • PERFORM ... UNTIL ... – vòng lặp kiểu do { ... } while (...)
  • PERFORM VARYING ... FROM ... BY ... UNTIL ... – gần giống for tăng biến đếm

Bài này sẽ giúp bạn:

  • Đọc hiểu main loop của một batch COBOL
  • Hiểu được kiểu code như: PERFORM MAIN-RTN UNTIL INP1_END = 1.
  • Mapping PERFORM VARYING sang for trong Java/Python
  • Áp dụng thực tế với ví dụ và bài tập

PERFORM paragraph – Gọi một đoạn code như hàm

Cú pháp cơ bản

PERFORM paragraph-name.

Trong đó paragraph-name là một nhãn trong PROCEDURE DIVISION:

       PROCEDURE DIVISION.
       MAIN-RTN.
           PERFORM INIT-RTN
           PERFORM PROCESS-RTN
           PERFORM FINISH-RTN
           STOP RUN.

       INIT-RTN.
           DISPLAY "INIT".
           EXIT.

       PROCESS-RTN.
           DISPLAY "PROCESS".
           EXIT.

       FINISH-RTN.
           DISPLAY "FINISH".
           EXIT.

Mapping sang Java:

void main() {
    initRtn();
    processRtn();
    finishRtn();
}

Trong các chương trình enterprise như RZZBSQLN1, cấu trúc rất giống:

  • MAIN-RTN đóng vai trò main logic
  • Các *-RTN khác là subroutine được PERFORM

Quy tắc quan trọng

  • PERFORM paragraph. chạy từ đầu paragraph cho tới
    • Gặp EXIT. của paragraph đó, hoặc
    • Gặp STOP RUN., hoặc
    • Rơi vào paragraph khác mà không có EXIT rõ ràng (pattern legacy, khó đọc – sẽ nói thêm ở bài kiến trúc).

Best practice hiện đại: mỗi paragraph nên kết thúc bằng EXIT. hoặc GOBACK. để flow dễ follow.


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.