COBOL - Manejo de Archivos Los Verbos



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

  • Abrir
  • Leer
  • Escribir
  • Nueva Versin
  • Eliminar
  • Inicio
  • Cerrar

Abra Verbo

La primera operacin de archivo que se debe realizar. Si tiene xito, entonces slo es posible realizar otras operaciones en un archivo. Slo despus de abrir un archivo, por lo que las variables de la estructura de archivos estn disponibles para su procesamiento. ESTADO DEL ARCHIVO variable se actualiza despus de cada operacin 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 Descripcin
Entrada Modo de entrada se utiliza para archivos existentes. De este modo, se puede leer el archivo, se permite ninguna otra operacin 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 eliminarn en primer lugar y, a continuacin, nuevos registros insertados en el archivo. Eso no va a ocurrir en el caso de archivo indexado o archivo relativa.
Ampliar Modo de extensin 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 dinmico, entonces modo de extensin 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 funcin de leer es el de obtener registros de un archivo. En cada lectura verbo, slo se dispone de un registro puede ser ledo en la estructura de archivos. Para realizar una operacin de lectura, abra el archivo de entrada o I-O modo. En cada instruccin 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 continuacin, se describen los parmetros utilizados:

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

  • Clusula INTO es opcional. ws-estructura de archivo se define en la Working-Storage seccin para obtener los valores de la instruccin READ.

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

Ejemplo The ejemplo siguiente se lee un archivo existente mediante lnea organizacin secuencial. Este programa puede ser compilado y ejecutado mediante Prubalo opcin en la que se mostrarn 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 organizacin. 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 continuacin, realizar escribir verbo.

Escribir se puede utilizar conDE opcin de escribir directamente a los registros de la memoria de trabajo variables. Es una clusula opcional. Si el modo de acceso es secuencial, a continuacin, escribir un registro,s el archivo debe abrirse en modo de salida o modo de extensin. Si el modo de acceso es aleatorio o dinmico, 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 organizacin de los archivos es secuencial.

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

Siguiente es la sintaxis para leer un registro cuando la organizacin 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 organizacin 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 aade un nuevo registro en el archivo de salida.

1000 Tim         10

Nueva Versin Verbo

Nueva Versin verbo se utiliza para actualizar los registros. Archivo debe estar abierto en I-O modo de reescribir las operaciones. Slo se puede utilizar despus de una exitosa operacin de lectura. Escribir verbo sobrescribe el ltimo registro leer.

Sintaxis

Siguiente es la sintaxis para leer el registro cuando la organizacin de los archivos es secuencial.

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

Siguiente es la sintaxis para leer un registro cuando la organizacin 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 cmo 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 slo puede realizarse en archivos indexados y relativa. El archivo debe ser abierto en I-O modo. Organizacin de archivos secuenciales en, los registros no se pueden eliminar. La ltima lectura de la instruccin Read se elimina en caso de modo de acceso secuencial. En modo de acceso aleatorio, especifique la clave del registro y, a continuacin, lleve a cabo la operacin de eliminacin.

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 slo puede realizarse en archivos indexados y relativa. Se usa para colocar el puntero del archivo en un registro especfico. El modo de acceso deben ser secuenciales o dinmica. Se debe abrir en I-O o modo de entrada.

Sintaxis

Siguiente es la sintaxis para colocar el puntero en un registro especfico:

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. Despus de realizar la operacin de Cierre las variables dentro de la estructura de archivos no estar disponible para el proceso. El vnculo entre el programa y el archivo se pierde.

Sintaxis

Siguiente es la sintaxis para cerrar un archivo:

CLOSE file-name.
Advertisements