Está en la página 1de 36

1

LENGUAJ E ORI ENTADO A


SI STEMAS DE GESTI N
GENERALIDADES SOBRE
FICHEROS
FICHEROS EN COBOL 2
CONCEPTOS PREVI OS
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.
2
FICHEROS EN COBOL 3
CONCEPTOS PREVI OS
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.
FICHEROS EN COBOL 4
CONCEPTOS PREVI OS
.
REGISTRO1 REGISTRO2 REGISTRO3
CAMPOS
REGISTROS
FACTOR DE BLOQUE = 3
3
FICHEROS EN COBOL 5
CARACTER STI CAS
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 6
CLASI FI CACI N SEGN SU USO
Archivos Permanentes
Archivos de constantes.
Archivos maestros.
Archivos histricos.
Archivos de Movimientos
Altas.
Bajas.
Modificacin.
Archivos de Trabajo.
4
FICHEROS EN COBOL 7
OPERACI ONES SOBRE
FI CHEROS
Creacin
Actualizacin
Clasificacin.
Mezcla
Particin
Reorganizacin
Listar o Consultar
FICHEROS EN COBOL 8
ORGANI ZACI N SECUENCI AL
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.
5
FICHEROS EN COBOL 9
ORGANI ZACI N I NDEXADA
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 10
ORGANI ZACI N I NDEXADA
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
6
FICHEROS EN COBOL 11
ORGANI ZACI N I NDEXADA
REG-4 B8 REG-3 B3 REG-2 A2 REG-1 A1
PISTA 01
CAMPO CLAVE
REG-8 D5 REG-7 D2 REG-6 C9 REG-5 C5
PISTA 02
CAMPO CLAVE
REG-12 F8 REG-11 F5 REG-10 E8 REG-9 E3
PISTA 03
CAMPO CLAVE
REG-16 G9 REG-15 G8 REG-14 G7 REG-13 G1
PISTA 04
CAMPO CLAVE
FICHEROS EN COBOL 12
ORGANI ZACI N I NDEXADA
04 G9 03 F8 02 D5 01 B8
REA DE NDICES
CAMPO CLAVE
REA DE EXCEDENTES
7
LENGUAJ E ORI ENTADO A
SI STEMAS DE GESTI N
FICHEROS
SECUENCIALES
FICHEROS EN COBOL 14
DEFI NI CI N
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.
. REGISTRO5 REGISTRO4 REGISTRO3 REGISTRO2 REGISTRO1
8
FICHEROS EN COBOL 15
DECLARACI N Y DESCRI PCI N
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.
Dispositi vo: 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 16
DECLARACI N 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].
9
FICHEROS EN COBOL 17
DECLARACI N EN COBOL
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT articulos ASSIGN TO DISK articulos.dat
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL.
Descripcin A 35 L-CODIGO 16
Fecha de Recepcin (ddmmaa) N 0 6 FECHA-REC 10-15
Unidades en stock N 0 6 UNIDADES 4-9
Cdigo de Artculo A 3 CDIGO 1-3
DESCRIPCIN TIPO P.DEC BYTES
NOMBRE
SIMBLICO
POSICION
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
FICHEROS EN COBOL 18
DESCRI PCI N 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 FDdebe
ser el mismo que el
especificado en la clusula
SELECT.
10
FICHEROS EN COBOL 19
DESCRI PCI N 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 OMITTEDpara los ficheros de impresoras y
STANDARD para los ficheros contenidos en dispositivos de
acceso directo (disco, disco flexible etc.).
Clusula BLOCK CONTAINS.
Los ficheros almacenados en disco se agrupan en un bloque
para hacer ms eficiente la utilizacin del espacio y
aumentar la velocidad de procesamiento.
La clusula BLOCK CONTAINS especifica el nmero de
registros lgicos en un registro fsico o bloque, o el nmero
de caracteres contenidos en un registro.
BLOCK CONTAINS [entero-1 TO] entero-2 {CHARACTERS/RECORDS}
FICHEROS EN COBOL 20
DESCRI PCI N EN COBOL
Clusula RECORDS CONTAINS.
Especifica el tamao de los registros lgicos.
RECORDS CONTAINS [entero-1 TO] entero-2 CHARACTERS
Clusula DATA RECORD.
Esta clusula es usada solo para documentacin.
Los nombre de los registros que aparezcan en esta
clusula deben ser los mismos que aparezcan en
el nivel 01.
DATA RECORD IS nombre de dato-1
11
FICHEROS EN COBOL 21
DESCRI PCI N 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:
Descripcin A 35 L-CODIGO 16-51
Fecha de Recepcin (ddmmaa) N 0 6 FECHA-REC 10-15
Unidades en stock N 0 6 UNIDADES 4-9
Cdigo de Artculo A 3 CDIGO 1-3
DESCRIPCION TIPO P.DEC BYTES NOMBRE
SIMBLICO
POSICION
FICHEROS EN COBOL 22
DESCRI PCI N 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).
12
FICHEROS EN COBOL 23
DESCRI PCI N 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 24
OPERACI ONES
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
OPEN INPUT/OUTPUT/EXTEND/I-O nombre de fichero
13
FICHEROS EN COBOL 25
OPERACI ONES
registro4 registro 3 registro 2 registro 1
CABEZA DE LECTURA
registro4 registro 3 registro 2 registro 1
CABEZA DE LECTURA-ESCRITURA
CABEZA DE ESCRITURA
FICHEROS EN COBOL 26
OPERACI ONES
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.
14
FICHEROS EN COBOL 27
OPERACI ONES
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.
READ fichero [INTO identificador]
[AT END sentencia]
[END-READ]
registro 3
.
registro4 registro 3 registro 2 registro 1
FICHEROS EN COBOL 28
OPERACI ONES
Escritura de un registro
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]
datos
.
registro 3 registro 2 registro 1
15
FICHEROS EN COBOL 29
OPERACI ONES
Reescritura de un registro
Permite rescribir sobre el ltimo registro ledo.
REWRITE registro [FROMIident/literal
[END -REWRITE]
identificador
registro 3
registro 3 registro 2 registro 1
FICHEROS EN COBOL 30
NORMAS GENERALES DE USO
Antes de realizar cualquier operacin con
ficheros, stos se deben abrir.
Al finalizar el proceso se deben cerrar.
Todas las lecturas debern llevar condicin
AT END.
Los registros de un fichero sern tratados en
este orden:
Lectura de primer registro.
Proceso repetitivo hasta el final del fichero, que
comienza con proceso de registro y lectura del
siguiente registro.
16
FICHEROS EN COBOL 31
LECTURA DE TODOS LOS
REGI STROS
Procesar registro puede ser algo
sencillo que no conlleve realizar
ninguna accin repetiti va o
alternati va.
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.
PROCESAR
FICHERO
PROCESAR
REGISTRO
P-PROCESAR
FICHERO
F-PROCESAR
FICHERO
ABRIR FICH
LEER REG
CERRAR FIC
PROCESAR REG
LEER REG
FIN
FICH
FICHEROS EN COBOL 32
CREACI N FI CHERO
CREAR
FICHERO
ESCRIBIR
REGISTRO
P-CREAR
FICHERO
F-CREAR
FICHERO
ABRIR FICH (ESCRIBIR)
ACEPTAR EL PRIMER CAMPO
CERRAR FIC ACEPTAR LOS DEMS CAMPOS
ESCRIBIR REGISTRO
ACEPTAR EL PRIMER CAMPO
CAMPO1 =*
17
FICHEROS EN COBOL 33
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 34
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.
18
FICHEROS EN COBOL 35
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:
Importe de la venta N 0 6 VT_IMP 10-15
Nmero de da N 0 2 VT_DIA 8-9
Nmero del mes N 0 2 VT-MES 6-7
Cdigo de vendedor A 5 VT_EMP 1-5
DESCRIPCIN TIPO P.DEC BYTES NOMBRE
SIMBLICO
POSICIN
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 36
RUPTURAS DE CONTROL
PROGRAMA
TRATAR
FICHERO
RUPTURA
P-PROGRAMA F-PROGRAMA
P-TRATAR-FICHERO F-TRATAR-FICHERO
FIN
FICHERO
FIN FICHERO O
CAMBIO VENDEDOR
T-VEND=0
AUX-VEND=VT-VEND
Visualizar T-VEND
T-EMPR =T-EMPR +T-VEND
C-EMPLE =CEMPLE+1
T-VEND=T-VEND+VT-IMP
leer registro de FVENTAS
Abrir FVENTAS (lectura)
T-EMPR =0
C-EMPLE =0
leer registro de FVENTAS
Visualizar T-EMPR
Visualizar C-EMPL
Cerrar FVENTAS
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.
19
FICHEROS EN COBOL 37
FUSI N DE FI CHEROS
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.
FUSIN
FAGENDA94
FAGENDA95
FAGENDA96
FICHEROS EN COBOL 38
FUSI N DE FI CHEROS
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:
Direccin A 30 DI_CLIEN94 36-65
Nombre A 30 NO_CLIEN94 6-35
Cdigo de Cliente A 5 CO_CLIEN94 1-5
DESCRIPCION TIPO P.DEC BYTES NOMBRE
SIMBLICO
POSICION
20
FICHEROS EN COBOL 39
FUSI N DE FI CHEROS
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:
Direccin A 30 DI_CLIEN95 36-65
Nombre A 30 NO_CLIEN95 6-35
Cdigo de Cliente A 5 CO_CLIEN95 1-5
DESCRIPCION TIPO P.DEC BYTES NOMBRE
SIMBLICO
POSICION
FICHEROS EN COBOL 40
FUSI N DE FI CHEROS
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:
Direccin A 30 DI_CLIEN94 36-65
Nombre A 30 NO_CLIEN96 6-35
Cdigo de Cliente A 5 CO_CLIEN96 1-5
DESCRIPCION TIPO P.DEC BYTES NOMBRE
SIMBLICO
POSICION
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.
21
FICHEROS EN COBOL 41
FUSI N DE FI CHEROS
PROGRAMA
FUSIN P-PROGRAMA 1 2
F-PROGRAMA
MENOR
MAYOR IGUAL
NO-MENOR
R1
C1
C2
(1)
(2)
(3) (4)
(7)
FICHEROS EN COBOL 42
FUSI N DE FI CHEROS
CO_CLIEN94 >CO_CLIEN95 C2
CO_CLIEN94 <CO_CLIEN95 C1
Fin de Fagenda95 R3
Fin de Fagenda94 R2
Fin de Fagenda94 o bien fin de Fagenda95 R1
1
TERMINAR94
2
TERMINAR95
R2
R3
(5)
(6)
22
FICHEROS EN COBOL 43
FUSI N DE FI CHEROS
CERRAR FICHEROS (7)
MOVER LOS CAMPOS DE FAGENDA95 A FAGENDA96
GRABAR EN FAGENDA96
LEER REG-FAGENDA95
(6)
MOVER LOS CAMPOS DE FAGENDA94 A FAGENDA96
GRABAR EN FAGENDA96
LEER REG-FAGENDA94
(5)
MOVER LOS CAMPOS DE FAGENDA95 A FAGENDA96
GRABAR EN FAGENDA96
LEER REG-FAGENDA94
LEER REG-FAGENDA95
(4)
MOVER LOS CAMPOS DE FAGENDA95 A FAGENDA96
GRABAR EN FAGENDA96
LEER REG-FAGENDA95
(3)
MOVER LOS CAMPOS DE FAGENDA94 A FAGENDA96
GRABAR EN FAGENDA96
LEER REG-FAGENDA94
(2)
ABRIR FAGENDA94 (L)
ABRIR FAGENDA95(L)
ABRIR FAGENDA96(E)
LEER REG-FAGENDA94
LEER REG-FAGENDA95
(1)
FICHEROS EN COBOL 44
FUSI N DE FI CHEROS
PROGRAMA
FUSIN P-PROGRAMA
F-PROGRAMA
MENOR
MAYOR IGUAL
NO-MENOR
R1
C1
C2
(1)
(2)
CO_CLIEN94 >CO_CLIEN95 C2
CO_CLIEN94 <CO_CLIEN95 C1
CO_CLIEN94 = HIGH-VALUE y CO_CLIEN95 =
HIGH-VALUE
R1
Mtodo De HIGH-VALUE
READ REG-FAGENDA94
AT END
MOVE HIGH-VALUE TO CO_CLIEN94
23
FICHEROS EN COBOL 45
FUSI N DE FI CHEROS
CERRAR FICHEROS (5)
MOVER LOS CAMPOS DE FAGENDA95 A FAGENDA96
GRABAR EN FAGENDA96
LEER REG-FAGENDA94
LEER REG-FAGENDA95
(4)
MOVER LOS CAMPOS DE FAGENDA95 A FAGENDA96
GRABAR EN FAGENDA96
LEER REG-FAGENDA95
(3)
MOVER LOS CAMPOS DE FAGENDA94 A FAGENDA96
GRABAR EN FAGENDA96
LEER REG-FAGENDA94
(2)
ABRIR FAGENDA94 (L)
ABRIR FAGENDA95(L)
ABRIR FAGENDA96(E)
LEER REG-FAGENDA94
LEER REG-FAGENDA95
(1)
FICHEROS EN COBOL 46
ACTUALI ZACI N DE FI CHEROS
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.
24
FICHEROS EN COBOL 47
ACTUALI ZACI N DE FI CHEROS
Si el fichero Maestro tiene la
siguiente estructura:
CAMPO1-CAMPO2-CAMPO3-
CAMPO4
El fichero de movimientos
contendr la estructura siguiente:
TIPO-MVTO-CAMPO1-CAMPO2-
CAMPO3-CAMPO4
Donde:
TIPO-MVTO contendr una
constante para indicar si el registro
se debe dar de alta, modificar o
eliminar.
Ambos ficheros debern estar
ordenados por un mismo campo,
por ejemplo, CAMPO1.
MAESTRO MVTOS
NUEVO
MAESTRO
ERRORES
ACTUALIZACIN
LENGUAJ E ORI ENTADO A
SI STEMAS DE GESTI N
FICHEROS INDEXADOS
25
FICHEROS EN COBOL 49
DECLARACI N 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 50
DECLARACI N 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.
26
FICHEROS EN COBOL 51
DECLARACI N 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 52
DECLARACI N 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.
Nombre A 35 NOMBRE 16
Fecha de Recepcin (ddmmaa) N 0 6 FECHA-REC 10-15
Unidades en stock N 0 6 UNIDADES 4-9
Cdigo de Artculo A 3 CDIGO 1-3
DESCRIPCIN TIPO P.DE
C
BYTES NOMBRE
SIMBLICO
POSICIN
27
FICHEROS EN COBOL 53
DECLARACI N 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 54
DESCRI PCI N 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.
28
FICHEROS EN COBOL 55
OPERACI ONES
Apertura de fichero con ndice
OPEN INPUT/OUTPUT/I-O nombre de
fichero
Cierre de un fichero con ndice
CLOSE nombre de fichero
FICHEROS EN COBOL 56
OPERACI ONES
X
X
X
X
X
X
X
X
READ
WRITE
REWRITE
START
DELETE
DYNAMIC
X
X
X
X
X
X READ
WRITE
REWRITE
START
DELETE
RANDOM
X
X
X
X
X
X
X
READ
WRITE
REWRITE
START
DELETE
SEQUENTIAL
I/O OUTPUT INPUT INSTRUCCIN
OPERACIONES DEPENDIENTE DEL MODO DE APERTURA Y MODO DE ACCESO
29
FICHEROS EN COBOL 57
OPERACI ONES
Lectura de registros
Si el modo de acceso es SEQUENTIAL.
Si el modo de acceso es RANDOM.
READ fichero [INTO identificador]
[AT END sentencia]
[END-READ]
READ fichero [INTO identificador]
KEY IS nombre-de-dato
[INVALID KEY sentencia]
[END-READ]
FICHEROS EN COBOL 58
OPERACI ONES
Lectura de registros
Si el modo de acceso es DYNAMIC.
READ fichero NEXT RECORD [INTO identificador]
[AT END sentencia]
[END-READ]
READ fichero [INTO identificador]
KEY IS nombre-de-dato
[INVALID KEY sentencia]
[END-READ]
30
FICHEROS EN COBOL 59
OPERACI ONES
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.
WRITE nombre-de-registro [FROM identificador]
[INVALID KEY sentencia]
[END-WRITE]
FICHEROS EN COBOL 60
OPERACI ONES
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.
REWRITE nombre-de-registro [FROM identificador]
[INVALID KEY sentencia]
[END-REWRITE]
31
FICHEROS EN COBOL 61
OPERACI ONES
La condicin INVALIDKEY se cumple:
Cuando el valor de la clave en el registro que se va
a reemplazar no concuerda con el valor de la clave
del ltimo registro ledo.
Cuando el valor de la clave no es igual a la clave
de ningn registro existente en el fichero.
REWRITE nombre-de-registro [FROM identificador]
[INVALID KEY sentencia]
[END-REWRITE]
FICHEROS EN COBOL 62
OPERACI ONES
Borrado de Registros
Esta operacin elimina lgicamente un
registro de un archivo secuencial con ndice.
DELETE nombre-de-fichero [FROM identificador]
[INVALID KEY sentencia]
[END-DELETE]
32
FICHEROS EN COBOL 63
OPERACI ONES
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 READsatisfactoria.
Si el archivo es declarado con acceso RANDOMo
DYNAMIC, la condicin INVALIDKEY, 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 64
OPERACI ONES
Recuperacin secuencial de registros
Permite recuperar secuencialmente los registros
desde una posicin diferente al principio del fichero.
IS EQUAL TO
IS GREATER THAN
START nombre-de-fichero KEY IS NOT LESS THAN nombre-de-dato
IS GREATER THAN
OR EQUAL TO
[INVALID KEY sentencia]
[END-START]
33
FICHEROS EN COBOL 65
OPERACI ONES
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 66
CREACI N FI CHERO I NDEXADO
A la hora de crear un fichero secuencial indexado, es
conveniente grabar sus registros mediante acceso secuencial,
en orden creciente de claves.
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.
34
FICHEROS EN COBOL 67
CREACI N FI CHERO I NDEXADO
DATA DIVISION:
FILE SECTION.
FD FUENTE
DATA RECORD IS REG-FUENTE.
01 REG-FUENTE.
02 COD-FUENTE PIC 999.
02 MAS-DATOS-FUENTE PIC X(47).
FD ARTICULOS
DATA RECORD IS REG-ARTICULO.
01 REG-ARTICULO.
02 CDIGO PIC XXX.
02 MAS-DATOS PIC X(47).
FICHEROS EN COBOL 68
CREACI N FI CHERO I NDEXADO
CREAR
FICHERO
ESCRIBIR
REGISTRO
P-CREAR
FICHERO
F-CREAR
FICHERO
ABRIR FUENTE (LEER)
ABRIR ARTICULOS (ESCRIBIR
LEER FUENTE
CERRAR
FICHEROS
MOVER REG-FUENTE A REG-
ARTICULOS
ESCRIBIR EN ARTICULOS SI NO
HAY ERROR
LEER FUENTE
FIN FICHERO FUENTE
35
FICHEROS EN COBOL 69
CREACI N FI CHERO I NDEXADO
MOVE COD-FUENTE TO CDIGO.
MOVE MAS-DATOS-FUENTE TO MAS-DATOS.
WRITE REG-ARTICULOS
INVALID KEY PERFORM ERROR.
READ FUENTE AT END MOVE si TO FIN-FICHERO.
CDIGO est declarado
como RECORD KEY en la
instruccin
SELECT del fichero
ARTICULOS.
La condicin INVALIDKEY 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 70
MANTENI MI ENTO FI CHERO
I NDEXADO
Actualizar un fichero consiste en aadir al mismo los
registros que sean alta, eliminar los que sean baja y
modificar ciertos campos de algunos registros.
Cuando el fichero maestro tiene organizacin secuencial
indexada, las actualizaciones se pueden realizar sobre el
mismo fichero, ya que:
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.
36
FICHEROS EN COBOL 71
ACTUALI ZACI N I NDEXADO DESDE
UN FI CHERO DE MOVI MI ENTOS
Consiste en ir almacenando, en un fichero secuencial de
movimientos, durante un periodo de tiempo, todas las altas,
bajas y modificaciones que se produzcan sobre los registros
de un fichero secuencial indexado para su posterior
actualizacin.
Este proceso se denomina por lotes.
ACTUALIZACIN
MAESTRO
MOVIMIENTOS
FICHEROS EN COBOL 72
ACTUALI ZACI N I NDEXADO DESDE
UN FI CHERO DE MOVI MI ENTOS
Si el fichero de movimientos est ordenado de forma
ascendente por el campo clave, y el nmero de registros
para actualizar del maestro es grande en comparacin
con el nmero de registros del fichero, puede ser
conveniente tratar al fichero secuencial indexado como
un secuencial.
Si el fichero de movimientos no est ordenado, o el
nmero de registros para actualizar del maestro es
pequeo en comparacin con el nmero de registros del
fichero, entonces la actualizacin se realiza leyendo
secuencialmente el fichero de movimientos, accediendo
al fichero indexado por el campo clave, y realizando la
operacin de actualizacin correspondiente.

También podría gustarte