Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Sintaxis] Ralentizar el evento (https://www.cobolforo.es/showthread.php?t=926)

Breew 4 de diciembre de 2018 07:59

Ralentizar el evento
 
Hola.
Intento enviar dos mail consecutivos mediante el dde-word
Hago una llamada al sistema y utilizo el programa Blat para enviar el correo.
A continuacion lo vuelvo a enviar a una segunda direccion de correo.

El problema que tengo es que lo hace tan rapidamente que solo sale uno de ellos, omitiendo el otro.
Quisiera que enviara el primero y pasen unos segundos para enviar el segundo .



Mediante el comando

Código COBOL:
  1.          MOVE PARAMETROS-EMAIL TO DDE-WORD.
  2.  
  3.      INVOKE CmDDE2 "Execute" USING DDE-WORD POW-SWSHOWMAXIMIZED RETURNING ReturnValue.
  4. * Start timer
  5.      COMPUTE SW-TIMER = 1.
  6.      
  7.      MOVE POW-TRUE TO  "Active" OF CmTimer1.
  8.           PERFORM UNTIL SW-TIMER = 0 END-PERFORM.     *>RETRASO LA ACCION
  9.                                                                             *>PERO SE QUEDA EN BUCLE
  10.      MOVE POW-FALSE TO "Active" OF CmTimer1.
  11.  
  12. *cambio PARAMETROS-EMAIL
  13. MOVE PARAMETROS-EMAIL TO DDE-WORD.
  14.  
  15.      INVOKE CmDDE2 "Execute" USING DDE-WORD POW-SWSHOWMAXIMIZED RETURNING ReturnValue.
  16.  
  17. *
Código COBOL:
  1. **************timer
  2.  ENVIRONMENT     DIVISION.
  3.  DATA            DIVISION.
  4.  WORKING-STORAGE SECTION.
  5.  01 SW-TIMER     PIC 99  GLOBAL EXTERNAL.
  6.  
  7.  PROCEDURE       DIVISION.
  8.      DISPLAY SW-TIMER .
  9.      COMPUTE SW-TIMER = 0.
Lo intento ralentizar con el timer, pero el evento se queda en bucle .

Como podria darle tiempo a que salieran los dos correos?

Gracias.

Fito 4 de diciembre de 2018 13:43

Hola:

Por qué en vez de usar un control DDE, no usas el método "ExecuteSync" del formulario?

Código COBOL:
  1. INVOKE pow-self "ExecuteSync" USING CommandLine [Show] RETURNING ReturnValue

Saludos.

Fito...

Kuk 4 de diciembre de 2018 21:49

Breew, también puedes usar la API sleep: Sleep function | Microsoft Docs

Código COBOL:
  1.      CALL "Sleep" WITH STDCALL USING BY VALUE 1000 *> en milisegundos, 1000 = 1 segundo

Breew 4 de diciembre de 2018 22:41

Hola Fito.

Ahora funciona correctamente.
¿ Que diferencia hay entre usar una y otra ?

Gracias

---------- Post added at 22:41 ---------- Previous post was at 22:30 ----------

Hola Kuk.

Me lo voy a mirar con cariño, ya que creo que es muy interesante para enviar/ocultar mensajes al usuario.

Con el timer, no me acabo de aclarar muy bien ;-)

Gracias

Fito 5 de diciembre de 2018 12:53

Hola:

En el Formulario tenemos dos métodos para llamar procesos externos, el "Execute" y el "ExecuteSync". El primero funciona igua que el del control DDE, llama y sigue el flujo de tu programa. En cambio el segundo llama y espera que termine el proceso llamado para seguir.

Saludos.

Fito...


La franja horaria es GMT +2. Ahora son las 02:45.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.