Concepts ILE
Qu'est-ce qu'un programme de service ?
Un programme de service est un programme ILE (RPGLE ou CLLE) qui encapsule une ou un ensemble de procédures de services exportées.
Exemple :
Un programme de services dédié aux contrôles métier pourrait encapsuler les procédures exportées suivantes :
- controleCodeSociete
- controleCodeClient
- controleCodePays

Ces procédures de services étant exportées, elles peuvent être appelées par d’autres programmes ILE et/ou exposées comme services web sur le serveur web de l’IBMi (iws/websphere).

Avantages des programmes de services
Modularisation du code
Les programmes de services participent à la modularisation du code.
En effet, les procédures exportées sont généralement :
- liées à une et une seule fonctionnalité.
- de petites tailles pour faciliter la maintenance.
Optimisation des performances
Par opposition aux programmes OPM (RPG/CLP) qui sont chargés en mémoire à chaque appel puis déchargés de la mémoire lorsqu’ils se terminent, les programmes ILE sont gérés par des groupes d’activation.
Exemples :
- Un programme ILE avec un groupe d’activation à *NEW créera un nouveau groupe d’activation à chaque appel.
- Un programme ILE avec un groupe d’activation à *CALLER restera dans le groupe d’activation du programme l’ayant appelé.
Si un programme OPM (RPG) lit 500 lignes d’une tables et qu’à chaque ligne lue il appelle un programme.
- Le programme appelé sera chargé 500 fois en mémoire
- Le programme appelé sera déchargé 500 fois de la mémoire
Si un programme ILE avec un groupe d’activation à *NEW lit ces mêmes 500 lignes et appelle une procédure exportée d’un programme de services ILE avec un groupe d’activation à *CALLER
- La procédure exportée sera chargée une seule fois en mémoire
- La procédure exportée sera déchargée une seule fois de la mémoire
Diminution des temps de développements
Puisque les procédures exportées par les programmes de service peuvent être réutilisées, ces fonctionnalités ne sont plus à développer.
Les développeurs n’ont plus à développer la fonctionnalité dont ils ont besoin mais juste à appeler la procédure exportée qui couvre cette fonctionnalité.
Notions relatives aux programmes de services
Le programme de services
Un programme de service :
- Est un objet programme de type *SRVPGM (ILESRVPGM)
- Se compile par la commande :
- CRTBNDxxx (CRTBNDRPG, CRTBNDCL) si le programme ne contient qu’un seul module
- CRTPGM ou CRTSRVPGM si le programme contient plusieurs modules
- Ne peut pas être appelé directement. Ce sont les procédures exportées qui sont appelées par les différents traitements.
- Est composé d’un ou plusieurs modules.
Porte une signature (ID de version semblable au LEVEL ID et déporté dans les programmes utilisant une des procédures exportées du programme de service).
Les modules de services
Les modules de services :
- Ce sont ces modules qui portent le code source ILE (RPGLE, CLLE) des procédures exportées.
Et donc les objets modules qui encapsulent les procédures exportées.
Les modules de type CLLE ne peuvent contenir qu’une seule procédure alors que les modules de type RPGLE peuvent en contenir une ou plusieurs.
- Les modules doivent être liés à un programme ou à un programme de service pour pouvoir être appelés.
- Se compilent par la commande CRTRPGMOD ou CRTCLMOD
Les prototype d'appel des procédures de services exportées
Afin de pouvoir appeler une procédure de service, le programme appelant doit inclure dans son code source la déclaration de la procédure à appeler (nom et paramètres en entrée/sortie).
Si une procédure exportée est appelée par n programmes différents, la déclaration de cette procédure devra être reportée dans chacun de ces n programmes.
Pour éviter la saisie manuelle de ces déclarations, ces déclarations sont faites dans des fichiers sources appelés prototypes qui seront inclus par /INCLUDE ou /COPY dans les programmes appelants.
Les BND
Les BND sont des sources sans objets permettant de simplifier la gestion des signatures des programmes de services.
Ils contiennent :
- La signature du programme de service
- La liste des procédures exportées par le programme de service
Exemple :
STRPGMEXP PGMLVL(*CURRENT) LVLCHK(*YES) SIGNATURE(‘SIGNATURE_V01’)
EXPORT SYMBOL(‘controleCodeSociete’)
EXPORT SYMBOL(‘controleCodeClient’)
EXPORT SYMBOL(‘controleCodePays’)
ENDPGMEXP
Le BND est à déclarer dans les paramètres de la commande CRTSRVPGM.

Le lien entre le programme de service et les modules qui le compose sont portés par le programme de service *ILESRVPGM.