Cobol en español
  Página de Inicio Recomiéndala Contáctame Usuarios en Linea
13
     Crea Una cuenta  
Video 1
Video 2
Video 3

Si te ha servido la web
o te han gustado los videos, colabora haciendo click en el botón.

MANUALES
TEMATICOS
BASES DE DATOS
COBOL / WINDOWS
COBOL / UNIX
HISTORIA /DOCS
 
BUSCADOR
PROGRAMANDO-Dos
TRUCOS
AÑO 2.000
TEORIA POWCOB-3
PROG. POWCOB-3
TEORIA POWCOB-5
PROG. POWCOB-5
OCX-ESCOBOL
RUTINAS/MANUALES
OCX / JUEGOS
HERRAMIENTAS
COMPILADORES
ENCUESTAS
ENLACES
FOROS
TOP 10

CHAT   Usuarios: 1
Programando en Windows (PowerCobol-3)
TEMARIO1.- Comienza la Aplicación
2.- Diseñando la Pantalla
3.- Eventos de la ventana
4.- La Procedure
5.- Progr. Controles (I)
6.- Progr. Controles (II)
7.- La Pantalla de Consulta
8.- Clasificando y FIN
>> agenda.exe e iconos <<

8.- Clasificando y FIN

página(s) : 1/2
(5107 palabras totales en este texto)
(19834 Lecturas)   Versión Imprimible



EL EVENTO OPENED

En el capítulo anterior nos quedo por el evento que se produce al abrir la ventana, es decir, el que se produce en el OPENED. En el vamos a rellenar la tabla con los registros que tenemos en el fichero de Agenda y además crearemos el gráfico y totalizaremos por tipos de contactos.

En primer lugar nos definiremos una Working propia para trabajar sobre algunas variables, como contadores y la tabla con los tipos de contactos. Para seguir con la estructura de programación que he utilizado durante todo el curso, voy a utilizar párrafos y sentencias GOTO, pero tengo intención de hacer un especial sobre programación estructurada en la que explicaré las diferencias entre un tipo de programación y otro, con ejemplos, así que ahora seguiré como siempre.

Fijaros que el párrafo UNO, lo utilizamos para leer el fichero de principio a fin e ir rellenando los campos que componen la tabla. El párrafo DOS lo utilizamos para construir el gráfico tomando como valor máximo el del tipo de contacto mayor.

