Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Fujitsu COBOL PowerCOBOL (ActiveX, v4 - v11)
PowerCOBOL (ActiveX, v4 - v11) Versiones del IDE basadas en ActiveX
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Componente] Cómo usar el Timer orlando PowerCOBOL (ActiveX, v4 - v11) 3 1 de febrero de 2021 21:14
[Sintaxis] Uso Equivalente al Timer Anthony AcuCobol 6 25 de marzo de 2019 19:40
[Sintaxis] Cancelar proceso en bucle desde otro Form Fito PowerCOBOL (ActiveX, v4 - v11) 2 29 de agosto de 2017 00:58
[Sintaxis] PowerCOBOL 7 crear archivo Excel con varias hojas drvedia1981 PowerCOBOL (ActiveX, v4 - v11) 2 10 de abril de 2017 16:34
[Sintaxis] Evento Timer de más de 65535 ms Josber PowerCOBOL (ActiveX, v4 - v11) 4 8 de junio de 2016 16:19

Respuesta
 
Herramientas

  #1
Antiguo 4 de agosto de 2017, 21:36
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492
Teimpo Crear pausa en un bucle con un Timer
0 Inactivo Inactivo

Tengo un Timer a 1001 milisegundos, y lo necesito en un proceso, que toma la fecha y la hora del sistema para crear unos códigos únicos con un bucle, una vez creado el primero, activo el timer, todo dentro de un bucle perform, y vuelvo a cargar la fecha y hora, así hasta el final. Dento del evento del timer, lo único que tengo es la desactivación del timer, el resto es desde un botón, pero no me funciona el timer, ¿puede ser que no se pueda usar el timer por estar dentro de un perform?

Un saludo.-
Josber is offline   Responder Con Cita
  #2
Antiguo 6 de agosto de 2017, 09:34
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Josber, según entiendo, si en el evento Timer no tienes nada, ¿intentas que haga una especie de pausa en tu PERFORM? Si es así, no va a funcionar, porque par la "pausa" hay que ejecutar el código dentro del evento Timer.



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #3
Antiguo 7 de agosto de 2017, 09:39
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

Sí kuk, eso es lo que necesito, tengo una rejilla, que puede contener uno o mil registros, a esos registros hay que crearles un campo que es el que creo con la fecha y la hora, por lo que necesito que se cree cada campo con, al menos, un segundo de diferencia, para que no tengan el mismo valor un campo con el anterior.

Lo que hace la rutina es leer la rejilla desde el primero hasta el último con un perform, y dentro del evento timer, se crea el código que necesito y se actualiza la rejilla informando que ese campo se ha creado, pero no funciona.

Éste es el código que uso:

Código COBOL:
  1.      MOVE "Count" OF VIEW2 TO CONTA1.
  2.  
  3.      PERFORM VARYING CONTA FROM 1 BY 1
  4.              UNTIL CONTA > CONTA1
  5.  
  6.                    MOVE 1           TO "Active" OF TIMER1
  7.                    MOVE CONTA   TO "Value"  OF PROGRESO
  8.  
  9.      END-PERFORM.

Un saludo.-
Josber is offline   Responder Con Cita
  #4
Antiguo 7 de agosto de 2017, 15:39
Fito
Guardián del Foro
Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros Guardián del Foro: Guardián del espíritu y clima del Foro - Issue reason: Por el Avatar Activista del Foro: Activista del Foro - Issue reason: Por aportar ideas 
Última Actividad 19.09.2026 13:19
Posts Posts: 458
Likes enviados Enviados: 267
Likes recibidos Recibidos: 243

hola:

Por qué no tomas la hora la primera vez y después le sumás conta a esa variable. Con el Timer me parece que no te va a funcionar.

Saludos.

Fito...
Fito is offline   Responder Con Cita
  #5
Antiguo 7 de agosto de 2017, 16:36
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

Citación del post de Fito Ver Mensaje
hola:

