Creo que lo de usar una cola de datos, si no se le va a enviar nada por ella, es una solución un poco demasiado complicada para el problema que originó la pregunta. Probablemente , el utilizar DLYJOB en un trabajo sin fin le fuera suficiente. Tendría, en todo caso, mirarse el tema de arrancar un trabajo automático en un subsistema, si lo quiere tener en marcha sin necesidad de lanzarlo cada vez.


Saludos


El 30/11/2015 a las 18:19, Bernabé Estrada escribió:
la llamada es a una api del AS, similar a cuando se llama al QCMDEXEC.
Se crea una cola de datos, le ponemos una longitud pequeña, porque no nos va a servir nada mas que para el delay.
CRTDTAQ DTAQ(BIBLIOTECA/COLA) MAXLEN(3)

Ahora, dentro de nuestro programa que queremos que tenga el delay, hacemos la llamada a la API y con los parametros de la cola que acabamos de crear y el tiempo que queremos que espere.

C     1             DO        50     
C                   exsr      Miproceso
C** Espera                                
C                   Call      'QRCVDTAQ'                             
C                   Parm      COLA          ColaInput        10      
C                   Parm      BIBLIOTECA    BiblInput        10      
C                   Parm      3             LongInput         5 0    
C                   Parm      *BLANKS       DataInput         3      
C                   Parm      TiempoSegundosTimeInput         5 0    
C                   If        DataInput = 'FIN'                            
C                   leave                                            
C                   Endif  
C** Fin espera                                          
C                   ENDDO                                            

Como bien te comentaban anteriormente, se puede utilizar para hacer que el proceso termine controladamente, si le mandamos algun valor en la cola de datos, entonces, en el campo Datainput recuperamos el valor y lo podemos comparar. Por ejemplo, si viene el valor FIN, que termine.  Si esta en blanco, espera el tiempo que lleve la varialbe TiempoSegundos antes de continuar el proceso.  Si algo se ingresa en la cola, es leido inmediatamente, por supuesto, todo esto va dentro de un ciclo, por ejemplo, podes ponerle una hora de fin, o podes ponerle un numero de veces determinado, etc. etc.

Saludos.
 

El 30 de noviembre de 2015, 10:32, Joss DJ <[email protected]> escribió:
Estimados buen día.
 
Gracias a todos por su ayuda, sin embargo me surgen unas dudas; cuando mencionan que se tiene que crear una cola de datos a que se refieren, tengo que crearla¿?
 
Noto también que le hacen un llamado a un programa, esto es después de crear la cola de datos o como funciona¿?
 
Gracias por su apoyo! 
 
Saludos Cordiales,
José JD.
 

Subject: Re: Llamado de programa con delay
To: [email protected]
From: [email protected]
Date: Fri, 27 Nov 2015 15:48:37 +0100


Si, claro, este sistema suele ser mejor cuando se trata de un proceso que tiene que atender determinados eventos  y actuar en consecuencia sin  necesidad de que espere a que se cumpla el tiempo de espera: cuando recibe un evento por la cola lo procesa de inmediato, y si no, da una vuelta igual al bucle cuando finaliza el tiempo de espera.

También puede servir para el ejemplo anterior: si se quiere que un proceso que se ejecuta cada cierto tiempo pueda finalizarse de forma controlada, puede hacerse que reciba un  mensaje en la cola que le hace salirse, y así el bucle puede hacerse permanente hasta que llega este mensaje.

Las  colas de datos, la verdad es que son un mecanismo muy sólido para hacer colaborar procesos...

Saludos.

El 27/11/2015 a las 14:56, Bernabé Estrada escribió:
También se puede crear una cola de datos y leerla con un tiempo de espera que puede ser paramétrico:
C                   Call      'QRCVDTAQ'                          
C                   Parm      Cola_Input    ColaInput        10   
C                   Parm      Biblioteca    BiblInput        10   
C                   Parm      tamaño_cola   LongInput         5 0 
C                   Parm      *BLANKS       DataIn_S         10   
C                   Parm      TiemposegundosTimeInput         5 0 

Con esto hay un delay del proceso sin que consuma ningún recurso.

Saludos.

El 27 de noviembre de 2015, 1:47, Juan Carlos Paredes Castañón <[email protected]> escribió:
Yo haría un proceso batch en el que crees un bucle que ejecute el programa, haga un DLYJOB DLY(30) y vuelva arriba. Algo así:
 
DCL VAR(&FIN) TYPE(*LGL)
DOWHILE COND(&FIN = '0')
  CALL PGM(PROGRAMA) PARM(&FIN)
  DLYJOB DLY(30)
ENDDO
RETURN
 
En la variable &FIN, desde el programa, le devuelves un '0' mientras quieras que siga ejecutándose y un '1' cuando quieras que se salga.
Un saludo.
Juan Carlos.
El 27/11/2015 05:14, Joss DJ escribió:
Hola Foro,
 
Reciban un cordial saludo y aprovecho para solicitar de nueva cuenta su ayuda, alguno de ustedes me podría ilustrar como mandar llamar un programa cada determinado tiempo¿? Es decir, necesito hacer el llamado a un programa cada 30 segundos para actualizar cierta información en el sistema.
 
De antemano gracias por el apoyo recibido. 
 
Saludos Cordiales,
José DJ.

____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.



____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

--

Jesus Busquets

Dir. T.I.

[email protected]
Grespania, S.A.
FacebookPinterestYoutube
Este mensaje se dirige exclusivamente a su destinatario y puede contener información privilegiada o confidencial. Si no es Vd. el destinatario indicado, queda notificado de que la utilización, divulgación y/o copia sin autorización está prohibida en virtud de la legislación vigente. Si ha recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente por esta misma vía y proceda a su destrucción.
 

____________________________________________________ �nete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 � Publicaciones Help400, S.L.

____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.



____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

--

Jesus Busquets

Dir. T.I.

[email protected]

Grespania, S.A.

FacebookPinterestYoutube

Este mensaje se dirige exclusivamente a su destinatario y puede contener información privilegiada o confidencial. Si no es Vd. el destinatario indicado, queda notificado de que la utilización, divulgación y/o copia sin autorización está prohibida en virtud de la legislación vigente. Si ha recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente por esta misma vía y proceda a su destrucción.

 


____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Responder a