|
 |
 |
Ficheros (III)
página(s) : 2/2 (1089 palabras totales en este texto) (34068 Lecturas) 
Es una tarea muy común con la que cualquier programador se va a encontrar en algún momento, ya sea para paso a Excel o Access o a cualquier otra aplicación externa a nuestros programas, que tenga alguna opción de importación de datos.
Voy a aprovechar también para asignar el nombre del fichero dentro del programa dependiendo de la fecha.
Empecemos ... por el principio.
IDENTIFICATION DIVISION.
PROGRAM-ID. TRASPASO.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES. DECIMAL-POINT IS COMMA.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT CLIENTES ASSIGN TO RANDOM "CLIENTES.DAT"
ORGANIZATION INDEXED ACCESS DYNAMIC RECORD CLA-CLI
FILE STATUS STA-CLI.
SELECT TRASPASO ASSIGN TO RANDOM ELNOMBRE
ORGANIZATION LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD CLIENTES LABER RECORD STANDARD.
01 REG-CLIENTES.
02 CLI-CODIGO PIC 9(6).
02 CLI-NOMBRE PIC X(30).
02 CLI-DOMICILIO PIC X(30).
02 CLI-CPOSTAL PIC 9(5).
02 CLI-POBLACION PIC X(30).
02 CLI-PROVINCIA PIC X(20).
FD TRASPASO LABEL RECORD STANDARD.
01 REG-TRASPASO.
02 TRA-CODIGO PIC 9(6).
02 TRA-SEP1 PIC X.
02 TRA-NOMBRE PIC X(30).
02 TRA-SEP2 PIC X.
02 TRA-DOMICILIO PIC X(30).
02 TRA-SEP3 PIC X.
02 TRA-CPOSTAL PIC 9(5).
02 TRA-SEP4 PIC X.
02 TRA-POBLACION PIC X(30).
02 TRA-SEP5 PIC X.
02 TRA-PROVINCIA PIC X(20).
WORKING-STORAGE SECTION.
01 TABLAMES.
02 FILLER PIC X(30) VALUE 'ENEFEBMARABRMAYJUNJULAGOSEPOCT'.
02 FILLER PIC X(6) VALUE 'NOVDIC'.
01 TABLIMES REDEFINES TABLAMES.
02 ELEMES PIC XXX OCCURS 12 TIMES.
01 FECHA PIC 9(6).
01 FECHO REDEFINES FECHA.
02 FANIO PIC 99.
02 FMES PIC 99.
02 FDIA PIC 99.
01 NOMBREAR.
02 NOM-MES PIC XXX.
02 NOM-ANIO PIC 99.
02 NOM-SEP PIC X.
02 NOM-DIA PIC 99.
02 NOM-EXT PIC XXXX.
01 FINFIC PIC X.
PROCEDURE DIVISION.
INICIO.
ACCEPT FECHA FROM DATE
MOVE ELEMES (FMES) TO NOM-MES
MOVE FANIO TO NOM-ANIO
MOVE FDIA TO NOM-DIA
MOVE '-' TO NOM-SEP MOVE '.TXT' TO NOM-EXT
MOVE NOMBREAR TO ELNOMBRE
OPEN INPUT CLIENTES OUTPUT TRASPASO
MOVE ' ' TO FINFIC
PERFORM UNTIL FINFIC = 'S'
READ CLIENTES NEXT RECORD AT END MOVE 'S' TO FINFIC
NOT AT END
MOVE CLI-CODIGO TO TRA-CODIGO
MOVE CLI-NOMBRE TO TRA-NOMBRE
MOVE CLI-DOMICILIO TO TRA-DOMICILIO
MOVE CLI-CPOSTAL TO TRA-CPOSTAL
MOVE CLI-POBLACION TO TRA-POBLACION
MOVE CLI-PROVINCIA TO TRA-PROVINCIA
MOVE '|' TO TRA-SEP1 TRA-SEP2 TRA-SEP3 TRA-SEP4 TRA-SEP5
WRITE REG-TRASPASO
END-READ
END-PERFORM
CLOSE TRASPASO CLIENTES
STOP RUN.
El separador entre campos ha sido el carácter 124, que se obtiene pulsando AltGr+1, pero también podemos definirlo como hexadecimal como PIC X VALUE '7C'. Si lo que deseamos es mandar le enviamos el valor hexadecimal 9, para ello definimos una variable en la WORKING, por ejemplo:
01 TABU PIC X VALUE H"09".
Y luego le enviamos esa variable a los campos de separación. Como véis el nombre del fichero de traspaso se ha formado a partir de la fecha del sistema, con lo que si lo hubieramos ejecutado hoy, el nombre del fichero resultante, hubiera sido: MAR03-28.TXT.
Con éste capítulo doy por terminada la sección dedicada a los ficheros, espero que como siempre os digo, os sirva y os ayude a comprender mejor el funcionamiento de los ficheros en Cobol. | (1/2) | |
|
|