Site logo

FILE-CONTROL và FILE SECTION trong COBOL – Đọc file text tuần tự như batch program thực tế

5:00 read

Vì sao phải hiểu FILE-CONTROL và FILE SECTION trong COBOL?

Trong các bài trước, bạn đã quen với:

  • Bài 002: DATA DIVISION, level number, PIC
  • Bài 004: Toán tử & biểu thức
  • Bài 005: IF, EVALUATE
  • Bài 006: Vòng lặp & PERFORM

Nhưng một batch program thực tế (như RZZBSQLN1.PCO) luôn có thêm một mảnh ghép quan trọng:

Đọc/ghi file – thường là file text tuần tự, dùng để nhận input hoặc ghi log/output.

Trong COBOL, phần này được mô tả bởi hai khu vực chính:

  • ENVIRONMENT DIVISION → INPUT-OUTPUT SECTION → FILE-CONTROL – định nghĩa file logic, liên kết với file vật lý, tổ chức file, FILE STATUS
  • DATA DIVISION → FILE SECTION – mô tả cấu trúc record (layout từng dòng trong file)

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

  • Đọc được các đoạn như: SELECT INP1FILE ASSIGN TO "INP1-MSD" ... FILE STATUS IS F_STS.
  • Hiểu vai trò của FD, 01 INP1_REC, READ ... AT END ... NOT AT END ...
  • Mapping sang mental model Java/Python (FileReader, BufferedReader)
  • Viết được một skeleton batch để đọc file tuần tự từ đầu đến cuối

Tổng quan: ENVIRONMENT DIVISION, FILE-CONTROL và FILE SECTION

Trong một chương trình COBOL xử lý file, bạn thường thấy cấu trúc như:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. SAMPLE-FILE.

       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT INFILE ASSIGN TO "input.txt"
               ORGANIZATION IS LINE SEQUENTIAL
               FILE STATUS IS WS-FILE-STS.

       DATA DIVISION.
       FILE SECTION.
       FD  INFILE.
       01  IN-REC.
           05 IN-FIELD1  PIC X(10).
           05 IN-FIELD2  PIC 9(5).

       WORKING-STORAGE SECTION.
       01  WS-FILE-STS  PIC X(2) VALUE "00".
       01  WS-END-FLAG  PIC 9    VALUE 0.

       PROCEDURE DIVISION.
           OPEN INPUT INFILE
           PERFORM UNTIL WS-END-FLAG = 1
               READ INFILE
                   AT END
                       MOVE 1 TO WS-END-FLAG
                   NOT AT END
                       DISPLAY IN-FIELD1 IN-FIELD2
               END-READ
           END-PERFORM
           CLOSE INFILE
           STOP RUN.

Tách component:

  • FILE-CONTROL:
    • Khai báo tên file logic (INFILE)
    • Liên kết với file vật lý (ASSIGN TO "input.txt")
    • Định nghĩa cách tổ chức file (ORGANIZATION IS LINE SEQUENTIAL)
    • Chỉ định biến chứa status (FILE STATUS IS WS-FILE-STS)
  • FILE SECTION:
    • FD INFILE. – mô tả file
    • 01 IN-REC. – mô tả một record (mỗi dòng trong file)
  • PROCEDURE DIVISION:
    • OPEN INPUT INFILE
    • READ INFILE AT END ... NOT AT END ...
    • CLOSE INFILE

Trong RZZBSQLN1.PCO, pattern này xuất hiện với:

SELECT INP1FILE ASSIGN TO "INP1-MSD"
    ORGANIZATION IS LINE SEQUENTIAL
    FILE STATUS IS F_STS.

FD  INP1FILE
    LABEL RECORDS ARE STANDARD.
01  INP1_REC.
    02  INP1_SQL    PIC X(80).

Đây là file chứa các câu lệnh SQL text, mỗi dòng một SQL.


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.