Fil d’Ariane du forum – Vous êtes ici :ForumForums techniques: AS/400progamme "en attente d'enregistre …
Vous devez vous identifier pour créer des messages et des sujets.

progamme "en attente d'enregistrements"

Bonjour,

je souhaite réaliser une sorte de service windows, mais sur le 400. (vieille version v5r2)

en gros on recupere des pointages d'un portail. il faut régulièrement intégrer ces pointages dans notre système.
il y a un gros programme qui vérifie la validité des pointages, les personnes ayant pointé etc.. etc..

bref.

l'idée c'est que ce programme se déclenche à chaque fois qu'un enregistrement de pointage est écrit dans un fichier particulier (ex POINSCAN)

actuellement j'ai fait un CL qui utilise la methode RCVMSG avec le WAIT , qui me lance le programme en question toutes les x minutes. mais cela signifie ouverture du programme, allocation des fichiers etc...

Mais un ancien gapiste m'a dit qu'il existait une méthode pour que mon programme rpg soit "en veille":

la méthode serait que le fameux fichier soit lu en boucle, mais que celui ci soit sans fin de fichier déclarée. (donc plus besoin du CL en RCVMSG )
Ainsi dès qu'un enreg "tombe" dans le fichier il est traité par le programme.
et quand il n'y a pas d'enreg il ne se passe rien (pas de conso de la memoire etc...) . Pour interrompre le programme on lui passe un enregistrement particulier (genre code = "FF") et on gere le seton LR uniquement dans ce cas dans le prog.
Limite : il faudrait pour cela que le fichier soit déclaré aussi sans clef primaire.

est ce que quelqu'un connait cette méthode ?
quelqu'un a déjà essayé et pourrait me guider ? faut il déclarer le fichier en primaire (cycle gap) ?

cordialement

 

 

Bonjour

sur un OVRDBF paramètre EOFDLY :

Temps attente sur EOF en sec (EOFDLY) - Aide

Indique, en secondes, le temps que doit attendre le programme une fois
arrivé à la fin du fichier, avant d'essayer de lire d'autres
enregistrements.  Ce délai d'attente permet à d'autres travaux d'ajouter
des enregistrements au fichier et à ceux-ci d'être traités sans qu'il
soit nécessaire de relancer le travail.  Lorsque le temps d'attente est
écoulé, le travail devient actif et le gestionnaire de données détermine
si de nouveaux enregistrements ont été ajoutés.  Si ce n'est pas le cas,
le travail attend un nouveau délai sans en informer le programme
d'application.  Lorsqu'un délai est indiqué, aucune condition de fin de
fichier ne se produit sur le fichier base de données concerné, à moins
que la commande ENDJOB (Arrêter un travail) ne soit entrée ou qu'une fin
de données forcée (FEOD) ne soit effectuée.

 

Cdlt

 

Bonjour

On a plusieurs applis  qui fonctionnent comme ca en utilisant les DATAQ

un programme est en attente sur une dataq (pile de données ) et ne consomme rien .

Un autre ecrit dans cette dataq des donnees (soit une info qui dit qu'il y a un nouveau pointage) , soit le pointage lui meme...

Le premier se reveille , traite et se remets en attente ..

Tres  performant...et tres simple à mettre en oeuvre

Cdt

 

 

 

Merci à tous.

j'ai mis en place. pas de dataq, je suis sur un fichier classique. (nb : on m'a d'ailleurs précisé qu'il ne fallait pas de clef sur le fichier sinon ça ne fonctionne pas... ça m'etonne mais bon.)

ça fonctionne.

maintenant je veux que ce programme se lance tout seul à l'IPL... et là...

faut regarder les programmes à démarrage automatique...
dans un sous systeme . ADDAJE

mais pour cela il faut une jobd , une jobq et faire aussi un addrtge

je cherchais un tuto qui recapitule tout cela bien proprement avec un exemple ... mais AS400...

Cordialement

 

Il me semble que pour qu'un programme soit lançé à l'IPL, il faut l'inscrire dans le programmme QSTRUP (voir par exemple https://www.ibm.com/support/knowledgecenter/fr/ssw_ibm_i_73/rzal2/rzal2chgiplstartup.htm)

Bonjour,

L'usage d'un Trigger pourrait fonctionner si le pointage arrive dans un fichier AS400.

Cordialement,

Olivier.

Bonjour,

Je reviens sur la première question posée par Jimmy François.

J'ai une chaine qui utilise le paramètre EOFDLY de l'OVRDBF. L'attente d'enregistrement fonctionne impeccablement sauf quand le fichier est vide.

Une idée du problème ?

Merci

Bonjour

Fonctionnement normal car pour avoir une fin de lecture il faut qu'une lecture est abouti.

Donc si le fichier est vide pas de lecture préalable possible

Cdlt