COBOL - Manejo de Archivos Los Verbos



Manejo de archivos los verbos se utilizan para realizar diversas operaciones con archivos. A continuación, se describen los verbos manejo de archivos:

  • Abrir
  • Leer
  • Escribir
  • Nueva Versión
  • Eliminar
  • Inicio
  • Cerrar

Abra Verbo

La primera operación de archivo que se debe realizar. Si tiene éxito, entonces sólo es posible realizar otras operaciones en un archivo. Sólo después de abrir un archivo, por lo que las variables de la estructura de archivos están disponibles para su procesamiento. ESTADO DEL ARCHIVO variable se actualiza después de cada operación de archivo.

Sintaxis

OPEN "mode" file-name.

En este caso, nombre de archivo es literal de cadena, que se utilizará para asignar un nombre al archivo. Un archivo se puede abrir en los siguientes modos:

Modo Descripción
Entrada Modo de entrada se utiliza para archivos existentes. De este modo, se puede leer el archivo, se permite ninguna otra operación en el archivo.
Salida Modo de salida se utiliza para insertar registros en archivos. Si un archivo secuencial se utiliza y si el archivo es que algunos registros, los registros existentes se eliminarán en primer lugar y, a continuación, nuevos registros insertados en el archivo. Eso no va a ocurrir en el caso de archivo indexado o archivo relativa.
Ampliar Modo de extensión se usa para agregar registros en un archivo secuencial. En este modo, los registros se insertan al final. Si el acceso al archivo es aleatoria o modo dinámico, entonces modo de extensión no se puede utilizar.
I-O Modo Input-Output se utiliza para leer y escribir los registros de un archivo.

Leer Verbo

Leer verbo se usa para leer los registros del archivo. La función de leer es el de obtener registros de un archivo. En cada lectura verbo, sólo se dispone de un registro puede ser leído en la estructura de archivos. Para realizar una operación de lectura, abra el archivo de entrada o I-O modo. En cada instrucción read, el puntero del archivo se incrementa y, por ende, los sucesivos registros se leen.

Sintaxis

Siguiente es la sintaxis para leer las actas cuando el modo de acceso del archivo es secuencial.

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.

A continuación, se describen los parámetros utilizados:

  • REGISTRO SIGUIENTE es opcional y se especifica cuando un archivo secuencial indexado se lee secuencialmente.

  • Cláusula INTO es opcional. ws-estructura de archivo se define en la Working-Storage sección para obtener los valores de la instrucción READ.

  • AL FINAL se convierte en un verdadero estado cuando el final del archivo.

Ejemplo The ejemplo siguiente se lee un archivo existente mediante línea organización secuencial. Este programa puede ser compilado y ejecutado mediante Pruébalo opción en la que se mostrarán todos los registros en el archivo.

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.

Supongamos que los datos del archivo de entrada disponible en la input.txt contiene los siguientes:

20003 Mohtashim M.
20004 Nishant Malik
20005 Amitabh Bachhan

Cuando se compila y ejecuta el programa antes mencionado, se produce el resultado siguiente:

20003 Mohtashim M.            
20004 Nishant Malik           
20005 Amitabh Bachhan 

Sintaxis

Siguiente es la sintaxis para un registro de lectura cuando el modo de acceso del archivo es aleatorio:

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.

Ejemplo: El siguiente ejemplo lee un archivo existente mediante indexado organización. Este programa puede ser compilado y ejecutado con JCL en Mainframes donde se mostrará todos los registros en el archivo. En Mainframes server no utilizar archivos de texto; en su lugar, utilice archivos PS.

Supongamos que el archivo presente en los mainframes tienen el mismo contenido que la entrada.txt en el ejemplo anterior.

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 para ejecutar el programa COBOL:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
//IN1 DD DSN=STUDENT-FILE-NAME,DISP=SHR

Cuando se compila y ejecuta el programa antes mencionado, se produce el resultado siguiente:

20005 Amitabh Bachhan

Escribir Verbo

Escribir verbo se usa para insertar registros en un archivo. Una vez que el registro se escribe, ya no está disponible en el registro buffer. Antes de insertar los registros en el archivo, mover valores en el registro buffer y, a continuación, realizar escribir verbo.

