Método:
Son procedimientos que ya vienen programados por el lenguaje y nosotros
solo tendremos que llamarlos para que actúen. Son métodos, añadir
campos a un Combobox, enviar el foco a cualquier objeto, abrir una
ventana, cerrarla, etc ... Como veremos cada uno de los objetos puede
tener sus propios métodos.
Para acceder a todos los métodos se utilizará la sentencia CALL, quedando su formato
de la siguente manera:
CALL método OF objeto USING parámetros.
A continuación vamos a explicar algunos de los métodos mas habituales.
Pero como siempre os digo, en los ejemplos prácticos es donde mejor se
comprende todo.
METODO
DESCRIPCION
ADDSTRING
ADDSTRING256
Para
añadir elementos a objetos ListBox y ComboBox. CALL ADDSTRING OF LISTA USING "PRIMER ELEMENTO".
ALARM
Aplicable
solo en los Sheet y produce un sonido, podemos escoger entre
varios predefinidos.POW-MBOK, POW-MBASTERISK, POW-MBQUESTION, POW-MBEXCLAMATION,
POW-MBHAND. CALL ALARM OF SHEET1 USING POW-MBOK.
CLEARLIST
Aplicable
a ListBox y ComboBox, conseguimos reiniciar los objetos de tal
manera que quedan vacios completamente. CALL CLEARLIST OF LISTA.
OPENPRINTER
WHITESHEET
CLOSEPRINTER
Solo
para el objeto Print. Abrimos y cerramos el objeto Print, para
provocar una salida por impresora de los objetos de nuestra
pantalla que tengan la opción PrnEnable activada. CALL OPENPRINTER OF IMPRESORA.
CALL WRITESHEET OF VENTANA1.
CALL CLOSEPRINTER OF IMPRESORA.
CLOSESHEET
Aplicable
solo a las ventanas, con ello las cerramos. CALL CLOSESHEET OF VENTANA1.
DELETESTRING
Aplicable
a los controles ListBox y ComboBox, y conseguimos borrar un
elemento de la lista. CALL DELETESTRING OF LISTA USING 1.
DISPLAYMESSAGE
Se
va a explicar en la parte final. Por ser un método muy utilizado
y util.
GETCELLNUMERIC
GETCELLTEXT
Aplicable
a las tablas y conseguimos extraer el contenido de las celdas, ya
sean numéricas o alfanuméricas. En el ejemplo moveremos a la
variable VALOR, el contenido de la celda situada en la columna 1
línea 1 de la tabla llamada TABLA. CALL GETCELLTEXT OF TABLA USING VALOR 1 1.
OPENSHEET
Aplicable
solo a las Sheet y con ella las abrimos. Las ventanas siempre
dependen de una padre. CALL OPENSHEET OF PRINCIPAL USING "SEGUNDA".
SETCELLNUMERIC
SETCELLTEXT
Aplicable
a las tablas y conseguimos introducir un valor en las celdas, ya
sean numéricas o alfanuméricas. En el ejemplo moveremos el valor
"HOLA" a la celda situada en la columna 1 línea 1 de la
tabla llamada TABLA. CALL SETCELLTEXT OF TABLA USING "HOLA" 1 1.
SETFOCUS
Aplicable
a la mayoría de los controles. Con el conseguimos pasar el foco
de un objeto a otro. CALL SETFOCUS OF LISTA.
Existen muchos mas métodos, pero estos son los mas utilizados. Veamos como un ejemplo
sencillo como rellenaríamos un ListBox a partir de una tabla definida en
la Working. Siendo LISTA l nombre que tiene nuestro ComboBox o ListBox. Y
además tenemos una tabla con dos columnas, en la primera introducimos el
número y en la segunda su nombre.
WORKING-STORAGE SECTION.
01 TABLA.
02 FILLER PIC X(10) VALUE
"PRIMERO".
02 FILLER PIC X(10) VALUE
"SEGUNDO".
02 FILLER PIC X(10) VALUE
"TERCERO".
02 FILLER PIC X(10) VALUE
"CUARTO".
02 FILLER PIC X(10) VALUE
"QUINTO".
01 TABLITA REDEFINES TABLA.
02 ELEMEN PIC X(10) OCCURS 5 TIMES.
01 CONTA PIC 9.
01 CAMPO PIC X(10).
...
PROCEDURE DIVISION.
INICIO.
MOVE 0 TO CONTA.
UNO.
ADD 1 TO CONTA IF CONTA > 5 GO
DOS.
* aqui cargamos el ComboBox.
CALL ADDSTRING OF LISTA USING ELEMEN (CONTA).
* aqui cargamos la tabla.
CALL SETCELLNUMERIC OF TABLA USING CONTA
CONTA 1.
MOVE ELEMEN (CONTA) TO CAMPO.
* en la version 3 de PowerCobol da error si introducimos un campo
* con subindice directamente en una tabla, por eso primero lo
* muevo a un
campo.
CALL SETCELLTEXT OF TABLA USING CAMPO
CONTA 2.
GO UNO.
DOS.
EXIT.
Después de ejecutar el programa:
el ComboBox nos hubiera quedado asi:
Y la tabla hubiera quedado asi:
1
PRIMERO
2
SEGUNDO
3
TERCERO
4
CUARTO
5
QUINTO
DISPLAYMESSAGE
Con este método de PowerCobol, conseguimos que se nos muestre una ventana
independiente pero sin perder el control sobre la que tenemos activa. Son
las típicas ventanas de confirmación de Windows y tienen unos
parámetros pre-asignados. A continuación vamos a ver algunos ejemplos y
como quedan en la práctica.
Su formato, como cualquier otro método es el siguiente:
CALL DISPLAYMESSAGE OF nombredeventana USING texto título estilo.
Texto:
el texto hace referencia al texto que nos saldrá al mostrar el
mensaje en la ventana.
Título:
el título hace referencia al título que tendrá la venta que
nos saldrá.
Estilo:
El estilo se refiere al icono que tendrá la ventana y a las
posibles opciones que se nos presenten, en cuanto a los ICONOS:
POW-DMNOICON, sin icono.
POW-DMICONSTOP, icono con el símbolo Stop.
POW-DMICONQUESTION, icono de interrogación.
POW-DMICONEXCLAMATION, icono con el signo de exclamación.
POW-DMICONINFORMATION, icono con una (i).
Estilo:
En cuanto a los botones:
POW-DMOK, solo el botón de Ok.
POW-DMOKCANCEL, botones de Ok y Cancelar.
POW-DMABORTRETRYIGNORE, botones de Abortar, Reintentar e Ignorar.
POW-DMYESNOCANCEL, botones de Si, No y Cancelar.
POW-DMYESNO, botones de Si y No.
POW-DMRETRYCANCEL, botones de Reintentar y Cancelar.
Respuestas:
las posibles respuestas al pulsar los distintos botones.
POW-DMROK, si hemos pulsado el boton de Ok.
POW-DMRCANCEL, si pulsamos Cancelar.
POW-DMRABORT, si pulsamos Abortar.
POW-DMRRETRY, si pulsamos Reintentar.
POW-DMRIGNORE, si pulsamos ignorar.
POW-DMRYES, si pulsamos Si.
POW-DMRNO, si pulsamos No.
El estilo se debe de guardar en una varible con el formato: 01 ESTILO PIC
S9(4) COMP-5. Y para introducir los valores que deseemos lo haremos de
la siguente manera:
ADD POW-DMYESNO POW-DMICONQUESTION GIVING ESTILO.
De esta manera asignamos al estilo el icono de Interrogación y los
botones de Si y No, quedando nuestra orden completa de la siguiente
manera, teniendo la ventana donde saldrá el nombre de VENTANA1:
WORKING-STORAGE SECTION.
01 ESTILO PIC S9(4) COMP-5.
01 TITULO PIC X(20).
01 TEXTO PIC X(40).
...
PROCEDURE DIVISION.
INICIO.
ADD POW-DMYESNO POW-DMICONQUESTION
GIVING ESTILO.
MOVE "Mensaje" TO TITULO.
MOVE "Salir de la aplicación
?" TO TEXTO.
CALL DISPLAYMESSAGE OF VENTANA1 USING
TITULO TEXTO ESTILO.
....
Ahora
nos saldrá la correspondiente ventana con el mensaje y entonces puede
que le demos al botón del Si o al del No, para controlarlo utilizamos
la siguiente instrucción:
IF
PROGRAM-STATUS = POW-DMRYES MOVE "HAS PULSADO SI" TO
POW-TEXT OF TEXTODEEXPLICACION.
IF PROGRAM-STATUS = POW-DMRNO MOVE
"HAS PULSADO NO" TO POW-TEXT OF TEXTODEEXPLICACION.