progamme "en attente d'enregistrements"
Citation de Jimmy François le 21 janvier 2020, 9 h 46 minBonjour,
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,
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
Citation de monthi le 21 janvier 2020, 16 h 21 minBonjour
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
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
Citation de ctalhouet le 22 janvier 2020, 8 h 19 minBonjour
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
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
Citation de Jimmy François le 30 janvier 2020, 15 h 21 minMerci à 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 . ADDAJEmais 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
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
Citation de remit le 31 janvier 2020, 11 h 56 minIl 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)
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)
Citation de Olivier Drubigny le 4 juin 2020, 14 h 16 minBonjour,
L'usage d'un Trigger pourrait fonctionner si le pointage arrive dans un fichier AS400.
Cordialement,
Olivier.
Bonjour,
L'usage d'un Trigger pourrait fonctionner si le pointage arrive dans un fichier AS400.
Cordialement,
Olivier.
Citation de SERV400 le 25 juin 2020, 9 h 20 minBonjour,
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,
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
Citation de monthi le 25 juin 2020, 16 h 12 minBonjour
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
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