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)
- Khai báo tên file logic (
FILE SECTION:FD INFILE.– mô tả file01 IN-REC.– mô tả một record (mỗi dòng trong file)
PROCEDURE DIVISION:OPEN INPUT INFILEREAD 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.
