> Tech > Intégrer le RPG avec Java

Intégrer le RPG avec Java

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

L'AS/400 Toolkit for Java inclut deux classes, ProgramCall et ProgramParameter, que l'on peut utiliser pour écrire du code Java qui s'intègre aux applications RPG. La documentation de l'AS/400 Toolkit for Java fournit des informations détaillées sur ces deux classes et des exemples très utiles pour démarrer l'intégration de la fonctionnalité

des programmes RPG avec Java. Nous fournissons un exemple de
classe Java, TestCla.java, qui est une variante des exemples du Toolkit.



Le programme de la figure 2, TestPgm.java, bénéficie de certains des éléments
fondamentaux de la fonctionnalité de la classe ProgramCall, c’est-à -dire les interfaces
listener associées à  la classe. Un listener (écouteur) est en action sur son propre
 » thread « ,  » à  l’écoute  » des événements qui se produisent à  l’intérieur et autour
de l’objet implémentant l’écouteur. Le plus souvent, les écouteurs surveillent
les clics sur une classe de boutons graphiques, les frappes dans une interface
de traitement de texte, ou virtuellement tout autre chose requérant une fonctionnalité
pilotée par événement en langage Java.



En TestCla.java, la classe ProgramCall est utilisée avec un écouteur, ActionCompletedListener
(en A), qui attend la fin du programme que la classe ProgramCall exécute sur l’AS/400
(PROMO.RPG dans notre exemple). Quand le programme est terminé, l’écouteur déclenche
l’événement ActionCompletedEvent et se met à  produire une liste de messages AS/400
renvoyés par le programme exécutant. Dans ce cas, notre exemple de programme RPG
n’est pas prévu pour renvoyer des messages, mais il en renverra presque inévitablement
quelques-uns si une erreur se produit pendant l’exécution du programme. Quoiqu’il
en soit, les messages renvoyés par un programme exécutant peuvent être renvoyés
en retour à  Java dans un tableau, via la méthode getMessageList. Ensuite, on peut
provoquer une itération systématique du tableau pour que les messages soient utilisés
par la classe appelante. Cette technique est un autre moyen utile d’échange d’informations
entre une application RPG et des classes Java, à  l’exécution.



La classe ProgramParameter fournit un moyen utile pour échanger des données entre
une application AS/400 RPG et la classe Java appelante. La classe ProgramParameter
offre une interface pour accéder aux paramètres de la ligne de commande que les
programmes RPG utilisent habituellement pour déplacer des informations vers et
à  partir de leurs structures de programmation. Les variantes d’objets ProgramParameter
instanciés que la classe ProgramCall peut utiliser, sont au nombre de trois :
celles qui envoient une valeur à  un programme, celles qui reçoivent une valeur
d’un programme, et celles qui peuvent faire les deux.



Pour traduire des objets Java en équivalents EBCDIC, il faut utiliser
des classes  » helper « 



L’information est transmise au programme RPG via la classe ProgramParameter par
l’intermédiaire d’un tableau d’octets (entre crochets ou [ ]) et est renvoyée
à  la classe ProgramParameter de la même manière. Soulignons qu’il s’agit ici d’octets
EBCDIC, le plus bas niveau de structures de données binaires comprises par l’AS/400.
Pour traduire des objets Java en équivalents EBCDIC, il faut utiliser des classes
 » helper « . TestCla.java utilise deux classes helper (en B), AS400Text et AS400Float4
qui font l’analyse syntaxique des données chaînes de caractères et des données
numériques en virgule flottante en leurs équivalents EBCDIC, en utilisant la méthode
toBytes(). L’AS/400 Toolkit for Java contient également des classes helper pour
analyser syntaxiquement des données avec des possibilités de virgule flottante
plus importante, des données en décimales condensées, des entiers signés et non
signés, et toute autre valeur de type de donnée pouvant nécessiter un  » coup de
pouce  » pour être convertie en données reconnaissables par l’AS/400. Pour plus
d’informations sur les classes helper et les autres classes d’accès au niveau
enregistrement, il est possible de consulter l’ouvrage Java and the AS400, par
Daniel Darnell, disponible auprès de NEWS/400 Books.



Les classes helper sont nécessaires pour déplacer des valeurs vers et à  partir
des classes ProgramParameter, et donc des applications AS/400 RPG également. Comme
mentionné précédemment, un objet ProgramParameter peut être instancié de trois
manières : lui envoyer des données, en recevoir ou les deux. Le type de ProgramParameter
que l’on instancie est déterminé par le constructeur. Quand on transmet au constructeur
un tableau d’octets EBCDIC, très probablement renvoyé par une classe helper, on
donne à  sa classe ProgramParameter une valeur à  envoyer à  l’application AS/400.
Quand on transmet à  son constructeur une valeur entière (type int), on lui indique
le nombre d’octets que l’on s’attend à  extraire de la classe ProgramParameter
(via la méthode getOutputData). Il est également mis à  disposition un constructeur
par lequel on peut transmettre à  la fois un tableau d’octets contenant une entrée
et une valeur entière pour définir la taille de la sortie, permettant ainsi à 
la classe ProgramParameter de traiter les deux. TestCla.java contient des exemples
des trois implémentations de ProgramParameter, représentées par la manipulation
des paramètres numéro de pièce (part number), description de pièce (part description)
et prix de pièce (part price), voir (C).



Toutes les classes ProgramParameter à  utiliser avec la classe ProgramCall sont
mises en oeuvre via un tableau. Soit ce tableau d’objets ProgramParameter est transmis
à  la classe ProgramCall par l’intermédiaire du constructeur ProgramCall, assemblé
par la méthode addParameter, soit la liste entière est incluse avec la méthode
setProgram, comme illustré dans TestPgm.java. L’exemple de programme montre également
comment les classes helper sont utilisées d’un côté obtenir des valeurs à  partir
des classes ProgramParameter et pour passer des valeurs aux, classes ProgramParameter.

Téléchargez cette ressource

Préparer l’entreprise aux technologies interconnectées

Préparer l’entreprise aux technologies interconnectées

Avec la « quatrième révolution industrielle », les environnements hyperconnectés entraînent de nouveaux risques en matière de sécurité. Découvrez, dans ce guide Kaspersky, comment faire face à cette nouvelle ère de vulnérabilité.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010