> Tech > Codes opération remplacés par des BIF

Codes opération remplacés par des BIF

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

Dix-sept codes opération sont remplacés par des fonctions intégrées (BIF, built-in functions) (%Div effectue une division sur la portion entière et, par conséquent, ne remplace que partiellement Div). La figure 3 présente ces opérations et les BIF qui les remplacent. Voyons quelques exemples de comparaisons de RPG en format fixe

Codes opération remplacés par des BIF

avec sa contrepartie en format libre :

C                      Extrct
SomeDate:*M MM
MM = %SubDt(SomeDate: *Months);

L’intention des deux instructions
est claire, mais la version en format
libre est plus rapide et plus facile à  lire.
Les BIF ont par ailleurs d’autres avantages
: on peut utiliser des noms de variables
plus longs et on peut placer des
BIF dans des expressions. On pourrait,
par exemple, coder :

If %SubDt(SomeDate: *Months) = ReportMonth;
   ExSr ProcessData;
EndIf;

Ce code est parfaitement clair et
net.
Voyons un autre exemple BIF et la
transformation du RPG du format fixe
en format libre. Les exemples suivants
exécutent la sous-routine FoundString
quand la valeur de la variable
SomeSrch existe quelque part dans la
variable SomeString. Voici la solution
en format fixe :

C      SomeSrch Scan SomeString
C               If   %Found
C               ExSr FoundString
C               EndIf

Avec le format libre, on ne peut
plus utiliser %Found pour déterminer
si l’opération Scan a trouvé l’argument
de recherche. Au lieu de cela, la BIF
%Scan de remplacement renvoie la position,
indiquant si l’argument de recherche
a été trouvé (quand la position
renvoyée est zéro, l’argument de
recherche n’a pas été trouvé). Voici
une version en format libre qui suit de
près la version en format fixe :

   Position = %Scan(SomeSrch:SomeString);
If Position > 0;
ExSr FoundString;
EndIf;

Pour pousser encore plus loin la
transformation en format libre, j'utilise
la BIF dans une expression pour produire
le bloc de code succinct suivant :

   If %Scan(SomeSrch: SomeString) > 0;
ExSr FoundString;
EndIf;

Là  encore, on voit bien que la version
en format libre est courte, claire et
précise, et facile à  comprendre.
Alors que la plupart des codes opération
ont chacun une BIF unique qui
les remplace, deux codes opération
ont des BIF de remplacement multiples.
Le code opération Time accède
à  la date et l'heure du système et permet
de préciser s'il faut renvoyer la
date, l'heure, ou les deux. Avec le RPG
en format libre, on utilise les BIF
%Date, %Time et %Timestamp pour
renvoyer ces valeurs.

Le code opération LookUp permet
de rechercher un élément particulier
dans une table ou une matrice. Au
moyen des indicateurs résultants, on
peut déterminer quel élément relatif à 
l'argument de recherche il faut renvoyer.
Le RPG en format libre fournit
deux groupes de BIF, un pour les matrices
(arrays) (%LookUpLT,
%LookUpGT, par exemple) et un pour
les tables (%TLookUpLE,
%TLookUpGE, par exemple), pour
remplacer le code opération LookUp.
Comme les noms des BIF reflètent le
type de la recherche, on connaît rapidement
l'intention du code sans être
obligé de déterminer quelle colonne
contient les indicateurs résultants.
Pour en savoir plus sur %LookUp et sur
les autres nouvelles BIF de la V5R1,
voir « La V5 muscle le RPG IV ».
Les nouvelles BIF de remplacement
permettent d'écrire un code RPG
plus facile à  lire et à  comprendre, un
autre pas dans la bonne direction pour
le RPG. Pour plus d'informations sur
ces BIF et d'autres, voir WebSphere
Development Studio ILE RPG
Reference.

Téléchargez cette ressource

Guide inmac wstore pour l’équipement IT de l’entreprise

Guide inmac wstore pour l’équipement IT de l’entreprise

Découvrez toutes nos actualités à travers des interviews, avis d'experts et témoignages clients et ainsi, retrouvez les dernières tendances et solutions IT autour de nos 4 univers produits : Poste de travail, Affichage et collaboration, Impression et capture et Infrastructure.

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