PROGRAMACION EVENTO OPENED
      ENVIRONMENT DIVISION.
      DATA DIVISION.
      WORKING-STORAGE SECTION.
      01  COLUMNAS PIC 9999.
      01  CUENTA   PIC 999.
      01  TIPO1    PIC 9(4).
      01  TIPO2    PIC 9(4).
      01  TIPO3    PIC 9(4).
      01  TIPO4    PIC 9(4).
      01  TIPO5    PIC 9(4).
      01  DEBA     PIC 9(4).
      01  MAX      PIC 9(4).
      01  GENH     PIC 9(4).
      01  GENM     PIC 9(4).
      01  TIPO     PIC X(12).
      01  LNUMERO.
             02  LNUM PIC ZZ.ZZ9.
      01  TABLATIPOS.
            02  FILLER PIC X(15) VALUE "PERSONAL       ".
            02  FILLER PIC X(15) VALUE "PROFESIONAL".
            02  FILLER PIC X(15) VALUE "FAMILIAR".
            02  FILLER PIC X(15) VALUE "EMPRESAS".
            02  FILLER PIC X(15) VALUE "SANITARIO".
      01  TABLITIPOS REDEFINES TABLATIPOS.
            02  ELETIP PIC X(15) OCCURS 5 TIMES.

      PROCEDURE DIVISION.
      INICIO SECTION.
             CLOSE AGENDA.
             OPEN INPUT AGENDA.
             OPEN OUTPUT CLASI.
             MOVE 0 TO POW-VISIBLE OF TABLA.
             MOVE 0 TO CCC TIPO1 TIPO2 TIPO3 TIPO4 TIPO5 GENH GENM.
      UNO.
             READ AGENDA NEXT RECORD AT END GO DOS.
             ADD 1 TO CCC.
             MOVE CCC TO POW-ROWS OF TABLA.
             CALL SETCELLNUMERIC OF TABLA USING AGECOD CCC 1
             MOVE AGECOD TO CLACOD.
             CALL SETCELLTEXT OF TABLA USING AGENOM CCC 2
             MOVE AGENOM TO CLANOM.
             CALL SETCELLTEXT OF TABLA USING AGEDOM CCC 3
             MOVE AGEDOM TO CLADOM.
             CALL SETCELLNUMERIC OF TABLA USING AGEPOS CCC 4
             MOVE AGEPOS TO CLAPOS.
             CALL SETCELLTEXT OF TABLA USING AGEPOB CCC 5
             MOVE AGEPOB TO CLAPOB.
             CALL SETCELLTEXT OF TABLA USING AGEPRO CCC 6
             MOVE AGEPRO TO CLAPRO.
             MOVE ELETIP (AGETIP) TO TIPO.
             CALL SETCELLTEXT OF TABLA USING TIPO CCC 7
             MOVE TIPO TO CLATIP.
             CALL SETCELLTEXT OF TABLA USING AGETEL CCC 8
             MOVE AGETEL TO CLATEL.
             CALL SETCELLTEXT OF TABLA USING AGEMOV CCC 9
             MOVE AGEMOV TO CLAMOV.
             CALL SETCELLTEXT OF TABLA USING AGEMAI CCC 10
             MOVE AGEMAI TO CLAMAI.
             WRITE REGCLA.

             EVALUATE AGETIP
                   WHEN 1 ADD 1 TO TIPO1
                   WHEN 2 ADD 1 TO TIPO2
                   WHEN 3 ADD 1 TO TIPO3
                   WHEN 4 ADD 1 TO TIPO4
                   WHEN 5 ADD 1 TO TIPO5
             END-EVALUATE
             EVALUATE AGEGEN
                   WHEN "H" ADD 1 TO GENH
                   WHEN "M" ADD 1 TO GENM
             END-EVALUATE
             GO UNO.

      DOS.
              MOVE 1 TO POW-VISIBLE OF TABLA.
              MOVE CCC  TO LNUM MOVE LNUMERO TO POW-TEXT OF TOTAL.
              MOVE GENH TO LNUM MOVE LNUMERO TO POW-TEXT OF DEH.
              MOVE GENM TO LNUM MOVE LNUMERO TO POW-TEXT OF DEM.
              IF TIPO1 > TIPO2 AND TIPO1 > TIPO3 AND TIPO1 > TIPO4 AND TIPO1 > TIPO5
                   COMPUTE MAX = TIPO1 + 2.
              IF TIPO2 > TIPO1 AND TIPO2 > TIPO3 AND TIPO2 > TIPO4 AND TIPO2 > TIPO5
                   COMPUTE MAX = TIPO2 + 2.
              IF TIPO3 > TIPO1 AND TIPO3 > TIPO2 AND TIPO3 > TIPO4 AND TIPO3 > TIPO5
                   COMPUTE MAX = TIPO3 + 2.
              IF TIPO4 > TIPO1 AND TIPO4 > TIPO2 AND TIPO4 > TIPO3 AND TIPO4 > TIPO5
                   COMPUTE MAX = TIPO4 + 2.
              IF TIPO5 > TIPO1 AND TIPO5 > TIPO2 AND TIPO5 > TIPO3 AND TIPO5 > TIPO4
                   COMPUTE MAX = TIPO5 + 2.
              MOVE MAX TO POW-UPPER OF GRAFICO.
              MOVE TIPO1 TO LNUM MOVE LNUMERO TO POW-TEXT OF DE1.
              MOVE TIPO1 TO POW-DATA (1) OF GRAFICO.
              MOVE POW-RED TO POW-DATACOLOR (1) OF GRAFICO.
              MOVE TIPO2 TO LNUM MOVE LNUMERO TO POW-TEXT OF DE2.
              MOVE TIPO2 TO POW-DATA (2) OF GRAFICO.
              MOVE POW-BLUE TO POW-DATACOLOR (2) OF GRAFICO.
              MOVE TIPO3 TO LNUM MOVE LNUMERO TO POW-TEXT OF DE3.
              MOVE TIPO3 TO POW-DATA (3) OF GRAFICO.
              MOVE POW-BLACK TO POW-DATACOLOR (3) OF GRAFICO.
              MOVE TIPO4 TO LNUM MOVE LNUMERO TO POW-TEXT OF DE4.
              MOVE TIPO4 TO POW-DATA (4) OF GRAFICO.
              MOVE POW-DARKGREEN TO POW-DATACOLOR (4) OF GRAFICO.
              MOVE TIPO5 TO LNUM MOVE LNUMERO TO POW-TEXT OF DE5.
              MOVE TIPO5 TO POW-DATA (5) OF GRAFICO.
              MOVE POW-YELLOW TO POW-DATACOLOR (5) OF GRAFICO.
              CLOSE AGENDA CLASI OPEN I-O AGENDA.
              EXIT PROGRAM.