Escribir se puede utilizar conDE opción de escribir directamente a los registros de la memoria de trabajo variables. Es una cláusula opcional. Si el modo de acceso es secuencial, a continuación, escribir un registro,s el archivo debe abrirse en modo de salida o modo de extensión. Si el modo de acceso es aleatorio o dinámico, entonces a escribir un registro, el archivo debe abrirse en modo de salida o I-O modo.

Sintaxis

Siguiente es la sintaxis para leer el registro cuando la organización de los archivos es secuencial.

WRITE record-buffer [FROM ws-file-structure]
END-WRITE.

Siguiente es la sintaxis para leer un registro cuando la organización de los archivos es indexada o relativa:

WRITE record-buffer [FROM ws-file-structure]
   INVALID KEY DISPLAY 'Invalid Key'
   NOT INVALID KEY DISPLAY 'Record Inserted'
END-WRITE.

Ejemplo: El siguiente ejemplo muestra la forma de insertar un nuevo registro en un archivo nuevo en el que la organización secuencial.

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 para ejecutar el programa COBOL:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
//OUT1 DD DSN=OUTPUT-FILE-NAME,DISP=(NEW,CATALOG,DELETE)

Cuando se compila y ejecuta el programa antes mencionado, se añade un nuevo registro en el archivo de salida.

1000 Tim         10

Nueva Versión Verbo

Nueva Versión verbo se utiliza para actualizar los registros. Archivo debe estar abierto en I-O modo de reescribir las operaciones. Sólo se puede utilizar después de una exitosa operación de lectura. Escribir verbo sobrescribe el último registro leer.

Sintaxis

Siguiente es la sintaxis para leer el registro cuando la organización de los archivos es secuencial.

REWRITE record-buffer [FROM ws-file-structure]
END-REWRITE.

Siguiente es la sintaxis para leer un registro cuando la organización de los archivos es indexada o relativa:

REWRITE record-buffer [FROM ws-file-structure]
   INVALID KEY DISPLAY 'Invalid Key'
   NOT INVALID KEY DISPLAY 'Record Updated'
END-REWRITE.

Ejemplo: El siguiente ejemplo muestra cómo actualizar un registro existente que hemos insertado en escritura anterior paso:

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 para ejecutar el programa COBOL:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
//IN1 DD DSN=OUTPUT-FILE-NAME,DISP=SHR

Cuando se compila y ejecuta el programa anterior, se va a actualizar el registro:

1000 Tim Dumais  10

Eliminar Verbo

Eliminar verbo sólo puede realizarse en archivos indexados y relativa. El archivo debe ser abierto en I-O modo. Organización de archivos secuenciales en, los registros no se pueden eliminar. La última lectura de la instrucción Read se elimina en caso de modo de acceso secuencial. En modo de acceso aleatorio, especifique la clave del registro y, a continuación, lleve a cabo la operación de eliminación.

Sintaxis

Siguiente es la sintaxis para eliminar un registro:

DELETE file-name RECORD
   INVALID KEY DISPLAY 'Invalid Key'
   NOT INVALID KEY DISPLAY 'Record Deleted'
END-DELETE.

Ejemplo para eliminar un registro existente:

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 para ejecutar el programa COBOL:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
//OUT1 DD DSN=OUTPUT-FILE-NAME,DISP=SHR

Cuando se compila y ejecuta el programa antes mencionado, se produce el resultado siguiente:

Registro eliminado

Inicio Verbo

Inicio verbo sólo puede realizarse en archivos indexados y relativa. Se usa para colocar el puntero del archivo en un registro específico. El modo de acceso deben ser secuenciales o dinámica. Se debe abrir en I-O o modo de entrada.

Sintaxis

Siguiente es la sintaxis para colocar el puntero en un registro específico:

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

Verbo Cerrar

Cierre verbo se utiliza para cerrar un archivo. Después de realizar la operación de Cierre las variables dentro de la estructura de archivos no estará disponible para el proceso. El vínculo entre el programa y el archivo se pierde.

Sintaxis

Siguiente es la sintaxis para cerrar un archivo:

CLOSE file-name.
Advertisements