“FILE SEQ COBOL” — это фраза, обычно используемая в программировании на COBOL, которая означает “File Sequential COBOL”. COBOL — это язык программирования, который в прошлом широко использовался для бизнес-приложений, особенно для обработки больших объемов данных, хранящихся в последовательных файлах. В этой статье блога мы рассмотрим различные методы и приемы, используемые в COBOL для обработки последовательных файлов.
- Чтение последовательного файла.
Следующий фрагмент кода демонстрирует, как читать последовательный файл в COBOL:
IDENTIFICATION DIVISION.
PROGRAM-ID. READ-SEQ-FILE.
DATA DIVISION.
FILE SECTION.
FD MY-FILE.
01 MY-RECORD.
05 FIELD1 PIC X(10).
05 FIELD2 PIC 9(5).
WORKING-STORAGE SECTION.
01 WS-EOF PIC X VALUE 'N'.
PROCEDURE DIVISION.
MAIN-PARA.
OPEN INPUT MY-FILE.
PERFORM UNTIL WS-EOF = 'Y'
READ MY-FILE INTO MY-RECORD
AT END MOVE 'Y' TO WS-EOF
NOT AT END PERFORM PROCESS-DATA
END-PERFORM.
CLOSE MY-FILE.
STOP RUN.
PROCESS-DATA.
DISPLAY 'Field1: ' FIELD1
DISPLAY 'Field2: ' FIELD2.
- Запись в последовательный файл.
Чтобы записать данные в последовательный файл на языке COBOL, вы можете использовать следующий пример кода:
IDENTIFICATION DIVISION.
PROGRAM-ID. WRITE-SEQ-FILE.
DATA DIVISION.
FILE SECTION.
FD MY-FILE.
01 MY-RECORD.
05 FIELD1 PIC X(10).
05 FIELD2 PIC 9(5).
WORKING-STORAGE SECTION.
01 WS-EOF PIC X VALUE 'N'.
PROCEDURE DIVISION.
MAIN-PARA.
OPEN OUTPUT MY-FILE.
MOVE 'Data1' TO FIELD1.
MOVE 12345 TO FIELD2.
WRITE MY-RECORD.
MOVE 'Data2' TO FIELD1.
MOVE 67890 TO FIELD2.
WRITE MY-RECORD.
CLOSE MY-FILE.
STOP RUN.
- Обновление последовательного файла.
Обновление последовательного файла в COBOL включает в себя чтение файла, внесение изменений и последующую запись обновленной записи обратно в файл. Вот пример:
IDENTIFICATION DIVISION.
PROGRAM-ID. UPDATE-SEQ-FILE.
DATA DIVISION.
FILE SECTION.
FD MY-FILE.
01 MY-RECORD.
05 FIELD1 PIC X(10).
05 FIELD2 PIC 9(5).
WORKING-STORAGE SECTION.
01 WS-EOF PIC X VALUE 'N'.
PROCEDURE DIVISION.
MAIN-PARA.
OPEN I-O MY-FILE.
PERFORM UNTIL WS-EOF = 'Y'
READ MY-FILE INTO MY-RECORD
AT END MOVE 'Y' TO WS-EOF
NOT AT END PERFORM PROCESS-DATA
END-PERFORM.
CLOSE MY-FILE.
STOP RUN.
PROCESS-DATA.
IF FIELD1 = 'Data1'
MOVE 'NewData' TO FIELD1
REWRITE MY-RECORD
END-IF.
- Удаление записей из последовательного файла.
Чтобы удалить записи из последовательного файла, вы можете использовать следующий фрагмент кода:
IDENTIFICATION DIVISION.
PROGRAM-ID. DELETE-SEQ-FILE.
DATA DIVISION.
FILE SECTION.
FD MY-FILE.
01 MY-RECORD.
05 FIELD1 PIC X(10).
05 FIELD2 PIC 9(5).
WORKING-STORAGE SECTION.
01 WS-EOF PIC X VALUE 'N'.
PROCEDURE DIVISION.
MAIN-PARA.
OPEN I-O MY-FILE.
PERFORM UNTIL WS-EOF = 'Y'
READ MY-FILE INTO MY-RECORD
AT END MOVE 'Y' TO WS-EOF
NOT AT END PERFORM PROCESS-DATA
END-PERFORM.
CLOSE MY-FILE.
STOP RUN.
PROCESS-DATA.
IF FIELD1 = 'Data1'
DELETE MY-RECORD
END-IF.
Это всего лишь несколько примеров работы с последовательными файлами в COBOL. Доступно множество других операций и методов, таких как сортировка файлов, объединение файлов и обработка кодов состояния файлов. COBOL остается важным языком в устаревших системах, и понимание того, как работать с последовательными файлами, имеет решающее значение для обслуживания и модернизации таких систем.