|
 |
 |
Ficheros (II)
página(s) : 1/3 (1615 palabras totales en este texto) (36842 Lecturas) 
Cuando empezamos a trabajar con ficheros, a veces se nos plantean muchas dudas sobre el hecho de tener que leer de mas de un fichero a la vez. Son muchas las preguntas que me habéis planteado sobre este tema, así que aquí, en esta segunda parte dedicada a los ficheros voy a intentar que quede resuelta con un ejemplo práctico.
La situación
Vamos a utilizar un fichero de albaranes que a su vez integra una tabla.
Dos ficheros maestros, clientes y productos.
Un fichero de impresora.
¿Que vamos a hacer? Vamos a leer secuencialmente el fichero de albaranes. Al mismo tiempo vamos a extraer el nombre del cliente y además vamos a actualizar las existencias de los productos. También vamos a ir generando una línea de impresora por cada albarán con el importe total del mismo.
Lo primero que hacemos es iniciar nuestro programa con las dos divisiones primeras, donde indicamos el nombre del programa y los ficheros con los que vamos a trabajar.
Empezamos con nuestro programa:
IDENTIFICATION DIVISION.
PROGRAM-ID. FICHEROS.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES. DECIMAL-POINT IS COMMA.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT ALBARANES ASSIGN TO RANDOM "ALBARANES.DAT"
ORGANIZATION INDEXED ACCESS DYNAMIC
RECORD KEY ALB-NUMERO
FILE STATUS STA-ALBA.
SELECT CLIENTES ASSIGN TO RANDOM "CLIENTES.DAT"
ORGANIZATION INDEXED ACCESS RANDOM
RECORD KEY CLI-CODIGO
FILE STATUS STA-CLIEN.
SELECT PRODUCTOS ASSIGN TO RANDOM "PRODUCTOS.DAT"
ORGANIZATION INDEXED ACCESS RANDOM
RECORD KEY PRO-CODIGO
FILE STATUS STA-PRODU.
SELECT IMPRE ASSIGN TO PRINT "PRINTER1".
Como veis al archivo de albaranes le hemos indicado un acceso dinámico porque lo vamos a leer secuencialmente, mientras que a los ficheros maestros un acceso directo, ya que los vamos a acceder por su código.
A continuación describimos los campos de cada uno de los ficheros.
DATA DIVISION.
FILE SECTION.
FD ALBARANES LABEL RECORD STANDARD.
01 REGALBA.
02 ALB-NUMERO PIC 9(6).
02 ALB-FECHA PIC 9(8).
02 ALB-CLIENTE PIC 9(4).
02 ALB-ELEMENTOS OCCURS 10 TIMES.
03 ALB-PRODUCTO PIC 9(4).
03 ALB-CANTIDAD PIC 9(6)V99.
03 ALB-PRECIO PIC 9(6)V99.
FD CLIENTES LABEL RECORD STANDARD.
01 REGCLIEN.
02 CLI-CODIGO PIC 9(4).
02 CLI-NOMBRE PIC X(40).
02 CLI-DOMICILIO PIC X(40).
02 CLI-POBLACION PIC X(30).
02 CLI-PROVINCIA PIC X(20).
02 CLI-NIF PIC X(10).
FD PRODUCTOS LABEL RECORD STANDARD.
01 REGPRODU.
02 PRO-CODIGO PIC 9(4).
02 PRO-NOMBRE PIC X(40).
02 PRO-EXISTENCIAS PIC S9(6)V99.
02 PRO-PROVEEDOR PIC 9(4).
02 PRO-UNIMEDIDA PIC X(20).
FD IMPRE LABEL RECORD OMITTED.
01 LINEA PIC X(80).
........... | | (2/3) |
|
|