"The AS/400 Programmer's Handbook" (Volume 2), chapitre 4, Application Programming Interfaces, montre un exemple d’un programme RPG ILE qui emploie l’API Retrieving Job Status.
J’utilise cette technique pour connaître l’état d’un job simultané chargé de traiter des commandes.
Notre procédure prévoit d’arrêter ce job deux fois par jour. Pendant ce temps, les commandes ne peuvent pas être traitées, au grand dam des utilisateurs qui ne savent pas si le système est en panne ou si la commande est en suspens.
Pour pallier cet inconvénient,
j’ai ajouté une touche de
commande sur l’écran d’interrogation
des ventes, permettant aux utilisateurs
de connaître l’état d’un job simultané.
Pour appeler le programme API
QWCRJBST, il faut transmettre trois
paramètres : job name (nom du job),
user name (nom de l’utilisateur), et
job number (numéro du job). Notre
job simultané (job name =’SO100′)
est maintenu par un opérateur (user
name =’DANM’), donc nous connaissons
les deux premiers paramètres
d’entrée. Pour obtenir le troisième,
job number, j’ai écrit le programme CL
CHKCONC1 (figure 1), que le programme
de l’écran d’interrogation appelle.
Ce simple programme CL extrait
le numéro de job courant, appelle le
programme RPG ILE CHKCONC2
dans la figure 2 (qui est une version modifiée de API003R provenant de
The AS/400 Programmer’s Handbook),
puis transmet cette valeur dans
&JOBN. Le quatrième paramètre,
&PARM, est nécessaire en tant que flag.
Quand l’état du job sera *ACTIVE, le
programme mettra RtnFlg à ‘Y’ (pour
Oui) et renverra cette valeur pour
&PARM dans le programme CL CHKCONC1
et pour un paramètre dans le
programme de l’écran d’interrogation.
Un message correspondant apparaîtra
d’après cette valeur. Une valeur ‘Y’ renvoyée
affiche le message « Order processing
job is active » (Le job de traitement
des commandes est actif) ; sinon,
le message présenté est « Order processing
job is currently inactive » (Le job de
traitement des commandes est actuellement
inactif).
Ensuite, le programme CHKCONC2
appelle l’API QWCRJBST dans
la boucle et passe un numéro de job
différent pour chaque boucle parce
que nous ne connaissons pas la valeur
du job ou de l’état qui est extrait. QWCRJBST
quitte la boucle soit quand le
champ JobStatus est égal à *ACTIVE,
soit quand il atteint la valeur maximale
de l’index de boucle. La valeur initiale
de JobNum# est égale à la valeur passée
par le programme CL CHKCONC1
plus quelques constantes (dans ce cas,
2.500) puisque nous ne savons pas
quel job – écran d’interrogation ou simultané
– a démarré le premier. Le
prochain appel adressé au programme
API passe le numéro de job réduit de
un.
Téléchargez cette ressource
Livre blanc Sécurité et Stockage des documents
Découvrez dans ce livre blanc Kyocera les outils logiciels qui permettent une approche holistique et efficace de la collecte, du stockage, de la gestion et de la sécurisation des documents en entreprise.