Les nouveaux calculs RPG en format libre ont éliminé virtuellement toutes les restrictions liées aux colonnes dans les versions Factor 2 traditionnelles et étendues de la carte C. La figure 1 montre un exemple de code en format libre. En le lisant, on s'aperçoit que malgré son format libre, c'est
Parce que je suis libre (/FREE)
![Parce que je suis libre (/FREE) Parce que je suis libre (/FREE)](https://www.itpro.fr/wp-content/uploads/2015/01/b1bc0d5fedbf21c27eef9a6278f03616.jpg)
encore du RPG IV, donc pas difficile à comprendre. Tout le coding en format libre apparaît dans un bloc situé entre une directive /FREE au début et une directive /END-FREE à la fin. A l’intérieur du bloc Free, on peut coder des spécifications en format libre en un point quelconque des colonnes 8 à 80 ; aucun identificateur de spécification n’est requis en colonne 6.
Tout le code qui existe à l’extérieur des blocs Free doit se conformer aux restrictions de colonnes standard. Quand le compilateur rencontre une directive /COPY dans un bloc Free, il revient implicitement au format fixe pour le code copié, puis reprend le mode en format libre après la copie. Si le membre /COPY inclut également du code en format libre, il doit placer le code dans son propre bloc Free avec ses propres directives.
On ne peut avoir qu’une instruction par ligne, mais une instruction peut s’étendre sur plusieurs lignes de code (bien que les littéraux numériques ne puissent pas se poursuivre sur de multiples lignes). Les instructions peuvent commencer n’importe où des colonnes 8 à 80n, et on peut décaler (mettre en retrait) les instructions pour bien montrer la structure du code. L’instruction en format libre finit toujours par un point-virgule. La nouvelle syntaxe accepte des commentaires dans la ligne en commençant par une double barre oblique n’importe où dans la ligne.
Généralement, une instruction commence par un code opération ; si ce n’est pas le cas, le compilateur évalue l’instruction comme si un code opération EVAL ou CALLP était présent. Si une instruction est constituée d’une expression d’assignation (avec opérateur = assignment), le compilateur suppose qu’il s’agit de EVAL (A en figure 1). Sinon, il suppose qu’il s’agit de CALLP (B en figure 1).
Notons également en B de la figure 1 que l’on peut désormais faire référence à des procédures qui n’ont aucun paramètre, en codant des parenthèses vides. En utilisant des parenthèses pour coder toutes les procédures, qu’elles aient ou non des paramètres associés, on peut facilement identifier les procédures dans le code et donner aux appels de procédures RPG la même apparence qu’aux appels de méthodes en Java ou C.
On peut inclure des extensions de code opération avec n’importe quel code opération, immédiatement après ce dernier, entre parenthèses. Un blanc au moins doit suivre le code opération (et l’extension éventuelle).
En général, la nouvelle syntaxe supportera les codes opérations RPG traditionnels, mais avec le Factor 1 suivant le code opération au lieu de le précéder :
Code opération Factor 1 Factor 2 Résultat
Il faut séparer chaque élément d’une instruction par au moins un blanc. La figure 2 résume la syntaxe en format libre de chaque code opération RPG IV. Seule la partie soulignée est obligatoire.
La syntaxe en format libre ne permet pas de définir les champs de travail dans des calculs et elle n’autorise pas non plus d’indicateurs résultants. Au lieu d’indicateurs résultants, on utilise des fonctions intégrées (%EOF, %EQUAL, %FOUND) pour consulter les résultats d’une opération. On utilise également les fonctions %ERROR et %STATUS conjointement à l’extension (E) pour détecter des conditions d’erreur. En cas d’erreur, certaines des autres fonctions risquent de n’être pas correctement définies, c’est pourquoi il faut vérifier la condition de %ERROR ou %STATUS avant d’utiliser %EOF, %EQUAL et %FOUND.
La figure 3, qui donne la liste des codes opérations non supportés par la syntaxe en format libre, raconte une toute autre histoire que la figure 2. De nombreux codes opérations anciens comme ADD, Z-ADD, MOVE et SETON, ont été retirés pour céder la place à des remplaçants en format libre, plus jeunes. La plupart des codes opérations enlevés étaient soit obsolètes, soit peu utilisés. Un bon style RPG passe par l’utilisation des structures de remplacement suggérées. Pour les rares cas qui exigent l’un des codes opérations en format fixe (aucune autre opération n’a la force d’un TESTB placé au bon endroit !), on peut bloquer le code entre des directives /END-FREE et /FREE.
Téléchargez cette ressource
![Guide inmac wstore pour l’équipement IT de l’entreprise](https://www.itpro.fr/wp-content/uploads/2024/04/Guide-inmac-wstore-Juillet-2024.jpg)
Guide inmac wstore pour l’équipement IT de l’entreprise
Découvrez les dernières tendances et solutions IT autour des univers de Poste de travail, Affichage et Collaboration, Impression et Infrastructure, et notre nouveau dossier thématique sur l’éco-conception et les bonnes pratiques à adopter pour réduire votre impact environnemental.