> Tech > Le côté iSeries d’une procédure cataloguée

Le côté iSeries d’une procédure cataloguée

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

Dans mon exemple, j'utilise une application Domino qui emploie ODBC pour appeler un programme CL qui est une procédure cataloguée. Le programme CL renvoie le nom du système à  l'application Domino, laquelle l'affiche dans une boîte de messages.

Pour commencer, créons un programme CL comme celui-ci :

PGM PARM(&SYSNAME)
DCL

Le côté iSeries d’une  procédure cataloguée

VAR(&SYSNAME) TYPE(*CHAR) LEN(8)
RTVNETA SYSNAME(&SYSNAME)
ENDPGM

On voit que ce programme utilise
la commande RTVNETA (Retrieve
Network Attributes) pour extraire le
nom du système, puis le retransmet au
programme appelant. J’ai appelé ce
programme RTVSYSNAM et l’ai compilé
dans ma bibliothèque personnelle,
HOOPES (HOOPES est aussi le nom de
mon système). L’étape suivante
consiste à  créer la procédure cataloguée
sur l’iSeries. Cela peut se faire de
deux manières au moins.

Ayant longtemps fréquenté des
écrans passifs, je suis plus à  l’aise avec
l’émulation 5250 qu’avec Operations
Navigator (OpsNav). Par la méthode
écran passif, exécutez la commande
STRSQL (Start SQL) à  partir d’une ligne de commande iSeries, pour afficher
un environnement dans lequel
vous pourrez exécuter des commandes
SQL. J’ai exécuté la commande
suivante pour créer la procédure SQL :

CREATE PROCEDURE QGPL/RTVSYSNAM(INOUT
SysName CHAR (8 ))
LANGUAGE CL NOT DETERMINISTIC CONTAINS SQL
EXTERNAL NAME HOOPES/RTVSYSNAM
PARAMETER STYLE GENERAL

Cette instruction crée une procédure
appelée RTVSYSNAM dans la bibliothèque
QGPL. La procédure a un
paramètre - SysName, qui est une
valeur de huit caractères - et peut
transmettre des valeurs entrantes et
sortantes. Le langage de la procédure
est CL, et le programme externe
HOOPES/RTVSYSNAM est appelé.
J'aurais pu utiliser d'autres langages,
comme SQL, Cobol, REXX, RPG, et
RPG ILE.

Si vous voulez utiliser OpsNav pour
créer la procédure, allez dans l'arborescence
hiérarchique OpsNav et sélectionnez simplement l'élément
Database sous une connexion iSeries
donnée. Puis sélectionnez File et appuyez
sur Run SQL Scripts pour obtenir
la boîte de dialogue de la figure 1.

C'est vous qui choisissez entre un
écran passif ou OpsNav, en sachant
qu'il n'y a pas de différences importantes
entre les deux. J'ai dû changer la
méthode de qualification des objets
dans OpsNav, mais tout le reste est demeuré
identique.

Nous voilà  prêts à  examiner l'application
Domino.

L'application Domino en utilisant
une procédure cataloguée :

Mon exemple d'application
Domino commence par un formulaire.
Au moyen de Domino Designer, j'ai
créé un bouton unique intitulé Click
Me! (figure 2). En cliquant dessus, on
appelle une procédure cataloguée sur
l'iSeries. J'ai également précisé dans le
champ Run que ce bouton doit être
codé en utilisant LotusScript.

Voici le code obtenu dans la
section Options de l'objet Globals :

Option Public
Uselsx "*LSXODBC"

La première ligne donne par défaut
le caractère public aux déclarations au
niveau module : normal quand on crée
une nouvelle application. La seconde
ligne met les classes LotusScript:
DataObjects (LS:DO) à  la disposition
du programme.

La figure 3 montre le code correspondant
à  l'événement clic du bouton
Click Me !. Je déclare d'abord toutes
mes variables dans le code puis j'ajoute
mon instruction de traitement d'erreurs
habituelle. Ensuite, je me
connecte à  une source de données
ODBC - domino400, dans ce cas. Il
vous faudra vérifier la configuration
ODBC de votre système et soit créer
un nom de source de données pour
vous connecter à  l'iSeries, soit en utiliser
un déjà  existant. Je me connecte également en transmettant un ID et
mot de passe utilisateur. Si j'avais omis
ces deux valeurs, elles m'auraient été
demandées.

Ensuite, j'associe un objet de requête
LS:DO (DbQuery) avec mon objet
de connexion (DbConnection) en
utilisant l'instruction Set. Je continue
en associant mon objet de jeu de résultats
LS:DO (DbResultSet) avec mon
objet de requête. A ce stade, j'ai créé
les associations nécessaires pour exécuter
la procédure cataloguée.

Pour exécuter une procédure
cataloguée, j'utilise la méthode
ExecProcedure de l'objet du jeu de résultats.
Je transmets le nom de ma procédure
cataloguée, RTVSYSNAM, et
une variable utilisée pour recevoir le
nom du système de la procédure
cataloguée, au driver ODBC.

Après consultation du code de renvoi,
j'affiche le nom du système dans
une boîte de message, illustrée
figure 4.

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