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)

Tablas

página(s) : 2/3
(17674 palabras totales en este texto)
(60577 Lecturas)   Versión Imprimible



VARIAS DIMENSIONES O NIVELES

Todas las que hemos visto son de una dimensión, pero se pueden definir de mas niveles y convertirlas en matrices. Por ejemplo ahora vamos a diferenciar en la tabla, además del número de visitas, si han sido hombres o mujeres, para ello creamos una nueva dimensión quedando la tabla de la siguiente manera:

    01  DIASEMANA.
         02  GENERO
              03  VISITAS

OCCURS 2 TIMES.
PIC 9(4)  OCCURS 7 TIMES.
    Como veis nuestra tabla contiene dos cláusulas OCCURS, con ello hemos conseguido crear una matriz de 2 x 7, ahora la variable VISITAS tendrá 14 elementos. Para dirigirnos a ellos utilizaremos dos subíndices. En nuestro caso al diferenciar el género, identificaremos con el valor 1 a los hombres y con el 2 a las mujeres. Veamos como rellenamos la tabla ahora:

      MOVE 110 TO VISITAS (1, 1) MOVE 90 TO VISITAS (2, 1).
      MOVE 130 TO VISITAS (1, 2) MOVE 300 TO VISITAS (2, 2).
      MOVE 100 TO VISITAS (1, 3) MOVE 36 TO VISITAS (2, 3).
      MOVE 250 TO VISITAS (1, 4) MOVE 225 TO VISITAS (2, 4).
      MOVE 190 TO VISITAS (1, 5) MOVE 190 TO VISITAS (2, 5).
      MOVE 1000 TO VISITAS (1, 6) MOVE 910 TO VISITAS (2, 6).
      MOVE 1100 TO VISITAS (1, 7) MOVE 1200 TO VISITAS (2, 7).

    Por supuesto al igual que antes los subíndices pueden ser sustituidos por variables. Por ejemplo, sabiendo los datos anteriores vamos a sumar todas las mujeres que entraron en la semana y todos los hombres y vamos a averiguar cual fue el día de mayor visitas y el día de menor asistencia.

    WORKING-STORAGE SECTION.
    01  DIA         PIC 9.
    01  LVISITAS PIC Z.ZZ9.
    01  MAYOR    PIC 9(4) VALUE 0.
    01  MENOR    PIC 9(4) VALUE 9999.
    01  DIAMAYOR PIC 9.
    01  DIAMENOR PIC 9.
    01  TOTAL    PIC 9(4).
    01  HOMBRES PIC 9(4).
    01  MUJERES PIC 9(4).
    ...
    PROCEDURE DIVISION.
    ...
        MOVE 0 TO DIA.
    MIRAR.
        ADD 1 TO DIA IF DIA > 7 GO FIN.
        ADD VISITAS (1, DIA) TO HOMBRES.
        ADD VISITAS (2, DIA) TO MUJERES.
        COMPUTE TOTAL = VISITAS (1, DIA) + VISITAS (2, DIA).
        IF TOTAL > MAYOR MOVE TOTAL TO MAYOR
                                  MOVE DIA TO DIAMAYOR.
        IF TOTAL < MENOR MOVE TOTAL TO MENOR
                                  MOVE DIA TO DIAMENOR.
        GO MIRAR.
    FIN.
      DISPLAY "TOTAL HOMBRES " LINE 10 COL 10 ERASE.
        MOVE HOMBRES TO LVISITAS.
        DISPLAY LVISITAS LINE 10 COL 35.

        DISPLAY "TOTAL MUJERES " LINE 11 COL 10.
        MOVE MUJERES TO LVISITAS.
        DISPLAY LVISITAS LINE 11 COL 35.

        DISPLAY "----------------------------------"
                    LINE 12 COL 10.
        DISPLAY "TOTAL VISITAS " LINE 13 COL 10.
        COMPUTE LVISITAS = HOMBRES + MUJERES.
        DISPLAY LVISITAS LINE 13 COL 35.
        DISPLAY "----------------------------------"
                    LINE 14 COL 10.

        DISPLAY "DIA MAYOR " LINE 15 COL 10.
        DISPLAY TSEM (DIAMAYOR) LINE 15 COL 22.
        MOVE MAYOR TO LVISITAS.
        DISPLAY LVISITAS LINE 15 COL 35.

        DISPLAY "DIA MENOR" LINE 17 COL 10.
        DISPLAY TSEM (DIAMENOR) LINE 17 COL 22.
        MOVE MENOR TO LVISITAS.
        DISPLAY LVISITAS LINE 17 COL 35.
        ACCEPT OP LINE 20.
    ...

    LLENANDO TABLAS

    Ahora imaginamos que los datos de la tabla de visitas, en vez de asignarlos con un MOVE como hemos hecho en los ejemplos anteriores, los vamos a pedir mediante ACCEPT en un programa. Vamos a hacer un pequeño programa para que veais como quedaría:

    WORKING-STORAGE SECTION.
    01  DIASEMANA.
         02  GENERO       OCCURS 2 TIMES.
              03  VISITA   PIC 9(4) OCCURS 7 TIMES.
    01  SUB1       PIC 9.
    01  SUB2       PIC 9.
    01  OP          PIC X.
    01  LGENERO  PIC X(7).
    ...
    PROCEDURE DIVISION.
    INICIO.
        DISPLAY "CAPTURA DE DATOS" LINE 2 COL 10 ERASE.
        MOVE 0 TO SUB1 SUB2.
    METER.
        ADD 1 TO SUB2 IF SUB2 > 7 GO FIN.
        MOVE 0 TO SUB1.
    METER1.
        ADD 1 TO SUB1 IF SUB1 > 2 GO METER.
        IF SUB1 = 1 MOVE "HOMBRES" TO LGENERO ELSE
                         MOVE "MUJERES" TO LGENERO.
        DISPLAY "VISITAS DE " LINE 10 COL 10.
        DISPLAY LGENERO LINE 10 COL 21.
        DISPLAY "EL DIA" LINE 10 COL 29.
        DISPLAY TSEM (SUB2) LINE 10 COL 37.
        ACCEPT VISITAS (SUB1, SUB2) LINE 10 COL 50.
        GO METER1.
    FIN.
        DISPLAY "PROCESO DE CAPTURA FINALIZADO"
                    LINE 20 COL 20.
        ACCEPT OP LINE 20 COL 1.

    ...
    Ahora podríamos incluir el código anterior y que nos calcule el día de mayor y menor visitas y la suma por géneros.

(1/3) Anterior |    Inicio de Página    | Siguiente (3/3)
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]