Por qué no tomas la hora la primera vez y después le sumás conta a esa variable. Con el Timer me parece que no te va a funcionar.

Saludos.

Fito...
Gracias Fito, estaba ya barajando esa posibilidad, porque no atino a solucionar la otra forma.

Un saludo.-
Josber is offline   Responder Con Cita
  #6
Antiguo 7 de agosto de 2017, 16:59
Fito
Guardián del Foro
Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros Guardián del Foro: Guardián del espíritu y clima del Foro - Issue reason: Por el Avatar Activista del Foro: Activista del Foro - Issue reason: Por aportar ideas 
Última Actividad 19.09.2026 13:19
Posts Posts: 458
Likes enviados Enviados: 267
Likes recibidos Recibidos: 243

hola:

No tengo mucha experiencia en el uso del timer, a lo mejor estoy diciendo una burrada, pero me parece que el timer corre en un hilo paralelo, no te va a "frenar" el proceso.

Saludos.

Fito...
Fito is offline   Responder Con Cita
  #7
Antiguo 7 de agosto de 2017, 22:38
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Josber, por lo pronto, que yo sepa puedes usar FUNCTION CURRENT-DATE o ACCEPT FROM TIME y ambos te sacan los milisegundos. En cuanto al timer, sí que va a funcionar. Lo que debes hacer es lo siguiente:

Defines tus CONTA como GLOBAL en la WORKING del Form.
En el botón (o donde tengas el inicio del proceso) haces:

Código COBOL:
  1.      MOVE POW-TRUE  TO "Active" OF CmTimer1

En el Timer haces:
Código COBOL:
  1.      IF  CONTA <= CONTA1
  2.          MOVE FUNCTION CURRENT-DATE(pos:lon) TO TU_GRILLA
  3.          ...
  4.      ELSE
  5.          MOVE POW-FALSE TO "Active" OF CmTimer1
  6.      END-IF

Pero de todos modos, hacer esperar al cliente 1000 segundos por ello me parece un poco demasiado. Creo que si lo haces con el bucle cogiendo los milisegundos obtendrás valores diferentes. En el peor de los casos, mete en el bucle una llamada a la WinAPI "Sleep" pasandole 1 milisegundo y tema resuleto



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #8
Antiguo 7 de agosto de 2017, 22:44
Hrmcobol
Guardián del Foro
Guardián del Foro: Guardián del espíritu y clima del Foro - Issue reason: Por implicación en la vida del Foro 
Última Actividad 01.03.2022 02:59
Posts Posts: 323
Likes enviados Enviados: 102
Likes recibidos Recibidos: 120

Hola Amigos !!!!, el timer corre independiente del perform, es como te dice fito, o por lo menos es lo que me parece a mi también, yo tomo la hora de 8 dígitos, Horas-Minutos-Segundos-Centésimas. Según el código que pusiste el Habilitar o no el timer no detendrá el proceso.
Saludos
Hrm
Hrmcobol is offline   Responder Con Cita
  #9
Antiguo 8 de agosto de 2017, 19:17
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

A ver, al final he hecho lo de aceptar la fecha/hora, sumar 1 a un contador y fuera, Kuk, ya no he probado lo que has puesto, pero estoy con Fito y Hrmcobol, me da que el timer corre independientemente del perform, o por lo menos esa es la experiencia que he tenido.

Kuk, en cuanto a hacer esperar al cliente 1000 segundos, no es así, son milisegundos, osea 1 segundo por cada registro y como normalmente no son más de 100 registros, no hay problemas por eso. Todo viene porque se "olvidan" de introducir un código de barras EAN-13, y para que no esté repetido, lo calculo con la fecha, en formato AAMMDDHHMMSS, que suman doce más el dígito de control, así me aseguro de que nunca haya uno repetido, de ahí venía el tener que hacer una pausa de 1 segundo entre registro y registro.

Un saludo y gracias a todos.-
Josber is offline   Responder Con Cita
Respuesta



Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:20.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.