Работа с последовательными файлами в COBOL: методы и примеры

“FILE SEQ COBOL” — это фраза, обычно используемая в программировании на COBOL, которая означает “File Sequential COBOL”. COBOL — это язык программирования, который в прошлом широко использовался для бизнес-приложений, особенно для обработки больших объемов данных, хранящихся в последовательных файлах. В этой статье блога мы рассмотрим различные методы и приемы, используемые в COBOL для обработки последовательных файлов.

  1. Чтение последовательного файла.
    Следующий фрагмент кода демонстрирует, как читать последовательный файл в 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.
  1. Запись в последовательный файл.
    Чтобы записать данные в последовательный файл на языке 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.
  1. Обновление последовательного файла.
    Обновление последовательного файла в 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.
  1. Удаление записей из последовательного файла.
    Чтобы удалить записи из последовательного файла, вы можете использовать следующий фрагмент кода:
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 остается важным языком в устаревших системах, и понимание того, как работать с последовательными файлами, имеет решающее значение для обслуживания и модернизации таких систем.