Clarion - Poner tiempo "DELAY" a Proceso en Lote

 
Vista:
sin imagen de perfil
Val: 8
Ha disminuido su posición en 2 puestos en Clarion (en relación al último mes)
Gráfica de Clarion

Poner tiempo "DELAY" a Proceso en Lote

Publicado por Allan (25 intervenciones) el 19/02/2019 02:15:39
Buenas clarioneros, a ver si alguno tiene el comando o la rutina para algo tan simple pero que se me ha hecho un nudo hacerlo.

Tenemos el procedimiento en lote que envía y consulta las facturas electrónicas a los servidores de Hacienda.

Una vez que se dispara el JSON que hace la consulta, la respuesta que es un archivo TXT puede recibirse en 10, 20 , 30. 40 o más segundos.

Para Clarión una vez que uno disparó el JSON ya lo da por concluido, entonces necesito "hacer tiempo", para esperar que la respuesta se haya recibido.

Para hacer ese tiempo y esperar la respuesta realizo un simple loop de la siguiente manera:
Loop until exists (archivorespuesta)
iiii# = 1
end

Esto funciona muy bien, pero cuando hay varios hilos consultando y los servidores de Hacienda están lentos, el CPU del servidor local se va al 99 o 100% y obvio se pone lento todo.

Existe en Clarion algún comando para hacer dentro de un SOURCE un DELAY, simplemente que no haga nada por un intervalo de segundos dado, o algo que sea menos "consumidor" de recurso que el loop indicado.?


Muchas Gracias por sus consejos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 403
Oro
Ha mantenido su posición en Clarion (en relación al último mes)
Gráfica de Clarion

Poner tiempo "DELAY" a Proceso en Lote

Publicado por Marcelo Madelón (319 intervenciones) el 19/02/2019 12:05:18
Allan


En lugar del loop usa el siguiente código:


SLEEP(100) ! Se duerme un segundo. Fijate en el help que tenes ejemplos
! SLEEP (50) medio segundo
! SLEEP(300) 3 segundos



Espero te sirva

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha disminuido su posición en 2 puestos en Clarion (en relación al último mes)
Gráfica de Clarion

Poner tiempo "DELAY" a Proceso en Lote

Publicado por Allan (25 intervenciones) el 19/02/2019 16:40:21
Muchas gracias por tu sugerencia, pero fijate que en el C 6.3 que uso no tiene ese comando SLEEP.

Algún otro ?

Un abrazo desde San Jose, Costa Rica.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 403
Oro
Ha mantenido su posición en Clarion (en relación al último mes)
Gráfica de Clarion

Poner tiempo "DELAY" a Proceso en Lote

Publicado por Marcelo Madelón (319 intervenciones) el 19/02/2019 23:21:33
Allan

El C6 si tiene el comando sleep. Olvidé decirte que debes agregar código.


El código a agregar en la embeds Globales
en:
Inside The Global Map

Module('Windows.dll')
Sleep(ULong),Pascal
End

Avisa como te fue.

Saludos desde Venado Tuerto - Argentina





Sleep
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 8
Ha disminuido su posición en 2 puestos en Clarion (en relación al último mes)
Gráfica de Clarion

Poner tiempo "DELAY" a Proceso en Lote

Publicado por Allan (25 intervenciones) el 21/02/2019 01:43:58
Marcelo eres un maestro.

Muchas gracias, este tipo de pequeñas cosas son muy útiles para optimizar procesos que se pueden hacer de otra forma, pero que o son muy lentos o en ciertos casos "sientan" el CPU.

Mil gracias !!!

De nuevo un abrazo desde San José, Costa Rica.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 403
Oro
Ha mantenido su posición en Clarion (en relación al último mes)
Gráfica de Clarion

Poner tiempo "DELAY" a Proceso en Lote

Publicado por Marcelo Madelón (319 intervenciones) el 28/02/2019 13:45:29
Allan

Me alegra haber sido útil.
Acá es: Hoy por ti, mañana por mi.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar