Deux simples programmes RPG ILE montrent en quoi le fait d’appeler des API en utilisant PLIST ou des prototypes est différent
L’analyste programmeur freelance que je suis, a rencontré de nombreux programmeurs aux compétences et à l’expérience très diverses. A leur contact, j’ai constaté que beaucoup d’entre eux non seulement ne savent pas bien ce que les API peuvent faire, mais ont peur de programmer avec ...Cet article a donc pour objet de vaincre cette réticence, en montrant combien il est facile d’utiliser les API.
Nous examinerons deux versions d’un programme RPG ILE simple qui appelle une API, pour voir en quoi les deux programmes diffèrent. Le premier programme appelle une API avec une PLIST et le second appelle une API au moyen d’appels prototypés. Dans la 2e partie de cet article, nous construirons un programme utilitaire qui compare le tampon horodateur source des objets programme avec celui du fichier source, et signale les éventuelles différences.
Travailler avec des API, première partie
La figure 1 présente un programme de
style traditionnel avec un appel programme
qui utilise une PLIST. Cet
exemple emploie une API pour extraire
une description d’objet : ici, une bibliothèque.
Le programme est appelé
de la ligne de commande et se voit
transmettre le nom de la bibliothèque
comme un paramètre. Si la bibliothèque
existe, le programme revient
normalement ; si elle n’existe pas,
le programme fait un dump avant
d’échouer
Vous pouvez aussi cheminer dans
ce programme en utilisant la commande
STRDBG (Start Debug) qui permet
de voir les variables changer.
Examinons maintenant ce programme
plus en détail.
Le membre copy en A est un fichier
« system include » d’une structure de
données utilisé pour contrôler les erreurs.
Si votre système ne possède pas
de fichiers system include, vous pouvez
les charger à partir des CD d’installation
(nous reviendrons sur le traitement
des erreurs un peu plus loin).
En B se trouve un autre membre
copy qui a la structure de données à laquelle
l’API renvoie les données. En
fait, dans le membre copy, il y a plus
d’une structure de données définie,
chacune montrant davantage de données
que la première. Le but est de
permettre de renvoyer des données
différentes à des coûts différents (overhead
de traitement). On choisit la
structure de données voulue quand on
appelle l’API. (Pour une liste des API et
de leurs fonctions, visitez l’Info Center
d’IBM à http://publib.boulder.ibm.com/iseries/v5r2/is2924/info/apis/api.
htm.)
L’API utilise les champs de travail
en C. La « *ENTRY PLIST (en D) transmet
le nom de la bibliothèque au programme.
La sous-routine *INZSR en E
initialise la structure d’erreur afin
qu’un simple RESET restaure les valeurs.
Comme ce programme est la fondation
sur laquelle nous construisons
le reste de l’utilitaire (que la 2e partie
couvrira), nous plaçons l’appel d’API
dans la sous-routine INIT en F (la raison
pour agir ainsi s’éclairera à l’examen
de la figure 2). Donc, dans la sousroutine
INIT, nous allons
- redéfinir la structure de données
d’erreur pour l’appel d’API - définir la longueur conformément à
la structure de données qui contiendra
les données renvoyées ; la longueur
peut être plus courte que la
structure, pourvu que la longueur
couvre les champs de la structure
que nous voulons utiliser (si nous
spécifions une longueur supérieure,
l’API risque de dépasser la longueur
réelle de la structure de données et
de corrompre la zone de stockage où
le programme range ses variables) - dire à l’API quel format de données
nous aimerions voir renvoyé (dans
ce cas, nous choisissons le premier
format ‘OBJD0100’). - spécifier le nom et la bibliothèque de
l’objet sous la forme d’un champ de
20 octets ; c’est courant dans les API
et les données doivent être espacées
en 10 + 10 sans séparateurs - spécifier le type d’objet
Nous appelons ensuite l’API et lui
passons notre structure de données
choisie, les champs que nous avons
préparés et la structure d’erreur API.
Après l’appel, nous testons la structure
d’erreur pour rechercher les erreurs.
S’il y en a, nous faisons échouer le programme
en appelant *PSSR.
Si nous examinions un dump qui a
été produit en appelant le programme
avec une bibliothèque incorrecte (ou
un nom de bibliothèque pas entièrement
en majuscules), nous verrions
que la structure de données que nous
avons entrée dans l’API – QUSD0100 –
est inchangée (elle est restée vierge).
L’API a défini 26 comme octets disponibles,
mais les octets fournis restent à
16 – la différence étant de 10 octets,
servant à contenir les données de substitution
pour le message d’erreur
(CPF9810) (il contient le nom de la bibliothèque
incorrecte que nous avons
demandée) si la structure de données
est suffisamment longue.
Téléchargez cette ressource
Sécuriser Microsoft 365 avec une approche Zero-Trust
Découvrez comment renforcer la cyber-résilience de Microsoft 365 grâce à une approche Zero-Trust, une administration granulaire et une automatisation avancée. La technologie Virtual Tenant de CoreView permet de sécuriser et simplifier la gestion des environnements complexes, tout en complétant vos stratégies IAM, y compris dans les secteurs réglementés.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Gestion des vulnérabilités : pourquoi seulement 7,6 % des entreprises corrigent les failles critiques en moins de 24 heures
- SMS et e-mails : la notification, un enjeu économique stratégique
- Forum INCYBER : le cybercrime change d’échelle, l’Europe cherche sa riposte
- IA : ne déléguez pas votre cœur de métier à une boîte noire
Articles les + lus
Communes, entreprises ? Non, face au RGAA 5, l’IA seule ne rendra pas vos sites accessibles
DevX Summit EMEA : les développeurs au cœur de la révolution de l’IA
Adapter la sécurité OT aux réalités de l’industrie
Coder vite, mais coder juste : trouver l’équilibre à l’ère de l’IA
Mixité dans la Tech : en 2026, un choix de souveraineté stratégique
À la une de la chaîne Tech
- Communes, entreprises ? Non, face au RGAA 5, l’IA seule ne rendra pas vos sites accessibles
- DevX Summit EMEA : les développeurs au cœur de la révolution de l’IA
- Adapter la sécurité OT aux réalités de l’industrie
- Coder vite, mais coder juste : trouver l’équilibre à l’ère de l’IA
- Mixité dans la Tech : en 2026, un choix de souveraineté stratégique
