Cobol en español
MANUALES
TEMATICOS
BASES DE DATOS
COBOL / WINDOWS
COBOL / UNIX
HISTORIA /DOCS
PROGRAMANDO-Dos
TRUCOS
AÑO 2.000
TEORIA POWCOB-3
PROG. POWCOB-3
TEORIA POWCOB-5
PROG. POWCOB-5
OCX-ESCOBOL
Temáticos
TEMARIOCódigos de Error
Ventanas
Palabras Reservadas
Clasificando (Sort)
Tablas
Ficheros (I)
Ficheros (II)
Ficheros (III)

Ficheros (III)

página(s) : 2/2
(1089 palabras totales en este texto)
(33589 Lecturas)   Versión Imprimible



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) Anterior |    Inicio de Página   
Sitio desarrollado con PHP-Nuke. Todos los Derechos Reservados.
PHP-Nuke es un Software Libre realizado con licencia GNU/GPL.
Página creada en Junio de 1.998, con el proposito de difundir el lenguaje Cobol en nuestra lengua.
Andres Montes [98/11]