Глаголы обработки файлов используются для выполнения различных операций над файлами. Ниже приведены глаголы обработки файлов:
- открыто
- Читать
- Написать
- перезапись
- удалять
- Начните
- близко
Открытый глагол
Открытие — это первая операция с файлом, которая должна быть выполнена. Если открытие успешно, то только дальнейшие операции возможны с файлом. Только после открытия файла переменные в файловой структуре доступны для обработки. Переменная FILE STATUS обновляется после каждой файловой операции.
Синтаксис
OPEN "mode" file-name.
Здесь file-name — строковый литерал, который вы будете использовать для именования вашего файла. Файл может быть открыт в следующих режимах —
Sr.No. | Режим и описание |
---|---|
1 |
вход Режим ввода используется для существующих файлов. В этом режиме мы можем только читать файл, другие операции над файлом запрещены. |
2 |
Выход Режим вывода используется для вставки записей в файлы. Если используется последовательный файл и в нем содержатся некоторые записи, то существующие записи будут сначала удалены, а затем новые записи будут вставлены в файл. Это не произойдет в случае индексированного файла или относительного файла . |
3 |
простираться Режим расширения используется для добавления записей в последовательный файл . В этом режиме записи вставляются в конце. Если режим доступа к файлу — Случайный или Динамический , то режим расширения не может быть использован. |
4 |
IO Режим ввода-вывода используется для чтения и перезаписи записей файла. |
вход
Режим ввода используется для существующих файлов. В этом режиме мы можем только читать файл, другие операции над файлом запрещены.
Выход
Режим вывода используется для вставки записей в файлы. Если используется последовательный файл и в нем содержатся некоторые записи, то существующие записи будут сначала удалены, а затем новые записи будут вставлены в файл. Это не произойдет в случае индексированного файла или относительного файла .
простираться
Режим расширения используется для добавления записей в последовательный файл . В этом режиме записи вставляются в конце. Если режим доступа к файлу — Случайный или Динамический , то режим расширения не может быть использован.
IO
Режим ввода-вывода используется для чтения и перезаписи записей файла.
Читать глагол
Глагол чтения используется для чтения файловых записей. Функция чтения заключается в извлечении записей из файла. При каждом глаголе чтения в структуру файла может быть прочитана только одна запись. Чтобы выполнить операцию чтения, откройте файл в режиме INPUT или IO. При каждом операторе чтения указатель файла увеличивается и, следовательно, читаются последующие записи.
Синтаксис
Ниже приводится синтаксис для чтения записей, когда режим доступа к файлу является последовательным:
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.
Ниже приведены используемые параметры:
-
СЛЕДУЮЩАЯ ЗАПИСЬ является необязательной и указывается, когда индексированный последовательный файл читается последовательно.
-
Предложение INTO является необязательным. Структура ws-file-структура определена в разделе WorkingStorage, чтобы получить значения из оператора READ.
-
AT END условие становится Истиной, когда достигнут конец файла.
СЛЕДУЮЩАЯ ЗАПИСЬ является необязательной и указывается, когда индексированный последовательный файл читается последовательно.
Предложение INTO является необязательным. Структура ws-file-структура определена в разделе WorkingStorage, чтобы получить значения из оператора READ.
AT END условие становится Истиной, когда достигнут конец файла.
Пример. В следующем примере выполняется чтение существующего файла с использованием последовательной организации строк. Эта программа может быть скомпилирована и выполнена с использованием опции Live Demo, где она будет отображать все записи, присутствующие в файле.
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.
Предположим, что данные входного файла, доступные в файле input.txt, содержат следующее:
20003 Mohtashim M. 20004 Nishant Malik 20005 Amitabh Bachhan
Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —
20003 Mohtashim M. 20004 Nishant Malik 20005 Amitabh Bachhan
Синтаксис
Ниже приводится синтаксис для чтения записи, когда режим доступа к файлу является случайным —
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.
Пример. В следующем примере выполняется чтение существующего файла с использованием проиндексированной организации. Эта программа может быть скомпилирована и выполнена с использованием JCL на мэйнфреймах, где она будет отображать все записи, присутствующие в файле. На сервере мейнфреймов мы не используем текстовые файлы; вместо этого мы используем файлы PS.
Предположим, что файл, представленный на мэйнфреймах, имеет то же содержимое, что и файл input.txt в приведенном выше примере.
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 для выполнения вышеуказанной программы COBOL —
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO //IN1 DD DSN = STUDENT-FILE-NAME,DISP=SHR
Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —
20005 Amitabh Bachhan
Написать глагол
Глагол записи используется для вставки записей в файл. Как только запись записана, она больше не доступна в буфере записи. Перед вставкой записей в файл переместите значения в буфер записей и затем выполните команду записи.
Оператор write может использоваться с опцией FROM для прямой записи записей из рабочих переменных хранилища. From является необязательным предложением. Если режим доступа последовательный, то для записи записи файл должен открываться в режиме вывода или в режиме расширения. Если режим доступа является случайным или динамическим, то для записи записи файл должен открываться в режиме вывода или в режиме ввода-вывода.
Синтаксис
Ниже приведен синтаксис для чтения записи, когда файловая организация является последовательной:
WRITE record-buffer [FROM ws-file-structure] END-WRITE.
Ниже приведен синтаксис для чтения записи, когда файловая организация проиндексирована или относительна —
WRITE record-buffer [FROM ws-file-structure] INVALID KEY DISPLAY 'Invalid Key' NOT INVALID KEY DISPLAY 'Record Inserted' END-WRITE.
Пример. В следующем примере показано, как вставить новую запись в новый файл, если организация является последовательной.
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 для выполнения вышеуказанной программы COBOL —
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO //OUT1 DD DSN = OUTPUT-FILE-NAME,DISP = (NEW,CATALOG,DELETE)
Когда вы скомпилируете и запустите вышеуказанную программу, она добавит новую запись в выходной файл.
1000 Tim 10
Перепишите глагол
Перепишите глагол используется для обновления записей. Файл должен быть открыт в режиме ввода-вывода для операций перезаписи. Может использоваться только после успешной операции чтения. Глагол перезаписи перезаписывает последнюю прочитанную запись.
Синтаксис
Ниже приведен синтаксис для чтения записи, когда файловая организация является последовательной:
REWRITE record-buffer [FROM ws-file-structure] END-REWRITE.
Ниже приведен синтаксис для чтения записи, когда файловая организация проиндексирована или относительна —
REWRITE record-buffer [FROM ws-file-structure] INVALID KEY DISPLAY 'Invalid Key' NOT INVALID KEY DISPLAY 'Record Updated' END-REWRITE.
Пример. В следующем примере показано, как обновить существующую запись, вставленную на предыдущем шаге «Запись».
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 для выполнения вышеуказанной программы COBOL —
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO //IN1 DD DSN = OUTPUT-FILE-NAME,DISP = SHR
Когда вы скомпилируете и запустите вышеуказанную программу, она обновит запись —
1000 Tim Dumais 10
Удалить глагол
Удалить глагол можно только на индексированных и относительных файлах. Файл должен быть открыт в режиме ввода-вывода. При последовательной организации файлов записи не могут быть удалены. Последняя запись, прочитанная оператором Read, удаляется в режиме последовательного доступа. В режиме произвольного доступа укажите ключ записи и затем выполните операцию удаления.
Синтаксис
Ниже приведен синтаксис для удаления записи:
DELETE file-name RECORD INVALID KEY DISPLAY 'Invalid Key' NOT INVALID KEY DISPLAY 'Record Deleted' END-DELETE.
Пример — удалить существующую запись —
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 для выполнения вышеуказанной программы COBOL —
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO //OUT1 DD DSN = OUTPUT-FILE-NAME,DISP = SHR
Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —
Record Deleted
Начать глагол
Начальный глагол может быть выполнен только для индексированных и относительных файлов. Он используется для размещения указателя файла на конкретной записи. Режим доступа должен быть последовательным или динамическим. Файл должен быть открыт в режиме ввода-вывода или ввода.
Синтаксис
Ниже приведен синтаксис для размещения указателя на конкретную запись —
START file-name KEY IS [=, >, <, NOT, <= or >=] rec-key INVALID KEY DISPLAY 'Invalid Key' NOT INVALID KEY DISPLAY 'File Pointer Updated' END-START.
Закрыть глагол
Глагол закрытия используется для закрытия файла. После выполнения операции закрытия переменные в файловой структуре не будут доступны для обработки. Связь между программой и файлом потеряна.
Синтаксис
Ниже приведен синтаксис для закрытия файла —