Site logo

Hiểu về Paragraph trong COBOL: Cấu trúc, PERFORM và EXIT

5:00 read

Paragraph trong COBOL là gì?

Trong COBOL, paragraph là đơn vị cơ bản của executable logic trong PROCEDURE DIVISION. Nó rất giống function hoặc subroutine trong các ngôn ngữ hiện đại:

  • tên (label) để gọi bằng câu lệnh PERFORM.
  • Chứa các câu lệnh thực thi tuần tự.
  • Khi paragraph kết thúc, control bình thường quay lại nơi gọi.
  • Nhiều team dùng paragraph -EXIT như một return point theo convention.

Ví dụ pattern thường gặp:

SQL-COMMIT-PROC.
    EXEC SQL COMMIT WORK RELEASE END-EXEC.
SQL-COMMIT-EXIT.
    EXIT.

Paragraph khác gọi nó bằng PERFORM:

PERFORM SQL-COMMIT-PROC.

Và dạng THRU sẽ chạy tất cả paragraph từ tên đầu tới label exit:

PERFORM LOGON-PROC THRU LOGON-EXIT.

Về ý nghĩa:

  • SQL-COMMIT-PROC. giống thân của một function.
  • SQL-COMMIT-EXIT.exit point được đặt tên rõ ràng.
  • PERFORM SQL-COMMIT-PROC giống như gọi function.

Cấu trúc chương trình COBOL và vị trí của Paragraph

Một chương trình COBOL cơ bản có các division:

  • IDENTIFICATION DIVISION
  • ENVIRONMENT DIVISION
  • DATA DIVISION
  • PROCEDURE DIVISION

Trong PROCEDURE DIVISION thường có:

  • Section (tuỳ chọn, hay dùng trong chương trình lớn).
  • Paragraph bên trong section, hoặc trực tiếp trong PROCEDURE DIVISION.

Ví dụ rút gọn:

IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE.

PROCEDURE DIVISION.
MAIN-LOGIC SECTION.
MAIN-START.
    PERFORM INITIALIZE-PROC
    PERFORM PROCESS-ORDERS
    PERFORM FINALIZE-PROC
    GOBACK.

INITIALIZE-PROC.
    ... initialization statements ...
INITIALIZE-EXIT.
    EXIT.

PROCESS-ORDERS.
    ... processing statements ...
PROCESS-ORDERS-EXIT.
    EXIT.

FINALIZE-PROC.
    ... cleanup statements ...
FINALIZE-EXIT.
    EXIT.

Điểm chính:

  • Section gom nhóm các paragraph liên quan.
  • Paragraph là đơn vị logic được PERFORM.
  • Paragraph -EXIT là convention cho paragraph cuối của một routine.

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.