Anda di halaman 1dari 36

LENGUAJE ORIENTADO A SISTEMAS DE GESTIN

GENERALIDADES SOBRE FICHEROS

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

CLASIFICACIN SEGN SU USO


Archivos Permanentes

Archivos de constantes. Archivos maestros. Archivos histricos.

Archivos de Movimientos
Altas. Bajas. Modificacin.

Archivos de Trabajo.
FICHEROS EN COBOL 6

OPERACIONES SOBRE FICHEROS


Creacin Actualizacin Clasificacin. Mezcla Particin Reorganizacin Listar o Consultar

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

CAMPO CLAVE PISTA 02 C5 REG-5 C9 REG-6 D2 REG-7 D5 REG-8

PISTA 03 E3 REG-9 E8

CAMPO CLAVE REG-10 F5 REG-11 F8 REG-12

CAMPO CLAVE PISTA 04 G1 REG-13 G7 REG-14 G8 REG-15 G9 REG-16

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

LENGUAJE ORIENTADO A SISTEMAS DE GESTIN

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

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.).

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

19

DESCRIPCIN 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

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

OPEN INPUT/OUTPUT/EXTEND/I-O nombre de fichero

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

READ fichero [INTO identificador] [AT END sentencia] [END-READ]


FICHEROS EN COBOL 27

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

Permite rescribir sobre el ltimo registro ledo.

registro 1

registro 2

registro 3

registro 3 identificador

REWRITE registro [FROM Iident/literal [END -REWRITE]


FICHEROS EN COBOL 29

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.

FICHEROS EN COBOL

30

15

LECTURA DE TODOS LOS REGISTROS


PROCESAR FICHERO

P-PROCESAR FICHERO

PROCESAR REGISTRO FIN FICH

F-PROCESAR FICHERO

ABRIR FICH LEER REG PROCESAR REG LEER REG

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

ABRIR FICH (ESCRIBIR) ACEPTAR EL PRIMER CAMPO

ACEPTAR LOS DEMS CAMPOS ESCRIBIR REGISTRO ACEPTAR EL PRIMER CAMPO

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

POSICIN 1-5 6-7 8-9 10-15

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

F-PROGRAMA FIN FICHERO

Abrir FVENTAS (lectura) T-EMPR = 0 C-EMPLE = 0 leer registro de FVENTAS

Visualizar T-EMPR Visualizar C-EMPL Cerrar FVENTAS

P-TRATAR-FICHERO

RUPTURA

FIN FICHERO O CAMBIO VENDEDOR

F-TRATAR-FICHERO

T-VEND = 0 AUX-VEND = VT-VEND

T-VEND = T-VEND + VT-IMP leer registro de FVENTAS

Visualizar T-VEND T-EMPR = T-EMPR +T-VEND C-EMPLE = CEMPLE+ 1

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.

FAGENDA94 FUSIN FAGENDA95 FAGENDA96

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

POSICION 1-5 6-35 36-65

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

POSICION 1-5 6-35 36-65

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)

(4) FICHEROS EN COBOL 41

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_CLIEN94 = HIGH-VALUE HIGH-VALUE CO_CLIEN94 < CO_CLIEN95 CO_CLIEN94 > CO_CLIEN95

CO_CLIEN95 =

C1 C2

P-PROGRAMA

FUSIN

F-PROGRAMA

(1) C1
MENOR

R1

Mtodo De HIGH-VALUE READ REG-FAGENDA94 AT END MOVE HIGH-VALUE TO CO_CLIEN94


NO-MENOR

(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

El fichero de movimientos contendr la estructura siguiente:


ACTUALIZACIN TIPO-MVTO-CAMPO1-CAMPO2CAMPO3-CAMPO4 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.

Donde:

NUEVO MAESTRO ERRORES

FICHEROS EN COBOL

47

LENGUAJE ORIENTADO A SISTEMAS DE GESTIN

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

OPEN INPUT/OUTPUT/I-O nombre de


fichero

Cierre de un fichero con ndice

CLOSE nombre de fichero

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

Si el modo de acceso es SEQUENTIAL.


READ fichero [INTO identificador] [AT END sentencia] [END-READ]

Si el modo de acceso es RANDOM.


READ fichero [INTO identificador] KEY IS nombre-de-dato [INVALID KEY sentencia] [END-READ]
FICHEROS EN COBOL 57

OPERACIONES
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]

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.

WRITE nombre-de-registro [FROM identificador] [INVALID KEY sentencia] [END-WRITE]


FICHEROS EN COBOL 59

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.

REWRITE nombre-de-registro [FROM identificador] [INVALID KEY sentencia] [END-REWRITE]

FICHEROS EN COBOL

60

30

OPERACIONES

La condicin INVALID KEY 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

61

OPERACIONES
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]

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.

START nombre-de-fichero KEY

IS EQUAL TO IS GREATER THAN IS NOT LESS THAN nombre-de-dato IS GREATER THAN OR EQUAL TO

[INVALID KEY sentencia] [END-START]

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

CREACIN FICHERO INDEXADO


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.

FICHEROS EN COBOL

66

33

CREACIN FICHERO INDEXADO


DATA DIVISION: FILE SECTION. FD FUENTE DATA RECORD IS REG-FUENTE. 01 REG-FUENTE. 02 COD-FUENTE PIC 02 MAS-DATOS-FUENTE PIC FD ARTICULOS DATA RECORD IS REG-ARTICULO. 01 REG-ARTICULO. 02 CDIGO PIC 02 MAS-DATOS PIC

999. X(47).

XXX. X(47).

FICHEROS EN COBOL

67

CREACIN FICHERO INDEXADO


CREAR FICHERO

P-CREAR FICHERO

ESCRIBIR REGISTRO FIN FICHERO FUENTE

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

CREACIN FICHERO INDEXADO


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 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

MANTENIMIENTO FICHERO INDEXADO


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.

FICHEROS EN COBOL

70

35

ACTUALIZACIN INDEXADO DESDE UN FICHERO DE MOVIMIENTOS


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.
MAESTRO ACTUALIZACIN MOVIMIENTOS

FICHEROS EN COBOL

71

ACTUALIZACIN INDEXADO DESDE UN FICHERO DE MOVIMIENTOS


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.

FICHEROS EN COBOL

72

36

Anda mungkin juga menyukai