CONCEPTOS PREVIOS
CAMPO
Es un conjunto de caracteres capaz de suministrar una determinada informacin referida a un concepto.
REGISTRO
Es un conjunto de campos referentes a una entidad particular. En definitiva, un registro lgico es una estructura de datos formada por uno o mas campos, que pueden ser de diferentes tipos y que a su vez, pueden estar compuesto por subcampos.
FICHERO
Es un conjunto de registros homogneos, almacenados en soporte externo, que presentan entre s una relacin lgica y que pueden ser consultados individualmente de forma iterativa y sistemtica.
FICHEROS EN COBOL 2
CONCEPTOS PREVIOS
REGISTRO BUFFER
Es un espacio de memoria interna que reserva el sistema para el intercambio de registros entre el fichero y el programa.
CLAVE PRINCIPAL
Es un campo o campos que identifican de manera nica un registro. No puede haber dos registros que contengan el mismo valor en el campo clave.
REGISTRO FSICO
Corresponde a la cantidad de informacin que se transfiere en cada operacin de lectura o escritura sobre un fichero.
FACTOR DE BLOQUEO
Es el nmero de registro lgicos que contiene cada registro fsico.
3
FICHEROS EN COBOL
CONCEPTOS PREVIOS
FACTOR DE BLOQUE = 3 REGISTRO1 REGISTRO2 REGISTRO3
.
CAMPOS
REGISTROS
FICHEROS EN COBOL 4
CARACTERSTICAS
Residencia en soportes de informacin externos. Gran capacidad de almacenamiento, tericamente ilimitada. La limitacin vendr dada por la capacidad del soporte de almacenamiento. Independencia de la informacin que almacenan con los programas que gestionarn esta informacin. Permanencia de la informacin almacenada. Portabilidad de los datos entre diferentes computadoras.
FICHEROS EN COBOL
Archivos de Movimientos
Altas. Bajas. Modificacin.
Archivos de Trabajo.
FICHEROS EN COBOL 6
FICHEROS EN COBOL
ORGANIZACIN SECUENCIAL
Se almacenan los registros fsicamente en posiciones contiguas en el soporte auxiliar. El modo de acceso a este tipo de fichero es secuencial No permite otro tipo de acceso. Es de gran utilidad en ficheros con un elevado nmero de registros, que no requieren actualizarse con excesiva frecuencia. Presenta dos grandes problemas:
Siempre que se actualice el fichero, se debe crear uno nuevo, ya que no es posible efectuar altas intermedias o bajas de registros sobre el propio fichero. Para acceder a un registro concreto, es necesario haber ledo previamente todos los registros anteriores.
FICHEROS EN COBOL
ORGANIZACIN INDEXADA
Requiere estar almacenado en un soporte de acceso directo. Exige que todos los registros que formen el fichero contenga un campo que permite identificar cada registro de forma nica, no pudiendo existir dos registros que contengan el mismo valor en dicho campo. Este campo se denominar clave del fichero. Los registros se almacenarn en orden ascendente por el campo clave. La gestin interna de los ficheros secuenciales indexados depende del sistema en el que se desarrollen.
FICHEROS EN COBOL
ORGANIZACIN INDEXADA
rea primaria.
Contiene fsicamente los datos de los registros. Los registros se graban, al crearse el fichero, en orden ascendente del campo clave. Tiene organizacin secuencial y est dividida dentro del soporte en varios grupos de igual tamao.
rea de ndices.
Es un archivo de organizacin secuencial, cuyos registros estarn formados por dos campos. El primero contiene la clave ms alta de los registros que componen el grupo, es decir, la clave de su ltimo registro. El segundo campo contiene la direccin absoluta del primer registro de ese grupo.
rea de excedentes.
Se denomina rea de overflow. Contiene los registros que se darn de alta en las actualizaciones
FICHEROS EN COBOL
10
ORGANIZACIN INDEXADA
PISTA 01 A1 REG-1 A2 REG-2 B3 REG-3 B8 REG-4
PISTA 03 E3 REG-9 E8
CAMPO CLAVE
FICHEROS EN COBOL
11
ORGANIZACIN INDEXADA
REA DE NDICES
B8
01
D5
02
F8
03
G9
04
REA DE EXCEDENTES
CAMPO CLAVE
FICHEROS EN COBOL
12
FICHEROS SECUENCIALES
DEFINICIN
Un fichero con organizacin secuencial, se caracteriza fundamentalmente por almacenar los registros fsicamente contiguos en el soporte auxiliar. Slo se puede acceder a sus registros de forma secuencial.
REGISTRO1
REGISTRO2
REGISTRO3
REGISTRO4
REGISTRO5
FICHEROS EN COBOL
14
DECLARACIN Y DESCRIPCIN
Nombre del fichero interno: Es el nombre simblico dado al archivo. Dicho nombre se utilizar en el programa. Debe ser nico en el programa. Nombre del fichero externo: Es el nombre real que tiene el fichero en el Sistema Operativo. Dispositivo: Dispositivo fsico en el cual ser ledo y/o escrito. Tipo de fichero: Organizacin del mismo Modo de acceso: Tipo de acceso al fichero. Factor de Blocaje: N de registros lgicos por cada registro fsico. Longitud del registro: N de caracteres del registro lgico del fichero. Nombre del registro: Es el nombre simblico dado al registro del fichero. Dicho nombre se utilizar en el programa. Descripcin del registro. Cmo est estructurada la informacin.
FICHEROS EN COBOL 15
DECLARACIN EN COBOL
ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT [OPTIONAL] nombre-de-fichero-interno ASSIGN TO dispositivo [nombre-de-fichero-externo] [[ORGANIZATION IS]][LINE] SEQUENTIAL] [ACCESS MODE IS SEQUENTIAL].
FICHEROS EN COBOL
16
DECLARACIN EN COBOL
POSICION 1-3 4-9 10-15 16 NOMBRE SIMBLICO CDIGO UNIDADES FECHA-REC L-CODIGO BYTES 3 6 6 35 0 0 P.DEC TIPO A N N A DESCRIPCIN Cdigo de Artculo Unidades en stock Fecha de Recepcin (ddmmaa) Descripcin
ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT articulos ASSIGN TO DISK articulos.dat.
ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT articulos ASSIGN TO DISK articulos.dat ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL.
FICHEROS EN COBOL
17
DESCRIPCIN EN COBOL
DATA DIVISION FILE SECTION FD nombre-de-fichero-interno [LABEL RECORD] [BLOCK CONTAINS] [RECORD CONTAINS] [DATA RECORD IS]
Deben existir tantas FD como ficheros utilicemos. Como los ficheros y su declaracin estn ligadas a normas del S.O., es en esta seccin donde puede haber ms diferencias de un compilador a otro. El nombre de fichero que sigue a la clusula FD debe ser el mismo que el especificado en la clusula SELECT.
FICHEROS EN COBOL
18
DESCRIPCIN EN COBOL
Clusula LABEL.
Esta clusula indica si los registros llevan o no etiquetas. Esta clusula no es obligatoria segn las normas ANS-85. y se utiliza OMITTED para los ficheros de impresoras y STANDARD para los ficheros contenidos en dispositivos de acceso directo (disco, disco flexible etc.).
FICHEROS EN COBOL
19
DESCRIPCIN EN COBOL
Clusula RECORDS CONTAINS.
FICHEROS EN COBOL
20
10
DESCRIPCIN EN COBOL
Nombre del fichero interno: ARTICULOS *Nombre del fichero externo: ARTICULOS.DAT *Dispositivo: DISCO *Tipo de fichero: SECUENCIAL *Modo de acceso: SECUENCIAL Factor de Blocaje: 5 Longitud del registro: 50 Nombre del registro: REG-ARTICULOS Descripcin del registro:
POSICION 1-3 4-9 10-15 16-51 NOMBRE SIMBLICO CDIGO UNIDADES FECHA-REC L-CODIGO BYTES 3 6 6 35 0 0 P.DEC TIPO A N N A DESCRIPCION Cdigo de Artculo Unidades en stock Fecha de Recepcin (ddmmaa) Descripcin
FICHEROS EN COBOL
21
DESCRIPCIN EN COBOL
DATA DIVISION. FILE SECTION. FD ARTICULO LABEL RECORD IS STANDARD BLOCK CONTAINS 5 RECORDS RECORD CONTAINS 50 CHARACTERS DATA RECORD IS REG-ARTICULO. 01 REG-ARTICULO. 02 CODIGO PIC 999. 02 UNIDADES PIC 9(6). 02 FECHA-REC PIC 9(6). 02 L-CODIGO PIC X(35).
FICHEROS EN COBOL
22
11
DESCRIPCIN EN COBOL
FD FICHERO_TIEMPO_SEMANAL BLOCK CONTAINS 30 RECORDS RECORD CONTAINS 150 TO 200 CHARACTERS LABEL RECORDS ARE STANDARD DATA RECORDS ARE REGISTRO_TIEMPO_PERDIDO REGISTRO_TIEMPO_COMPENSADO. 01 REGISTRO_TIEMPO_PERDIDO. {descripcin de un registro lgico de 150 caracteres} 01 REGISTRO_TIEMPO_COMPENSADO. {descripcin de un registro lgico de 200 caracteres}
FICHEROS EN COBOL
23
OPERACIONES
Apertura de fichero
Abrir un fichero quiere decir dejarlo dispuesto para ser utilizado Todos los archivos empleados en un programa deben ser abiertos, previamente a su uso Modos de apertura de un fichero.
Slo lectura: Coloca la cabeza lectora sobre el primer registro quedando el archivo preparado para ser ledo. Slo escritura: Coloca la cabeza de escritura a continuacin del ltimo registro escrito, quedando preparado para su grabacin. Si el fichero no exista lo crea y si exista borra su contenido. Para leer y escribir
FICHEROS EN COBOL
24
12
OPERACIONES
registro 1 registro 2 registro 3 registro4
CABEZA DE LECTURA
CABEZA DE ESCRITURA
registro 1
registro 2
registro 3
registro4
CABEZA DE LECTURA-ESCRITURA
FICHEROS EN COBOL
25
OPERACIONES
Cierre de un fichero
Libera el fichero. Coloca la marca especial fin de archivo que ser detectada al leer. El fichero queda a disposicin de cualquier programa que lo solicite. Cada fichero abierto por medio de OPEN, debe ser cerrado con CLOSE. Se pueden cerrar varios ficheros a la vez. CLOSE nombre de fichero.
FICHEROS EN COBOL 26
13
OPERACIONES
Lectura de un registro
Coloca el contenido del registro apuntado por la cabeza lectora sobre la variable buffer del fichero, avanzando la cabeza lectora al siguiente registro.
registro 1 registro 2 registro 3 . registro 3 registro4
OPERACIONES
Escritura de un registro
registro 1 registro 2 registro 3 . datos
WRITE registro [FROM identif-1/literal] [END-WRITE] WRITE registro [FROM identif-1/literal] [BEFORE/AFTER ADVANCING TO LINE iden-3/ent-2 [ON NEXT nombre nemnico/PAGE [END-WRITE]
FICHEROS EN COBOL
28
14
OPERACIONES
Reescritura de un registro
registro 1
registro 2
registro 3
registro 3 identificador
FICHEROS EN COBOL
30
15
P-PROCESAR FICHERO
F-PROCESAR FICHERO
CERRAR FIC
Procesar registro puede ser algo sencillo que no conlleve realizar ninguna accin repetitiva o alternativa. O puede ser tan complicada que deba ser representada grficamente en el rbol programtico. Lo que debe quedar claro es que despus de procesar el registro ledo se debe realizar la lectura del registro siguiente Es importante destacar que es en la propia lectura de un registro cuando se detecta el FINAL del fichero. COBOL no tiene funcin standard para detectar el fin de fichero. Recuerda el formato del verbo READ.
FICHEROS EN COBOL
31
CREACIN FICHERO
CREAR FICHERO
P-CREAR FICHERO
ESCRIBIR REGISTRO
CAMPO1 = *
F-CREAR FICHERO
CERRAR FIC
FICHEROS EN COBOL
32
16
RUPTURAS DE CONTROL
Los registros de los ficheros secuenciales estn GRABADOS EN POSICIONES CONTIGUAS. No tiene en cuenta para su disposicin dentro del soporte el contenido de ninguno de sus campos. El fichero debe estar ORDENADO por uno o varios campos antes de procesar sus registros. Esta clasificacin es INDISPENSABLE cuando existen varios registros perteneciente a una misma entidad y SE DESEA LLEVAR A CABO el proceso de los mismos uno a continuacin de otro. Llamaremos CAMPO DE CONTROL, al campo por el cual debe ordenarse el fichero, y cuyo contenido es el mismo para un conjunto de registros (dichos registros pertenecern a la misma entidad). Al conjunto de registros cuyo contenido es el mismo en el campo de control se le denominar BLOQUE DE CONTROL. Cuando al recorrer un fichero, se lee un registro cuyo contenido del campo de control difiere del que tena el registro anterior, se dice que se ha producido una RUPTURA DE CONTROL.
FICHEROS EN COBOL
33
RUPTURAS DE CONTROL
En todos aquellos procesos que impliquen rupturas de control se debe tener en cuenta:
Para saber si el campo de control del registro recin ledo tiene el mismo contenido que el registro anterior, ser necesario haber guardado en una variable auxiliar el contenido del campo de control del primer registro del bloque de control.
Se debe reinicializar el valor de la variable auxiliar con el contenido del campo de control del nuevo registro para poder utilizarla como referencia en el bloque siguiente. En este punto se deben reinicializar las variables (si es que existen) para cada bloque (acumuladores....). La repeticin del conjunto de operaciones relativas a los registros pertenecientes al mismo bloque se realiza mediante la estructura Mientras, cuya condicin de salida ser, que el campo de control del registro ledo difiera del contenido de la variable auxiliar. Se
deduce, por tanto, que en procesos de este tipo habr al menos tantas estructuras repetitivas como rupturas de control existan.
FICHEROS EN COBOL 34
17
RUPTURAS DE CONTROL
Cierto almacn dispone de un fichero
Nombre del fichero interno: FVENTAS Nombre del fichero externo: VENTAS.DAT Dispositivo: DISCO Tipo de fichero: SECUENCIAL Modo de acceso: SECUENCIAL Nombre del registro: REG-FVENTAS Descripcin del registro:
NOMBRE SIMBLICO VT_EMP VT-MES VT_DIA VT_IMP BYTES 5 2 2 6 0 0 0 P.DEC TIPO A N N N DESCRIPCIN Cdigo de vendedor Nmero del mes Nmero de da Importe de la venta
Deseamos obtener el total por vendedor, el total vendido por la empresa y el nmero de vendedores de la empresa. El fichero se supone ordenado por el campo VT_EMP. Cada empleado tendr tantos registros consecutivos como ventas haya realizado.
FICHEROS EN COBOL
35
RUPTURAS DE CONTROL
Campos de CONTROL: VT_EMP. Variables Auxiliares: T_VEND: Acumulador de Ventas por Vendedor. T_EMPR: Acumulador de Ventas de la Empresa. C_EMPR: Contador de empleados de la Empresa. AUX_VEN: Variable auxiliar para guardar el cdigo de vendedor.
PROGRAMA
P-PROGRAMA
TRATAR FICHERO
P-TRATAR-FICHERO
RUPTURA
F-TRATAR-FICHERO
FICHEROS EN COBOL
36
18
FUSIN DE FICHEROS
Si se dispone de varios ficheros secuenciales con la misma estructura y ordenados todos ellos por el mismo campo, la fusin de dichos ficheros consistir en obtener un nuevo fichero de salida, que ser la unin de todos ellos. Dicho fichero estar tambin ordenado por el mismo campo que los ficheros de partida.
FICHEROS EN COBOL
37
FUSIN DE FICHEROS
Ficheros de Entrada:
Nombre del fichero interno: FAGENDA94 Nombre del fichero externo: AGENDA94.DAT Dispositivo: DISCO Tipo de fichero: SECUENCIAL Modo de acceso: SECUENCIAL Nombre del registro: REG-FAGEN94 Descripcin del registro:
NOMBRE SIMBLICO CO_CLIEN94 NO_CLIEN94 DI_CLIEN94 BYTES 5 30 30 P.DEC TIPO A A A DESCRIPCION Cdigo de Cliente Nombre Direccin
FICHEROS EN COBOL
38
19
FUSIN DE FICHEROS
Ficheros de Entrada:
Nombre del fichero interno: FAGENDA95 Nombre del fichero externo: AGENDA95.DAT Dispositivo: DISCO Tipo de fichero: SECUENCIAL Modo de acceso: SECUENCIAL Nombre del registro: REG-FAGEN95 Descripcin del registro:
NOMBRE SIMBLICO CO_CLIEN95 NO_CLIEN95 DI_CLIEN95 BYTES 5 30 30 P.DEC TIPO A A A DESCRIPCION Cdigo de Cliente Nombre Direccin
FICHEROS EN COBOL
39
FUSIN DE FICHEROS
Ficheros de Salida: Nombre del fichero interno: FAGENDA96 Nombre del fichero externo: AGENDA96.DAT Dispositivo: DISCO Tipo de fichero: SECUENCIAL Modo de acceso: SECUENCIAL Nombre del registro: REG-FAGEN96 Descripcin del registro:
POSICION 1-5 6-35 36-65 NOMBRE SIMBLICO CO_CLIEN96 NO_CLIEN96 DI_CLIEN94 BYTES 5 30 30 P.DEC TIPO A A A DESCRIPCION Cdigo de Cliente Nombre Direccin
Para poder llevar a cabo la fusin de ambos ficheros ser obligatorio que ambos ficheros estn ordenados por un mismo campo, en este caso los ficheros de partida estarn ordenados por el CDIGO DE CLIENTE.
FICHEROS EN COBOL 40
20
FUSIN DE FICHEROS
PROGRAMA
P-PROGRAMA
FUSIN
F-PROGRAMA
(1) C1
MENOR
R1
(7)
NO-MENOR
(2)
C2
MAYOR
IGUAL
(3)
FUSIN DE FICHEROS
1 2
TERMINAR94
TERMINAR95
(5)
R2 (6)
R3
R1 R2 R3 C1 C2
Fin de Fagenda94 o bien fin de Fagenda95 Fin de Fagenda94 Fin de Fagenda95 CO_CLIEN94 < CO_CLIEN95 CO_CLIEN94 > CO_CLIEN95
FICHEROS EN COBOL
42
21
FUSIN DE FICHEROS
(1) ABRIR FAGENDA94 (L) ABRIR FAGENDA95(L) ABRIR FAGENDA96(E) LEER REG-FAGENDA94 LEER REG-FAGENDA95 MOVER LOS CAMPOS DE FAGENDA94 A FAGENDA96 GRABAR EN FAGENDA96 LEER REG-FAGENDA94 MOVER LOS CAMPOS DE FAGENDA95 A FAGENDA96 GRABAR EN FAGENDA96 LEER REG-FAGENDA95 MOVER LOS CAMPOS DE FAGENDA95 A FAGENDA96 GRABAR EN FAGENDA96 LEER REG-FAGENDA94 LEER REG-FAGENDA95 MOVER LOS CAMPOS DE FAGENDA94 A FAGENDA96 GRABAR EN FAGENDA96 LEER REG-FAGENDA94 MOVER LOS CAMPOS DE FAGENDA95 A FAGENDA96 GRABAR EN FAGENDA96 LEER REG-FAGENDA95 CERRAR FICHEROS
(2)
(3)
(4)
(5)
(6)
(7)
FICHEROS EN COBOL
43
FUSIN DE FICHEROS
R1
PROGRAMA
CO_CLIEN95 =
C1 C2
P-PROGRAMA
FUSIN
F-PROGRAMA
(1) C1
MENOR
R1
(2)
C2
MAYOR
IGUAL
FICHEROS EN COBOL
44
22
FUSIN DE FICHEROS
(1) ABRIR FAGENDA94 (L) ABRIR FAGENDA95(L) ABRIR FAGENDA96(E) LEER REG-FAGENDA94 LEER REG-FAGENDA95 MOVER LOS CAMPOS DE FAGENDA94 A FAGENDA96 GRABAR EN FAGENDA96 LEER REG-FAGENDA94 MOVER LOS CAMPOS DE FAGENDA95 A FAGENDA96 GRABAR EN FAGENDA96 LEER REG-FAGENDA95 MOVER LOS CAMPOS DE FAGENDA95 A FAGENDA96 GRABAR EN FAGENDA96 LEER REG-FAGENDA94 LEER REG-FAGENDA95 CERRAR FICHEROS
(2)
(3)
(4)
(5)
FICHEROS EN COBOL
45
ACTUALIZACIN DE FICHEROS
En Gestin es muy frecuente tener un fichero maestro, es decir, aqul que guarda la informacin fundamental y de alguna forma es permanente. Para poder tener dicho fichero actualizado, es necesario realizar con periodicidad algunas de las siguientes operaciones:
ALTAS: Insertar registros nuevos en el fichero. BAJAS: Eliminar registros del fichero. MODIFICACIONES: Modificar el contenido de uno o ms campos de algunos registros del fichero.
El proceso de actualizacin consistir en ENFRENTAR los ficheros maestro y movimientos, con cierta periodicidad, y obtener como resultado un NUEVO MAESTRO actualizado. Para que esto sea posible ambos ficheros (maestro y movimientos) deben estar ordenados por el mismo campo.
FICHEROS EN COBOL
46
23
ACTUALIZACIN DE FICHEROS
Si el fichero Maestro tiene la siguiente estructura:
MAESTRO MVTOS
CAMPO1-CAMPO2-CAMPO3CAMPO4
Donde:
FICHEROS EN COBOL
47
FICHEROS INDEXADOS
24
DECLARACIN EN COBOL
ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT [OPTIONAL] nombre-de-fichero-interno ASSIGN TO dispositivo [nombre-de-fichero-externo] ORGANIZATION IS INDEXED ACCESS MODE IS SEQUENTIAL/RANDOM/DYNAMIC. RECORD KEY IS nombre-dato-1 [ALTERNATE RECORD KEY IS nombre-dato-2] [WITH DUPLICATES]
FICHEROS EN COBOL
49
DECLARACIN EN COBOL
La instruccin ORGANIZATION especifica que ste es un archivo con ndice. La clusula ACCESS MODE especifica la forma de tener acceso a los registros en el archivo.
IS SEQUENTIAL, especifica que se tiene acceso a los registros en orden ascendente de la clave del registro. La omisin de la clusula ACCESS indica que el archivo tendr acceso secuencial. IS RANDOM, especifica que el orden en el que se tiene acceso a los registros puede ser controlado por el programador (acceso al azar). IS DYNAMIC permite al programador cambiar de acceso secuencial al azar.
FICHEROS EN COBOL 50
25
DECLARACIN EN COBOL
La clusula RECORD KEY indica que el fichero tendr como clave el campo de su estructura referenciado por el nombre de datos especificado a continuacin. Dicho campo debe ser alfanumrico y debe ser un campo en el registro del archivo. La opcin ALTERNATE RECORD KEY especifica una clave secundaria que es una clave de registro alterna para el archivo. Cuando se emplean claves secundarias, podemos tener acceso a los registros con base en la clave primaria especificada en RECORD KEY o en base en a la especificada en ALTERNATE KEY. El fichero, siempre se ordena respecto a la clave primaria. Si se especifica la clusula DUPLICATES, se indica que el valor de la clave alternativa puede estar duplicado.
FICHEROS EN COBOL
51
DECLARACIN EN COBOL
Nombre del fichero interno: ARTCULOS Nombre del fichero externo: ARTICULOS.DAT Dispositivo: DISCO Tipo de fichero: INDEXADO Modo de acceso: SECUENCIAL Nombre del registro: REG-ARTICULOS Clave primaria del fichero: CDIGO.
POSICIN 1-3 4-9 10-15 16 NOMBRE SIMBLICO CDIGO UNIDADES FECHA-REC NOMBRE BYTES 3 6 6 35 0 0 P.DE C TIPO A N N A DESCRIPCIN Cdigo de Artculo Unidades en stock Fecha de Recepcin (ddmmaa) Nombre
FICHEROS EN COBOL
52
26
DECLARACIN EN COBOL
ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT articulos ASSIGN TO DISK articulos.dat ORGANIZATION IS INDEXED ACCESS MODE IS SEQUENTIAL RECORD KEY IS CDIGO.
FICHEROS EN COBOL
53
DESCRIPCIN EN COBOL
Se describen en la DATA DIVISION, en la seccin FILE SECTION a travs de la clusula FD (File Descripcion), Igual que los archivos secuenciales. Uno de los campos de la estructura del fichero debe ser el declarado en la clusula RECORD KEY.
FICHEROS EN COBOL
54
27
OPERACIONES
Apertura de fichero con ndice
FICHEROS EN COBOL
55
OPERACIONES
OPERACIONES DEPENDIENTE DEL MODO DE APERTURA Y MODO DE ACCESO INSTRUCCIN SEQUENTIAL READ WRITE REWRITE START DELETE READ WRITE REWRITE START DELETE READ WRITE REWRITE START DELETE INPUT X X X X X X X X X X X X X X X X X X X X OUTPUT I/O X
RANDOM
DYNAMIC
FICHEROS EN COBOL
56
28
OPERACIONES
Lectura de registros
OPERACIONES
Lectura de registros
FICHEROS EN COBOL
58
29
OPERACIONES
Escritura de Registros
La condicin INVALID KEY es verdadera si: El fichero est abierto en modo OUTPUT y el valor de la clave primaria no es mayor que el valor de la clave primaria para del registro anterior.. El fichero est abierto en modo I/O, y el valor de la clave primaria es igual al valor de la clave primaria de un registro que ya existe en el fichero. Se intenta escribir ms registros que los que se pueden acomodar en el almacenamiento disponible en disco.
OPERACIONES
Reescritura de Registros
Esta operacin consiste en reemplazar el contenido de un registro existente en el fichero. En el momento de la ejecucin de esta operacin el fichero debe estar abierto en modo I/O. El registro que se reemplazar es aquel cuya clave concuerda con el valor de la clave primaria.
FICHEROS EN COBOL
60
30
OPERACIONES
FICHEROS EN COBOL
61
OPERACIONES
Borrado de Registros
FICHEROS EN COBOL
62
31
OPERACIONES
En el momento de la ejecucin de esta operacin el fichero debe estar abierto en modo I/O, ya que debe ir precedida por una instruccin READ satisfactoria.
Si el archivo es declarado con acceso RANDOM o DYNAMIC, la condicin INVALID KEY, se cumple: Cuando el archivo no contiene un registro cuyo valor de la clave primaria concuerde con el valor de la clave del registro que se desea borrar.
DELETE nombre-de-fichero [FROM identificador] [INVALID KEY sentencia] [END-DELETE]
FICHEROS EN COBOL
63
OPERACIONES
Recuperacin secuencial de registros
Permite recuperar secuencialmente los registros desde una posicin diferente al principio del fichero.
IS EQUAL TO IS GREATER THAN IS NOT LESS THAN nombre-de-dato IS GREATER THAN OR EQUAL TO
FICHEROS EN COBOL
64
32
OPERACIONES
El archivo debe tener acceso en modo SEQUENTIAL o DYNAMIC. El archivo debe estar abierto en modo INPUT o I/O. El verbo START se posiciona en el primer registros cuya clave satisface la condicin KEY especificada. El nombre-de-dato especificado puede ser una clave (especificada como RECORD KEY o ALTERNATE RECORD KEY) o la parte inicial de la clave. La condicin INVALID KEY es verdadera si la condicin especificada no es satisfecha por ningn registro.
FICHEROS EN COBOL
65
ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT fuente ASSIGN TO DISK fuente.dat SELECT articulos ASSIGN TO DISK articulos.dat ORGANIZATION IS INDEXED ACCESS MODE IS SEQUENTIAL RECORD KEY IS CDIGO.
FICHEROS EN COBOL
66
33
999. X(47).
XXX. X(47).
FICHEROS EN COBOL
67
P-CREAR FICHERO
F-CREAR FICHERO
ABRIR FUENTE (LEER) ABRIR ARTICULOS (ESCRIBIR LEER FUENTE MOVER REG-FUENTE A REGARTICULOS ESCRIBIR EN ARTICULOS SI NO HAY ERROR LEER FUENTE
CERRAR FICHEROS
FICHEROS EN COBOL
68
34
La condicin INVALID KEY es verdadera si la clave del registro sobre el que se va a escribir es menor que la clave del registro anterior.
FICHEROS EN COBOL
69
Se le pueden aadir registros que irn al rea de excedentes. Se pueden modificar campos (nunca la clave) de sus registros volviendo a grabar el registro sobre si mismo. Se pueden dar de baja registros.
FICHEROS EN COBOL
70
35
FICHEROS EN COBOL
71
FICHEROS EN COBOL
72
36