COBOL - Động từ xử lý tệp
Các động từ xử lý tệp được sử dụng để thực hiện các hoạt động khác nhau trên tệp. Sau đây là các động từ xử lý tệp:
- Open
- Read
- Write
- Rewrite
- Delete
- Start
- Close
Mở động từ
Mở là thao tác tệp đầu tiên phải được thực hiện. Nếu Mở thành công, thì chỉ có thể thực hiện thêm các thao tác trên tệp. Chỉ sau khi mở tệp, các biến trong cấu trúc tệp mới có sẵn để xử lý.FILE STATUS biến được cập nhật sau mỗi hoạt động tệp.
Cú pháp
OPEN "mode" file-name.
Ở đây, tên tệp là chuỗi ký tự, bạn sẽ sử dụng để đặt tên tệp của mình. Một tệp có thể được mở ở các chế độ sau:
Sr.No. | Chế độ & Mô tả |
---|---|
1 |
Input Chế độ đầu vào được sử dụng cho các tệp hiện có. Ở chế độ này, chúng ta chỉ có thể đọc tệp, không cho phép thực hiện các thao tác khác trên tệp. |
2 |
Output Chế độ đầu ra được sử dụng để chèn các bản ghi trong tệp. Nếu mộtsequential fileđược sử dụng và tệp đang giữ một số bản ghi, sau đó các bản ghi hiện có sẽ bị xóa trước tiên và sau đó các bản ghi mới sẽ được chèn vào tệp. Nó sẽ không xảy ra như vậy trong trường hợpindexed file hoặc một relative file. |
3 |
Extend Chế độ mở rộng được sử dụng để nối các bản ghi trong một sequential file. Trong chế độ này, các bản ghi được chèn vào cuối. Nếu chế độ truy cập tệp làRandom hoặc là Dynamic, thì không thể sử dụng chế độ mở rộng. |
4 |
I-O Chế độ Input-Output được sử dụng để đọc và viết lại các bản ghi của một tệp. |
Đọc động từ
Động từ đọc được sử dụng để đọc các bản ghi tệp. Chức năng của đọc là tìm nạp các bản ghi từ một tệp. Tại mỗi động từ đọc, chỉ một bản ghi có thể được đọc vào cấu trúc tệp. Để thực hiện thao tác đọc, hãy mở tệp ở chế độ INPUT hoặc IO. Tại mỗi câu lệnh đọc, con trỏ tệp được tăng lên và do đó các bản ghi kế tiếp được đọc.
Cú pháp
Sau đây là cú pháp để đọc các bản ghi khi chế độ truy cập tệp là tuần tự:
READ file-name NEXT RECORD INTO ws-file-structure
AT END DISPLAY 'End of File'
NOT AT END DISPLAY 'Record Details:' ws-file-structure
END-READ.
Sau đây là các tham số được sử dụng:
NEXT RECORD là tùy chọn và được chỉ định khi một tệp tuần tự được lập chỉ mục đang được đọc tuần tự.
Mệnh đề INTO là tùy chọn. ws-file-structure được định nghĩa trong Phần WorkingStorage để lấy các giá trị từ câu lệnh READ.
Điều kiện AT END trở thành True khi đạt đến cuối tệp.
Example- Ví dụ sau đây đọc một tệp hiện có bằng cách sử dụng tổ chức tuần tự dòng. Chương trình này có thể được biên dịch và thực thi bằngLive Demo tùy chọn nơi nó sẽ hiển thị tất cả các bản ghi có trong tệp.
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STUDENT ASSIGN TO 'input.txt'
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD STUDENT.
01 STUDENT-FILE.
05 STUDENT-ID PIC 9(5).
05 NAME PIC A(25).
WORKING-STORAGE SECTION.
01 WS-STUDENT.
05 WS-STUDENT-ID PIC 9(5).
05 WS-NAME PIC A(25).
01 WS-EOF PIC A(1).
PROCEDURE DIVISION.
OPEN INPUT STUDENT.
PERFORM UNTIL WS-EOF='Y'
READ STUDENT INTO WS-STUDENT
AT END MOVE 'Y' TO WS-EOF
NOT AT END DISPLAY WS-STUDENT
END-READ
END-PERFORM.
CLOSE STUDENT.
STOP RUN.
Giả sử dữ liệu tệp đầu vào có sẵn trong input.txt tệp chứa những điều sau -
20003 Mohtashim M.
20004 Nishant Malik
20005 Amitabh Bachhan
Khi bạn biên dịch và thực thi chương trình trên, nó tạo ra kết quả sau:
20003 Mohtashim M.
20004 Nishant Malik
20005 Amitabh Bachhan
Cú pháp
Sau đây là cú pháp để ghi một bản ghi khi chế độ truy cập tệp là ngẫu nhiên:
READ file-name RECORD INTO ws-file-structure
KEY IS rec-key
INVALID KEY DISPLAY 'Invalid Key'
NOT INVALID KEY DISPLAY 'Record Details: ' ws-file-structure
END-READ.
Example- Ví dụ sau đây đọc một tệp hiện có bằng cách sử dụng tổ chức được lập chỉ mục. Chương trình này có thể được biên dịch và thực thi bằngJCLtrên Mainframes nơi nó sẽ hiển thị tất cả các bản ghi có trong tệp. Trên máy chủ Mainframes, chúng tôi không sử dụng tệp văn bản; thay vào đó chúng tôi sử dụng các tệp PS.
Giả sử rằng tệp hiện diện trên Máy tính lớn có cùng nội dung với tệp input.txt trong ví dụ trên.
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STUDENT ASSIGN TO IN1
ORGANIZATION IS INDEXED
ACCESS IS RANDOM
RECORD KEY IS STUDENT-ID
FILE STATUS IS FS.
DATA DIVISION.
FILE SECTION.
FD STUDENT.
01 STUDENT-FILE.
05 STUDENT-ID PIC 9(5).
05 NAME PIC A(25).
WORKING-STORAGE SECTION.
01 WS-STUDENT.
05 WS-STUDENT-ID PIC 9(5).
05 WS-NAME PIC A(25).
PROCEDURE DIVISION.
OPEN INPUT STUDENT.
MOVE 20005 TO STUDENT-ID.
READ STUDENT RECORD INTO WS-STUDENT-FILE
KEY IS STUDENT-ID
INVALID KEY DISPLAY 'Invalid Key'
NOT INVALID KEY DISPLAY WS-STUDENT-FILE
END-READ.
CLOSE STUDENT.
STOP RUN.
JCL để thực hiện chương trình COBOL ở trên -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
//IN1 DD DSN = STUDENT-FILE-NAME,DISP=SHR
Khi bạn biên dịch và thực thi chương trình trên, nó tạo ra kết quả sau:
20005 Amitabh Bachhan
Viết động từ
Động từ Write được sử dụng để chèn các bản ghi trong một tệp. Khi bản ghi được ghi, nó không còn có sẵn trong bộ đệm bản ghi. Trước khi chèn các bản ghi vào tệp, hãy di chuyển các giá trị vào bộ đệm bản ghi và sau đó thực hiện động từ ghi.
Viết câu lệnh có thể được sử dụng với FROMtùy chọn ghi trực tiếp bản ghi từ các biến lưu trữ đang hoạt động. Từ là một mệnh đề tùy chọn. Nếu chế độ truy cập là tuần tự, thì để ghi bản ghi, tệp phải mở ở chế độ Đầu ra hoặc chế độ Mở rộng. Nếu chế độ truy cập là ngẫu nhiên hoặc động, thì để ghi bản ghi, tệp phải mở ở chế độ Đầu ra hoặc chế độ IO.
Cú pháp
Sau đây là cú pháp để đọc một bản ghi khi tổ chức tệp là tuần tự:
WRITE record-buffer [FROM ws-file-structure]
END-WRITE.
Sau đây là cú pháp để đọc bản ghi khi tổ chức tệp được lập chỉ mục hoặc tương đối:
WRITE record-buffer [FROM ws-file-structure]
INVALID KEY DISPLAY 'Invalid Key'
NOT INVALID KEY DISPLAY 'Record Inserted'
END-WRITE.
Example - Ví dụ sau cho thấy cách chèn một bản ghi mới trong một tệp mới khi tổ chức tuần tự.
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STUDENT ASSIGN TO OUT1
ORGANIZATION IS SEQUENTIAL
ACCESS IS SEQUENTIAL
FILE STATUS IS FS.
DATA DIVISION.
FILE SECTION.
FD STUDENT
01 STUDENT-FILE.
05 STUDENT-ID PIC 9(5).
05 NAME PIC A(25).
05 CLASS PIC X(3).
WORKING-STORAGE SECTION.
01 WS-STUDENT.
05 WS-STUDENT-ID PIC 9(5).
05 WS-NAME PIC A(25).
05 WS-CLASS PIC X(3).
PROCEDURE DIVISION.
OPEN EXTEND STUDENT.
MOVE 1000 TO STUDENT-ID.
MOVE 'Tim' TO NAME.
MOVE '10' TO CLASS.
WRITE STUDENT-FILE
END-WRITE.
CLOSE STUDENT.
STOP RUN.
JCL để thực hiện chương trình COBOL ở trên -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
//OUT1 DD DSN = OUTPUT-FILE-NAME,DISP = (NEW,CATALOG,DELETE)
Khi bạn biên dịch và thực thi chương trình trên, nó sẽ thêm một bản ghi mới vào tệp đầu ra.
1000 Tim 10
Viết lại động từ
Động từ ghi lại được sử dụng để cập nhật các bản ghi. Tệp phải được mở ở chế độ IO cho các hoạt động viết lại. Nó chỉ có thể được sử dụng sau khi thao tác Đọc thành công. Động từ ghi lại ghi đè lên lần đọc bản ghi cuối cùng.
Cú pháp
Sau đây là cú pháp để đọc một bản ghi khi tổ chức tệp là tuần tự:
REWRITE record-buffer [FROM ws-file-structure]
END-REWRITE.
Sau đây là cú pháp để đọc bản ghi khi tổ chức tệp được lập chỉ mục hoặc tương đối:
REWRITE record-buffer [FROM ws-file-structure]
INVALID KEY DISPLAY 'Invalid Key'
NOT INVALID KEY DISPLAY 'Record Updated'
END-REWRITE.
Example - Ví dụ sau cho thấy cách cập nhật bản ghi hiện có mà chúng tôi đã chèn trong bước Ghi trước đó -
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STUDENT ASSIGN TO IN1
ORGANIZATION IS INDEXED
ACCESS IS RANDOM
RECORD KEY IS STUDENT-ID
FILE STATUS IS FS.
DATA DIVISION.
FILE SECTION.
FD STUDENT
01 STUDENT-FILE.
05 STUDENT-ID PIC 9(4).
05 NAME PIC A(12).
05 CLASS PIC X(3).
WORKING-STORAGE SECTION.
01 WS-STUDENT.
05 WS-STUDENT-ID PIC 9(5).
05 WS-NAME PIC A(25).
05 WS-CLASS PIC X(3).
PROCEDURE DIVISION.
OPEN I-O STUDENT.
MOVE '1000' TO STUDENT-ID.
READ STUDENT
KEY IS STUDENT-ID
INVALID KEY DISPLAY ‘KEY IS NOT EXISTING’
END-READ.
MOVE 'Tim Dumais' TO NAME.
REWRITE STUDENT-FILE
END-REWRITE.
CLOSE STUDENT.
STOP RUN.
JCL để thực hiện chương trình COBOL ở trên -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
//IN1 DD DSN = OUTPUT-FILE-NAME,DISP = SHR
Khi bạn biên dịch và thực thi chương trình trên, nó sẽ cập nhật bản ghi -
1000 Tim Dumais 10
Xóa động từ
Xóa động từ chỉ có thể được thực hiện trên các tệp được lập chỉ mục và tương đối. Tệp phải được mở ở chế độ IO. Trong tổ chức tệp tuần tự, các bản ghi không thể bị xóa. Bản ghi được đọc lần cuối bởi câu lệnh Read sẽ bị xóa trong trường hợp chế độ truy cập tuần tự. Trong chế độ truy cập ngẫu nhiên, chỉ định khóa ghi và sau đó thực hiện thao tác Xóa.
Cú pháp
Sau đây là cú pháp để xóa một bản ghi:
DELETE file-name RECORD
INVALID KEY DISPLAY 'Invalid Key'
NOT INVALID KEY DISPLAY 'Record Deleted'
END-DELETE.
Example - để xóa một bản ghi hiện có -
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STUDENT ASSIGN TO OUT1
ORGANIZATION IS INDEXED
ACCESS IS RANDOM
RECORD KEY IS STUDENT-ID
FILE STATUS IS FS.
DATA DIVISION.
FILE SECTION.
FD STUDENT
01 STUDENT-FILE.
05 STUDENT-ID PIC 9(4).
05 NAME PIC A(12).
05 CLASS PIC X(3).
WORKING-STORAGE SECTION.
01 WS-STUDENT.
05 WS-STUDENT-ID PIC 9(5).
05 WS-NAME PIC A(25).
05 WS-CLASS PIC X(3).
PROCEDURE DIVISION.
OPEN I-O STUDENT.
MOVE '1000' TO STUDENT-ID.
DELETE STUDENT RECORD
INVALID KEY DISPLAY 'Invalid Key'
NOT INVALID KEY DISPLAY 'Record Deleted'
END-DELETE.
CLOSE STUDENT.
STOP RUN.
JCL để thực hiện chương trình COBOL ở trên -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
//OUT1 DD DSN = OUTPUT-FILE-NAME,DISP = SHR
Khi bạn biên dịch và thực thi chương trình trên, nó tạo ra kết quả sau:
Record Deleted
Bắt đầu động từ
Động từ bắt đầu chỉ có thể được thực hiện trên các tệp được lập chỉ mục và tệp tương đối. Nó được sử dụng để đặt con trỏ tệp tại một bản ghi cụ thể. Chế độ truy cập phải tuần tự hoặc động. Tệp phải được mở ở chế độ IO hoặc Input.
Cú pháp
Sau đây là cú pháp để đặt con trỏ tại một bản ghi cụ thể:
START file-name KEY IS [=, >, <, NOT, <= or >=] rec-key
INVALID KEY DISPLAY 'Invalid Key'
NOT INVALID KEY DISPLAY 'File Pointer Updated'
END-START.
Đóng động từ
Động từ đóng được sử dụng để đóng một tệp. Sau khi thực hiện thao tác Đóng, các biến trong cấu trúc tệp sẽ không có sẵn để xử lý. Liên kết giữa chương trình và tệp bị mất.
Cú pháp
Sau đây là cú pháp để đóng một tệp:
CLOSE file-name.