Con los eventos vistos hasta el momento al llamar a la pantalla de consultas desde la pantalla principal nos saldrá perfectamente ésta pantalla. Pero sigamos con los demás eventos.

Para abandonar la pantalla, pulsaremos sobre el botón salir y producirá el siguiente evento. La variable AHIVA, es la que vamos a utilizar para pasar el valor de un contacto si es que pinchamos sobre el para que nos vuelva a la pantalla de mantenimiento. En este caso al darle a salir, le mandamos 0.

Control: SALIR
Evento : CLICK
Programación
     ENVIRONMENT DIVISION.
     DATA        DIVISION.
     PROCEDURE   DIVISION.
            MOVE 0 TO AHIVA
            CALL CLOSESHEET OF CONSULTA.


Para imprimir la tabla utilizamos el botón listar y se producirá el siguiente evento. En este caso utilizamos una ventana de confirmación previa y fijaros de que forma tan simple conseguimos un listado muy bueno de nuestro fichero con el mínimo esfuerzo. Aunque no será aplicable a todos los casos, si que en muchos de ellos nos va a servir.

Control: LISTAR
Evento : CLICK
Programación
     ENVIRONMENT DIVISION.
     DATA        DIVISION.
     PROCEDURE   DIVISION.
            ADD POW-DMYESNO POW-DMICONQUESTION GIVING ESTILO
            CALL DISPLAYMESSAGE OF CONSULTA USING "Listar ?" "Mensaje" ESTILO
            IF PROGRAM-STATUS = POW-DMRYES GO UNO ELSE GO FINALIZAR.
     UNO.
            CALL OPENPRINTER OF PRINTCON
            CALL WRITESHEET OF PRINTCON
            CALL CLOSEPRINTER OF PRINTCON
            EXIT PROGRAM.
      FINALIZAR.
            EXIT PROGRAM.


Ahora vamos a ver la programación del evento DBCLICK en la tabla. Con el podremos hacer dos cosas. Una es seleccionar un contacto para llevarlo a la pantalla de mantenimiento, para lo cual comprobamos que la fila sobre la que se ha hecho el DBCLICK no sea la 0, entonces nos envía al párrafo UNO donde salimos de ésta ventana enviando los datos del código del contacto en la variable AHIVA, de tal manera que al entrar el foco de nuevo en la pantalla de mantenimiento se ejecutará en esa el evento CLOSECHILD y como la variable AHIVA lleva un valor hará lo indicado, que es mostrar dicho contacto.

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