COBOL - обработка файла списка команд.


Advertisements

Обработка файла глаголов используются для выполнения различных операций с файлами. Ниже приведены на обработка файла глаголов:

  • Откройте
  • Читать
  • Запись
  • Переписать
  • Удалить
  • Пуск
  • Закрыть

Откройте глагол

Разрыв цепи на первый файл операция, которая должна быть выполнена. Если открыть, после чего лишь еще больше операций в файл. Только после открытия файла, переменные в структуру файла доступны для обработки. Файл переменной состояния обновляется после каждого файла.

Синтаксис

OPEN "mode" file-name.

Здесь, file-name - строковая константа, которые вы можете использовать, чтобы имя вашего файла. Файл может быть открыт в followin режимы:

Режим Описание
Вход Режим ввода используется для существующих файлов. В этом режиме, мы можем только читать файл, нет никаких других операции на файл.
Выход Выходной режим используется для вставки записей в файлах. Если последовательный файл и файл - это проведение некоторые записи, а затем существующие записи будут удалены и затем новые записи будет вставлен в файл. Она не произойдет это в случае индексированные файл или относительной файл.
Продлить Продлить режим используется для добавления записей в последовательный файл. В этом режиме, отчеты вставлены в конце. Если файл имеет режим доступа случайных или динамический, а затем продлить режим не может быть использован.
I-O Входной/выходной режим используется для чтения и записи записи файла.

Читать глагол

Читать глагол используется для чтения файла записей. В функции read для выборки из файла. На каждом читать глагол, только одна запись может быть включены в структуру файлов. Для выполнения операции чтения, открыть файл в входной или I-O режим. На каждом читать, указатель файла увеличивается, и поэтому последовательные отчеты.

Синтаксис

Ниже синтаксис для чтения записи, если файл имеет режим доступа: РКП

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.

Ниже приведены параметры, используемые для:

  • Следующей записи является дополнительным, и указывается, когда индексированные последовательный файл считывается последовательно.

  • В является дополнительным. WS-структуры файла определяется в Working-Storage раздел, чтобы получить значения из читать заявление.

  • В конце условие в конце файла.

ExampleThe следующий пример показывает существующий файл с помощью линия роботизированная организации. Эта программа может быть скомпилирован и выполняется с помощью попробуйте вариант, когда она будет отображаться все записи в файл.

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 на мейнфреймах где он будет отображать все записи в файл. На мейнфреймах server мы не использовать текстовые файлы; вместо этого мы используем файлы 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 

Запись "глагол

Запись глагол используется для вставки записей в файле. После того, как запись, она больше не будет доступна в буфер записи. Перед тем, как вставлять записи в файле, установите значения в буфер записи и затем выполнить запись глагол.

Напишите заявление может использоваться с с возможностью напрямую писать отчеты из рабочей системы хранения данных переменных. От - дополнительное предложение. Если режим доступа является последовательным, затем запись запись,s файл должен открыть в выходной режим или режим выдвижения. Если режим доступа является случайным или динамической, затем запись запись, файл должен быть открыт в режиме выхода или I-O режим.

Синтаксис

Ниже синтаксис для чтение записи при организации файла выполняется последовательно:

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

Переписать глагол

Переписать глагол используется для обновления записей. Файл должен быть открыт в I-O режим для повторной записи операций. Он может использоваться только после успешного завершения операции чтения. Переписать глагол перезаписывает последняя запись читать.

Синтаксис

Ниже синтаксис для чтение записи при организации файла выполняется последовательно:

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

Удалить глагол

Удалить глагол может быть выполнена только на индексируются и относительной файлов. Файл должен быть открыт в I-O режим. В последовательном организация файлов, записей не могут быть удалены. Запись последнего читать, читать удаляется в случае режиме последовательного доступа. В произвольном режиме доступа, укажите ключ записи и затем выполнить операции удаления.

Синтаксис

Ниже синтаксис для удаления записи:

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

Запустите глагол

Запустите глагол может быть выполнена только на индексируются и относительной файлов. Он используется для поместите указатель файла на конкретной записи. Режим доступа должны быть последовательными или динамический. Файл должен быть открыт в I-O или режим ввода.

Синтаксис

Ниже синтаксис поместите курсор на конкретной записи:

START file-name KEY IS [=, >, <, NOT, <= or >=] rec-key
   INVALID KEY DISPLAY 'Invalid Key'
   NOT INVALID KEY DISPLAY 'File Pointer Updated'
END-START.

Закройте глагол

Закройте глагол используется, чтобы закрыть файл. После выполнения операция закрытия переменные в структуру файла не будет доступна для обработки. Связь между программой и файл будет потеряно.

Синтаксис

Ниже синтаксис закрыть файл:

CLOSE file-name.
Advertisements